我想写一个计算器也不是表达式,如“真假”。这里是我的.L文件:Flex野牛计算器不打印结果
%{
#include <stdlib.h>
#include "y.tab.h"
%}
%%
"true" {yylval=1; return BOOLEAN;}
"false" {yylval=0; return BOOLEAN;}
"nor" {return NOR;}
" " { }
. {return yytext[0];}
%%
int main(void)
{
yyparse();
return 0;
}
int yywrap(void)
{
return 0;
}
int yyerror(void)
{
printf("Error\n");
}
这里是我的.Y文件:
/* Bison declarations. */
%token BOOLEAN
%token NOR
%left NOR
%% /* The grammar follows. */
input:
/* empty */
| input line
;
line:
'\n'
| exp '\n' {printf ("%s",$1); }
;
exp:
BOOLEAN { $$ = $1;}
| exp NOR exp { $$ = !($1 || $3); }
| '(' exp ')' { $$ = $2;}
;
%%
的问题是,当我进入像“真也不假”的表情,我看不出有什么结果被打印出来。任何人都知道什么是错的?
野牛甚至编译它吗?好像你在'line'的定义中有一个语法错误。 – StoryTeller 2013-02-28 17:04:06
是的,它的确如此。我不小心在这里发布了一个语法错误,但是在原始代码中没有。 – 2013-02-28 17:27:37