[C++] Генерация асд во время парсинга.
Алгоритм генерации асд из постфиксно-подобной записи сюда, т.к. сам ничего внятного придумать не смог.
К посту прилагаются исходники лексера, грамматики(генерация дерева из EBNF) и парсера, также присутствует файл грамматики(в виде EBNF), кода(надо ведь парсить что-нибудь =]) и файл "grammarTree.txt" в котором можно посмотреть как будет выглядеть грамматическое дерево после анализа EBNF грамматики.
Конечно там некоторые места не оптимизированы, но на данный момент это не критично т.к. все работает, а это главное!.
Комментарии присутствуют почти-что везде, надеюсь проблем с понятием как и почему это все работает не должно быть.
Собственно прошу помощи реализовать(расширить функциональность персера?) генерацию абстрактного синтаксического дерева(из опКодов) во время парсинга, не после - как я пытался изначально, а именно во время парсинга.
Заранее большое спасибо.
Перехожу из этой темы
К посту прилагаются исходники лексера, грамматики(генерация дерева из EBNF) и парсера, также присутствует файл грамматики(в виде EBNF), кода(надо ведь парсить что-нибудь =]) и файл "grammarTree.txt" в котором можно посмотреть как будет выглядеть грамматическое дерево после анализа EBNF грамматики.
Конечно там некоторые места не оптимизированы, но на данный момент это не критично т.к. все работает, а это главное!.
Комментарии присутствуют почти-что везде, надеюсь проблем с понятием как и почему это все работает не должно быть.
Собственно прошу помощи реализовать(расширить функциональность персера?) генерацию абстрактного синтаксического дерева(из опКодов) во время парсинга, не после - как я пытался изначально, а именно во время парсинга.
Заранее большое спасибо.
Алгоритм генерации асд из постфиксно-подобной записи, чем рефакторить чтобы оно генерилось прямо в парсере
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями
дизайн твоего кода оставляет желать лучшего поэтому проще будет генерировать АСД из постфиксной записи, как об этом говорилось в
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями
Цитата: LM(AL/M)
дизайн твоего кода оставляет желать лучшего поэтому проще будет генерировать АСД из постфиксной записи, как об этом говорилось в Алгоритм генерации асд из постфиксно-подобной записи, чем рефакторить чтобы оно генерилось прямо в парсере
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями
лучше сначала добиться успешного результата наипростейшим путём а уж затем заниматься усовершенствованиями
Извиняюсь что так долго не писал, не было возможности.
Да, код не очень хороший... но как есть так есть, со временем исправлюсь.
За время моего отсутствия мне все-же удалось реализовать генерацию асд во время парсинга, правда пришлось сделать ограничение на грамматику, а именно - имена опкодов в [скобках] могут быть только у переменных(т.е. это "'some terminal'[terminalOpCode]" и это "(a b c)[groupedOpCode]" пришлось запретить).
ну что ж, я поздравляю тебя с успешным залатыванием своего кода)