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)代码>