Re[7]: Транслятор на ANTLR. Идеологические проблемы
От: System Goose Россия  
Дата: 21.10.05 09:18
Оценка:
Здравствуйте, Graf Alex, Вы писали:
.
GA>Помоему нужно быть диким извращенцем, что бы писать на входном языке так, что получаются такие деревья
GA>Насколько я понял это пример уже модифицированого дерева, а в оригинале было чтото попроще?
Дерево конечно обычно перетрясенное порядком, но, если мы собираемся генерировать машинный код,
там таких фрагментов как раз куча --- они вылезают из доступа к массивам.

GA>Вот только никак не могу понять одного: почему если во входном языке идет объявление существующей переменной или переменной необъявленого типа, то ее все равно пихают в дерево?


Потому, что проще вынести в отдельный проход всю семантику. Когда я пишу разбор умеренно сложного языка,
типа Java, то в действих парсера у меня обычно построение вершин дерева. Тогда получается один,
все равно довольно увесистый, файл с грамматикой. А вот семантические действия обычно довольно сложные,
и они разнесены по отдельным файлам (или пакетам, если на Java пишем). Хотя бы отдельно пойдут
объявления, выражения и операторы.

GA>Я имею в виду языки которые можно проверять одним проходом (аля С)

С тех пор, как мы можем себе позволить держать дерево для программы в
памяти, большого смысла делать все за один проход уже нет. Тут выступают
вперед соображения удобочитаемости и модульности кода.

Но, у Вас видимо достаточно простой язык описания данных, и там вся семантика
может быть довольно изящно записана во врема синтаксического анализа.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.