Главная страница
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.55 MB
Время: 0.017 c
15-1249737117
alex649
2009-08-08 17:11
2009.10.11
алгоритм кластеризации ISODATA


1-1219238994
Квэнди
2008-08-20 17:29
2009.10.11
Организация взаимодействия классов


1-1219124183
checkmate-maker
2008-08-19 09:36
2009.10.11
Редактор с картинками


15-1249211618
KilkennyCat
2009-08-02 15:13
2009.10.11
Рекомендую москвичам покинуть Москву на весь день 4-го числа.


15-1250074642
student_delphi
2009-08-12 14:57
2009.10.11
Стандарт SQL для СУБД Access 2003