Как мне получить корневой узел AST (абстрактного синтаксического дерева) из lemon ? Я попытался использовать %extra_argument { Node *rootNode }
и использовать следующий код для возврата объекта корневого узла.
program ::= statements(A). { rootNode = A; }
Но корневой узел, корневой узел в основной функции синтаксического анализа остается пустым.
Вот основная функция разбора.
Node parse()
{
void* parser = ParseAlloc(malloc);
int token;
Node astRoot;
while (token = yylex())
{
Parse(parser, token, yytext, &astRoot);
}
Parse(parser, 0, NULL, &astRoot);
ParseFree(parser, free);
return astRoot;
}
Кто-нибудь может помочь? Заранее спасибо.