Форум: "Прочее";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
ВнизТкните носом в БНФ грамматику языка 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
vsSELECT 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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.006 c