我用flex和bison编译来赎回这个问题。这张图片:https://drive.google.com/open?id=1o_XSlpBV3FaQJn9AlBGrkBDqnWJOyCjR显示了我运行的命令以及输出的内容。我是这类编程的初学者,但我不明白问题是什么。我的代码如下:
野牛密码
%{
/#include <stdio.h>
%}
%token NUM PIU MENO PER DIVISO PAR_AP PAR_CH
%start Expr
%error-verbose
%%
Expr: Expr PIU Term
| Expr MENO Term
| Term
;
Term: Term PER Factor
| Term DIVISO Factor
| Factor
;
Factor: NUM
| PAR_AP Expr PAR_CH
;
%%
int main (void) {
yyparse();
return 0;
}
yyerror (char *s) {
printf("Errore Sintattico\n");
}
弹性代码
%{
/#include <stdio.h>
/#include "prova.tab.h"
%}
delim [ \t\n]
ws {delim}+
digit [0-9]
number {digit}+
%option noyywrap
%%
{ws} ;
{number} {return (NUM);}
\+ {return(PIU);}
\- {return (MENO);}
\* {return (PER);}
[/] {return (DIVISO);}
\( {return (PAR_AP);}
\) {return (PAR_CH);}
%%