在 flex 中引用定义名称

Referencing a definition name in flex

flex 中是否有一种方法可以在匹配模式的动作部分引用定义名称,类似于您引用模式本身的方式?我想要类似于

的东西
%{
#include<stdio.h> 
}%

DIGIT [0-9]

%%

{DIGIT} printf("%s is a %s", yytext, yydefinition)

%%

int main(){

yylex(); return 0; 
}

我可以想象,当您在一个规则中有多个定义时,例如 {DIGIT} | {STRING}

,可能会出现问题

否:lex(和flex)将命名模式的内容编译到表中而不提供在词法分析器中引用它们名称的方法。

状态(又名开始条件)没有太多帮助。 lex/flex 只需为这些名称生成 #define 语句。

flex 有一个 debug 开关,但是为此生成的表仍然不包含您想要的信息。

另一方面,

yaccbison 具有可用于帮助处理错误消息的表格。 cproto 程序使用该功能,针对 yaccbison.

的多个变体进行调整