Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.009 c
2-1249815308
Кодер123456
2009-08-09 14:55
2009.10.11
Сортировка в текстовом файле


15-1249989451
TUser
2009-08-11 15:17
2009.10.11
Экзопланеты и другие астрономические открытия


2-1249885197
ford
2009-08-10 10:19
2009.10.11
Поиск символов в RichEdit


2-1249655586
andi
2009-08-07 18:33
2009.10.11
сортировка


15-1249996943
Алекс Юстасу
2009-08-11 17:22
2009.10.11
Интересные ветки




   Наверх