Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.11;
Скачать: CL | DM;

Вниз

Ткните носом в БНФ грамматику языка Pascal.   Найти похожие ветки 

 
pasha_golub ©   (2009-08-05 16:34) [40]


> Игорь Шевченко ©   (05.08.09 16:32) [39]


> ообще-то это эквивалентные выражения, если что. Код-то должен
> одинаковый генерироваться

Код - да. Дерево разбора разное.


 
Игорь Шевченко ©   (2009-08-05 16:42) [41]

pasha_golub ©   (05.08.09 16:34) [40]


> Дерево разбора разное.


<exrp> ::= "(" <expr> ")"

вроде как нетерминал один и тот же ?


 
pasha_golub ©   (2009-08-05 16:50) [42]

Да, я это и имел ввиду.

То есть надо будет бежать по дереву и сравнивать (по двум даже). А это уже нетривиально, однако.

Примеров множество, это и использование операторов вместе с нейтральными операндами по отношению к оным (some + 0, some * 1), это и использование излишней информации (SELECT somefield AS somename vs SELECT somefield), и использование пустых операторов и прочее.


 
Игорь Шевченко ©   (2009-08-05 17:02) [43]

pasha_golub ©   (05.08.09 16:50) [42]

Я в свое время (лет 12 назад) делал SQL-движок, натурально с парсером и с механизмом выполнения. Насколько я помню, такого рода выражения

> (some + 0, some * 1)


минимизировались после проверки типов (глупо строковое поле умножать на 1), а скобки убирались на этапе разбора.

В итоге механизму выполнения поступало уже минимизированное дерево.

Собстна от разборщика паскаля хотелось бы такого же (можно без контроля типов - для этого компилятор имеется), но и приведением выражений в скобках в эквивалентную бесскобочную форму.


 
Inovet ©   (2009-08-05 17:22) [44]

> [42] pasha_golub ©   (05.08.09 16:50)
> То есть надо будет бежать по дереву и сравнивать (по двум
> даже). А это уже нетривиально, однако.
>
> Примеров множество, это и использование операторов вместе
> с нейтральными операндами по отношению к оным (some + 0,
> some * 1), это и использование излишней информации (SELECT
> somefield AS somename vs SELECT somefield), и использование
> пустых операторов и прочее.

Вначале привести оба к одному виду: раскрыть скобки привести подобные, оптимизировать *0, *1, +0, и т.п.. Это что выражений касается, тоже видимо и с кострукциями.


 
pasha_golub ©   (2009-08-06 11:38) [45]


> Игорь Шевченко ©   (05.08.09 17:02) [43]


> Собстна от разборщика паскаля хотелось бы такого же

Да, конечно. Если это специализированный разборщик, то сам Бг велел. А у меня просто разборщик, строящий дерево.



Страницы: 1 2 вся ветка

Текущий архив: 2009.10.11;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.018 c
2-1249976482
N-Tek
2009-08-11 11:41
2009.10.11
Вопрос по ListView


15-1249457425
@!!ex
2009-08-05 11:30
2009.10.11
Напишите прокси за денежку.


1-1219300423
Чих-Пых
2008-08-21 10:33
2009.10.11
Вывод на печать каталога


15-1249934148
syteser78
2009-08-10 23:55
2009.10.11
У кого нибуть из вас воровали почтовый ящик?


15-1250029803
Юрий
2009-08-12 02:30
2009.10.11
С днем рождения ! 12 августа 2009 среда