如果我有:
if {
yylval = $1;
}
这合法吗?如果没有,是否有其他方式可以说我想引用我放入的内容?
(请不要说yylval = 'if'
,它不是动态的,我想在一些更复杂的场景中使用它)
答案 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
规则。你的目的仍然模糊不清。