Получив поток токенов, вы можете преобразовать его в дерево разбора, используя генератор синтаксических анализаторов и указав грамматику вашего языка.
В зависимости от того, какой язык программирования вы используетея хотел бы использовать следующие генераторы синтаксических анализаторов:
C / C ++ - Yacc
Java - ANTLR (такжеJavaCC, SableCC)
Python - PLY (Python Lex / Yacc)
OCaml - ocamlyacc
Если вы неЧтобы знать о грамматиках, документации для выбранного вами генератора синтаксических анализаторов должно быть достаточно для начала работы.
Когда ваш синтаксический анализатор будет готов, он возьмет поток токенов и создаст дерево, используя промежуточное представление - типычто вы определяете для представления различных частей вашего языка (например, текст и специальные идентификаторы, которые вы упомянули).Затем вы можете манипулировать деревом так, как вам нравится.
Редактировать : в ответ на ваш комментарий - я не совсем уверен, какой уровень ответа дать вам, поскольку я не могу сказать,точно какая проблема у вас возникла.Во-первых, знакомы ли вы с древовидными структурами данных ?Если да, знаете ли вы, как написать простой рекурсивный алгоритм для определения высоты дерева или выполнить поиск в глубину?Помните, что дерево - это просто способ упорядочить информацию - от вас зависит, что вы будете делать с этой информацией.
Общий шаблон проектирования для применения алгоритма к разнородному дереву (то есть к дереву, узлы которогоразличных типов) Шаблон посетителя .Если вы уже знакомы с деревьями, вы можете посмотреть пример шаблона посетителя на своем любимом языке;однако, если концепция для вас нова, я настоятельно рекомендую начать с более простых алгоритмов для практики.