0
저는 Flex와 Bison에서 계산기를 만들었습니다. 표준 입력에서 얻은 표현의 접두사 표기법을 인쇄 할 수 있어야합니다. 게시물 수정 표기법을 쉽게 인쇄 할 수 있었지만 접두사 표기법을 사용하는 데 어려움이 있습니다. 여기에 지금까지 들소에 달성 한 것입니다 :Bison - 간단한 계산기에 접두사 표기법을 인쇄하십시오.
%{
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int yylex(void);
void yyerror(char *);
int sym[26];
%}
%token INTEGER VARIABLE
%left '+' '-'
%left '*' '/'
%left POWER
%right '!'
%%
program:
program statement '\n'
|
;
statement:
expr { printf("\n%d \n", $1); }
|
VARIABLE '=' expr { sym[$1] = $3;printf("\n"); }
;
expr:
INTEGER { /*printf("%d",yylval);*/}
| VARIABLE { $$ = sym[$1]; printf("%d",sym[$1]);}
| expr '+' expr { $$ = $1 + $3; printf("+");}
| expr '-' expr { $$ = $1 - $3; printf("-");}
| expr '*' expr { $$ = $1 * $3; printf("*");}
| expr '/' expr { $$ = $1/$3; printf("/");}
| expr POWER expr { $$ = pow($1, $3);printf("pow");}
| '(' expr ')' { $$ = $2;}
| '!' expr { $$ = !$2; printf("!");}
;
%%
void yyerror(char *s) {
fprintf(stderr, "%s\n", s);
}
int main(void) {
yyparse();
return 0;
}
이것은 접두사입니다. 후위처럼 보입니다. – user3344003