我如何从柠檬中获得生成的AST

  • 本文关键字:AST 柠檬 parsing lemon
  • 更新时间 :
  • 英文 :


如何从柠檬中获取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; }

相关内容

  • 没有找到相关文章

最新更新