如何获取开始规则的返回值

Tux*_*ing 3 yacc bison

如何$$使用 Yacc/Bison 获取语法的起始规则的“返回”值(变量)?

yyparse 返回解析器的错误代码。

ric*_*ici 8

最简单的解决方案是将值存储在 的附加参数中yyparse。通常,您会将此值存储在开始规则的操作中;有时用单元生产定义一个额外的开始非终端来保持动作是很有用的。

如果您使用的是 bison,您可以使用%parse-param指令来定义额外的参数,然后您只需要yyparse使用应该存储结果的变量的地址来调用。

您仍然需要检查来自yyparse;的返回值。如果它不表示成功,则通过 out 参数返回的值将不正确。