在Lex中1美元是可用的令牌吗?

时间:2016-05-23 04:06:22

标签: flex-lexer lex

如果我有:

if {
    yylval = $1;
}

这合法吗?如果没有,是否有其他方式可以说我想引用我放入的内容?

(请不要说yylval = 'if',它不是动态的,我想在一些更复杂的场景中使用它)

1 个答案:

答案 0 :(得分:1)

没有。 $1和朋友是语法中的非终端或终端符号。我不知道你要做什么,但通常你会有一套这样的规则:

"if"      { return IF; }
"else"    { return ELSE; }
[0-9]+    { yylval.intValue = atoi(yytext); return INTEGER; }

等,其中IF和ELSE在y.tab.h中定义,因为通过%token指令在.y文件中声明。

  

请不要说yylval = 'if',这不是动态的

两者都不是lex规则。你的目的仍然模糊不清。