Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.006 c
4-1211897790
Dmitry S
2008-05-27 18:16
2009.10.11
Как сделать чтобы окно было видно всегда?


15-1249797725
TUser
2009-08-09 10:02
2009.10.11
10 лет времен Владимира Путина


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


15-1249972832
Kolan
2009-08-11 10:40
2009.10.11
Жесты в Делфи 2010


2-1249455497
niel
2009-08-05 10:58
2009.10.11
CharPrev





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский