一个简单的野牛程序,在编译时,我得到错误1.1:语法错误,意外的文件结束。野牛:输入/输出错误。我用bison -d hw3.y
编译它代码如下:
%{
#include <stdio.h>
%}
%token NUMBER
%left '+' '-'
%left '*' '/'
%%
input
: /* allow empty input */
| input line
;
line
: expr '\n' { printf("Result is %f\n", $1); }
expr
: expr '+' term { $$ = $1 + $3; }
| expr '-' term { $$ = $1 - $3; }
| term { $$ = $1; }
;
term
: term '*' factor { $$ = $1 * $3; }
| term '/' factor { $$ = $1 / $3; }
| factor { $$ = $1; }
;
factor
: '(' expr ')' { $$ = $2; }
| NUMBER { $$ = $1; }
| '-' NUMBER { $$ = -$2; }
;
%%
/* display error message */
int yyerror( char *errmsg ) { printf("%s\n", errmsg); }
/* main */
int main() {
printf("type an expression:\n");
yyparse( );
}
答案 0 :(得分:0)
;
的制作中缺少line
。请注意这种格式化这些文件的更好方法,它会立即暴露此错误。检查大括号和注释是否正确关闭,还引用字符串和字符。