Flex lexer 1美元在Lex中是可用的代币吗?

Flex lexer 1美元在Lex中是可用的代币吗?,flex-lexer,lex,Flex Lexer,Lex,如果我有: if { yylval = $1; } 这合法吗?如果没有,是否有其他方式表示我想参考我输入的内容 (请不要说yylval='if',它不是动态的,我想在一些更复杂的场景中使用它)不。$1朋友是语法中的非终结符或终结符。我不知道你到底想做什么,但通常你会有一套这样的规则: "if" { return IF; } "else" { return ELSE; } [0-9]+ { yylval.intValue = atoi(yytext); return

如果我有:

if {
    yylval = $1;
}
这合法吗?如果没有,是否有其他方式表示我想参考我输入的内容


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

不。
$1
朋友是语法中的非终结符或终结符。我不知道你到底想做什么,但通常你会有一套这样的规则:

"if"      { return IF; }
"else"    { return ELSE; }
[0-9]+    { yylval.intValue = atoi(yytext); return INTEGER; }
等等,其中IF和ELSE在y.tab.h中定义,作为通过
%token
指令在.y文件中声明的结果

请不要说“如果”,它不是动态的


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

如果你不是指
yylval=yytext,那么我不知道你想做什么。如果你是这个意思,不,这是不合法的,因为你需要复制,所以你应该使用
yylval=strdup(yytext)