1
我測試了這個團隊合作Flex和Bison的例子,但計算結果並未顯示在控制檯中。 test.l:爲什麼沒有顯示野牛的結果?
%{
#include "parser.tab.h"
%}
%option yylineno
%option noyywrap
%%
[/][/].*\n ; // comment
[0-9]+ { yylval = atoi(yytext);
return NUM;
}
[ \t\r\n] ; // whitespace
. { return *yytext; }
%%
parser.y:
%{
#include <stdio.h>
void yyerror(char *s) {
fprintf (stderr, "%s\n", s);
}
%}
%token NUM
%start EVALUATE
%%
EVALUATE: EXPR {printf("=%d\n", $$);} ;
EXPR: EXPR '+' TERM { $$ = $1 + $3; }
| EXPR '-' TERM { $$ = $1 - $3; }
| TERM
;
TERM: TERM '*' NUM { $$ = $1 * $3; }
| TERM '/' NUM { $$ = $1/$3; }
| NUM
;
%%
int main()
{
return yyparse();
}
但是,如果你添加的getchar(),你進入這個額外的字符顯示所有相同的計算結果再經過。爲什麼不是這種改變(EVALUATE: EXPR{printf("=%d\n", $$); getchar();} ;
),我看不到結果? 對不起,我的英文。
Ť爲了答案,我意識到。 – Airoks