Я исправил эту проблему с помощью компиляции 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");
}
КОД FLEX
%{
/#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);}
%%