parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Сумбурно потому что не очень понятно куда копать :((. Давайте на примерах разбираться.

sergei v.2 08.11.2010 23:16 / 08.11.2010 23:18

http://all4bug.mcn.ru/bug2.html
/auto.p
########################################
@auto[]

#$connect_string[mysql://user:wwwwwwww@localhost:3306/dbbbbbbb?charset=cp1251]
$sTemp[^env:SERVER_NAME.lower[]]
^if(^sTemp.right(14) eq "www.ssssite.ru"){
	$connect_string[mysql://YYYYYYYYYY:XXXXXXXXXXXX@hhhhhhhhh:3306/dbbbbbbbb?charset=cp1251]
}{
	$connect_string[mysql://YYYYYYYYYY:XXXXXXXXXXX@sssssss.ru:3306/dbbbbbbb?charset=cp1251]
}


$siteUrl[http://$env:SERVER_NAME^if(def $env:SERVER_PORT && $env:SERVER_PORT ne 80){:$env:SERVER_PORT}] 
$siteMail1[managers@mmm.ru]
$companyName[MMM] 
$alt_MMM[MMM: Internet Service Provider. ISP. ADSL. Hosting. Colocation. IP-телефония]

$guestPWD[1]

$hLOGISTICS[
	$.1[
		$.name[Самовывоз]
		$.caption[Самовывоз]
	]
	$.2[
		$.name[ДоставкаКурьером]
		$.caption[Доставка курьером]
	]
	$.3[
		$.name[ДоставкаАвто]
		$.caption[Доставка авто]
	]
	$.4[
		$.name[ДоставкаТК]
		$.caption[Доставка ТК]
	]
]

@main[]
sdfdfdf
/bug2.html
@x2[]
aaaa
получаем оишбку на ровном месте:

hLOGISTICS
$.name outside of $name[...]
если удалить строчку

$alt_MMM[MMM: Internet Service Provider. ISP. ADSL. Hosting. Colocation. IP-телефония]
то ошибка изчезает. Аналогично лечится если удалить несколько элементов в хеше.
Я возможно не так выразился относительно Dos (пусть будет Windows - я имел виду текст, где энтер двухбайтный 0D0A).

парсерный auto.p
@auto[]
#source/client charsets
$request:charset[windows-1251]
$response:charset[windows-1251]

$response:content-type[
	$.value[text/html]
	$.charset[$response:charset]
]
Эта проблема проявляется по-разному:
Например, "WHERE
x=1^;" превращается в "WHERE; x=1;" (энтер поменялся на точку с запятой - Sql запрос выпал в ошибку)
либо в одном классе один метод вызывается, а в следующей строчке дрeгой метод типа не найден, потому что его имя парсер не смог найти (распарсить) в парсерном коде (простите за тофтологию).
Как-то так.