【发布时间】:2017-10-08 12:29:17
【问题描述】:
我在使用 flex 和 bison 中的计算器时遇到问题 在这段代码中
0[xX][0-9a-fA-F]+ {yylval=strtol(yytext,0 ,16);return HEX;}
它实际上识别十六进制值,并进行数学运算,但是当我想打印结果时,它以十进制打印。
所以我认为这部分有问题:
/*main(int argc, char **argv)
{
int tok;
while(tok = yylex()) {
printf("%d", tok);
if(tok == NUMBER) printf(" = %d\n", yylval);
else
if(tok == HEX)
printf(" = %x\n", yylval);
else
printf("\n");
}
}*/
【问题讨论】:
-
为什么你的代码在注释里面?也请发MVCE。
-
你“做数学运算”的部分在哪里?如果您在包含的代码中注释 main`,它是否按预期工作?
标签: hex calculator bison flex-lexer