如何从柠檬中获取AST(抽象语法树(的根节点?我尝试使用%extra_argument { Node *rootNode }
并使用以下代码返回根节点对象。
program ::= statements(A). { rootNode = A; }
但root节点主解析功能中的根节点保持空。
这是主要解析功能。
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;
}
有人可以帮忙吗?预先感谢。
rootNode
是一个指针。您正在更新本地变量rootNode
。复制时尝试将其删除:
program ::= statements(A). { *rootNode = *A; }