功能
1. 只支持整数计算
2. 支持括号
3. 支持负数
文件内容
flex文件
%{
#include "calc.tab.h"
%}
%%
[1-9][0-9]* {
yylval.int_val = atoi(yytext);
printf("<flex::num>%d\n",yylval.int_val);
return NUM;
}
"+" |
"-" |
"*" |
"/" |
"(" |
")" {printf("<flex::op>%s\n",yytext);return yytext[0];}
[ \t]
"\n" {return CR;}
. {printf("Error input!");exit(1);}
%%
int yywrap()
{
return 1;
}
bison文件
%{
#include <stdio.h>
#include <stdlib.h>
int yylex();
%}
%union{
int int_val;
}
%token <int_val> NUM
%token CR
%type <int_val> digit term exp
%%
input : line
| input line
;
line : CR
| exp CR {printf(">>> %d\n", $1);}
;
exp : t