Я написал конфигурацию JJTree (JavaCC) для типа DSL, и она успешно выполняет токенизацию заданного формата файла и сбрасывает AST по запросу.Как использовать JavaCC/JJTree для хранения токенов?
Проблема в том, что каждый из узлов в дереве пуст, так как я в настоящее время не храню токены (я не могу понять примеры).
Вот часть моего .jjt файла:
SimpleNode Start() #Root : {} {
(
(Section1())?
(Section2())?
(Section3())*
) {
return jjtThis;
}
}
void Section3() #Section3 : {}
{
<SECTION_3> Identifier() <LBRACE >
Header()
(Details() <SEMICOLON>)*
<RBRACE>
}
Я хотел бы корневой узел для хранения ссылок на section1, section2 и список ссылок на раздел3. Я хотел бы, чтобы узел Section3 сохранил идентификатор, блок заголовка и сохранил список блоков данных.
My fill .jjt file - это сотни строк, но я чувствую, что, если я могу понять это для этих двух разделов, тогда я могу понять, как работает JJTree. Пожалуйста, дайте мне знать, как правильно использовать JJTree.
Спасибо.
Спасибо за информацию. Если возможно, вы можете показать мне, как обрабатывать этот пример без определения пользовательских классов узлов (как добавить поля для сохранения пользовательских токенов в уже существующих типах узлов JJTree)? То есть - дайте пример метода, который вы объясняете в первом абзаце. – Chris 2010-11-23 17:38:12