Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++] Генерация асд во время парсинга.

31K
19 июня 2010 года
rudvil
23 / / 18.05.2008
Перехожу из этой темы Алгоритм генерации асд из постфиксно-подобной записи сюда, т.к. сам ничего внятного придумать не смог.
К посту прилагаются исходники лексера, грамматики(генерация дерева из EBNF) и парсера, также присутствует файл грамматики(в виде EBNF), кода(надо ведь парсить что-нибудь =]) и файл "grammarTree.txt" в котором можно посмотреть как будет выглядеть грамматическое дерево после анализа EBNF грамматики.

Конечно там некоторые места не оптимизированы, но на данный момент это не критично т.к. все работает, а это главное!.
Комментарии присутствуют почти-что везде, надеюсь проблем с понятием как и почему это все работает не должно быть.

Собственно прошу помощи реализовать(расширить функциональность персера?) генерацию абстрактного синтаксического дерева(из опКодов) во время парсинга, не после - как я пытался изначально, а именно во время парсинга.
Заранее большое спасибо.
1.8K
19 июня 2010 года
LM(AL/M)
332 / / 20.12.2005
дизайн твоего кода оставляет желать лучшего поэтому проще будет генерировать АСД из постфиксной записи, как об этом говорилось в Алгоритм генерации асд из постфиксно-подобной записи, чем рефакторить чтобы оно генерилось прямо в парсере
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями
31K
28 июня 2010 года
rudvil
23 / / 18.05.2008
Цитата: LM(AL/M)
дизайн твоего кода оставляет желать лучшего поэтому проще будет генерировать АСД из постфиксной записи, как об этом говорилось в Алгоритм генерации асд из постфиксно-подобной записи, чем рефакторить чтобы оно генерилось прямо в парсере
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями



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

За время моего отсутствия мне все-же удалось реализовать генерацию асд во время парсинга, правда пришлось сделать ограничение на грамматику, а именно - имена опкодов в [скобках] могут быть только у переменных(т.е. это "'some terminal'[terminalOpCode]" и это "(a b c)[groupedOpCode]" пришлось запретить).

1.8K
30 июня 2010 года
LM(AL/M)
332 / / 20.12.2005
ну что ж, я поздравляю тебя с успешным залатыванием своего кода)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог