如何从YACC获得AST?

mtk*_*358 6 c c++ parsing yacc bison

我知道如何让YACC生成一个AST,但是你如何才能获得它?我的意思是,你如何从YACC获得根节点的价值?

Dig*_*oss 6

Yacc一次只能让你返回一个节点,而且它总是在某个时候提供yacc,也就是说,无论你想从减少的生产中返回什么,或者你想从终端符号返回什么.(对不起,你说你知道这一点,但有些人读这篇文章可能不会.)

所以,根据你从root或top规则返回的内容,并以你喜欢的方式保存它(在附加的C缩减代码中).

  • 我究竟如何接受最高规则返回的内容?这就是我的整个问题! (2认同)
  • 嗯,这不是线程安全的。你能想出一个线程安全的解决方案吗?PS:我在 bison 中使用了推送纯解析器。 (2认同)