我得到了運行時信息:語法錯誤,意外VARIABLE,期待':'或'\ n' 我想這是由於我錯誤的野牛來源,但是怎麼回事? 在我的法源我有野牛錯誤報告解釋
'mod' return MOD;
[-+()=/*\n:] { return *yytext; }
但同時=四分之五十五運行正常,A = 55mod4錯誤報告在退出前寫的。 感謝您的任何預約。 這裏是我的全部野牛文件:
%{
#include <stdio.h>
void yyerror(char *);
int yylex(void);
#include "y.tab.h"
#include "bas.h"
#define YYDEBUG 1
#define YYERROR_VERBOSE 1
#define YYTOKEN_TABLE 1
%}
%debug
%error-verbose
%token INTEGER VARIABLE PRINT
%left '+' '-'
%left '*' '/'
%left MOD
%%
program:
program statement ':' {
if (stackptr>0)
{
printf("stack underflow !\n");
}
else if (stackptr<0)
{
printf("stack overflow !\n");
}
}
|
program statement '\n' {
if (stackptr>0)
{
printf("stack underflow !\n");
}
else if (stackptr<0)
{
printf("stack overflow !\n");
}
else {
/* send basictoken[] array to micro*/
printf("OK.\n");
debugprint();
}
resetbuffer();
stackptr=0;
}
| /* NULL */
;
statement:
expression
| VARIABLE '=' expression {
put_token(avr_tovar);
put_token($1);
stackptr--;
}
| PRINT expression {
put_token(avr_tos);
stackptr--;
}
;
expression:
INTEGER {
put_token(avr_const);
put_token(yylval);
stackptr++;
}
| VARIABLE {
put_token(avr_fromvar);
put_token(yyval);
stackptr++;
}
| expression '+' expression {
put_token(avr_add);
stackptr--;
}
| expression '-' expression {
put_token(avr_sub);
stackptr--;
}
| expression '*' expression {
put_token(avr_mul);
stackptr--;
}
| expression '/' expression {
put_token(avr_div);
stackptr--;
}
| expression MOD expression {
put_token(avr_mod);
stackptr--;
}
| '(' expression ')'
;
%%
void yyerror(char *s)
{
fprintf(stderr, "%s\n", s);
}