【发布时间】:2021-06-17 15:07:33
【问题描述】:
我正在尝试在 C++ Bison 中获取令牌的名称:
例如。 %token <int> TPLUS "+" TMINUS "-" TMUL "*" TDIV "/"
但是在 Bison 的 C++ 变体中,%token-table 不执行任何操作。
我注意到生成的野牛代码中有一个令牌映射: const char* const parser::yytname_[]; 但它是私有的。
有人知道如何在 C++ Bison 中获取这些标记的名称吗?这甚至可以使用 C++ 变体吗?
我知道有人问过这个问题here,但没有接受的答案。
使用版本 3.4.3
【问题讨论】:
-
我的野牛手册没有提到 %token-table 的任何 C++ 限制。如果您确定它没有做任何事情,那么可能值得向项目询问限制是什么,以及您应该如何使用它。从文档中,我希望它产生与 C 下相同的全局数组。
-
symbol_name没有给你你需要的东西吗? -
@rici 已更新。谢谢
-
@rici 生成的代码中没有 symbol_name 函数
-
@Tom:我认为您需要一个最新版本的 Bison,最好是与该文档 (3.7.6) 对应的版本。我不记得这个界面是什么时候添加的,但不久前。