Bootstrap

flex和bison计算器1

flex和bison简单计算器

这个代码是flex和bison的入门代码;

简单计算器

代码使用到的文法:

S->E
E->E+T | E-T | T
T->T*F | T/F | F
F->(E) | id
产生式 语义规则
S->E {print(E.val)}
F->E+T F.val =E.val+T.val
F->T*F E.val=T.val+F.val
F->id F.val =id.val

这里使用的简单文法没有进行消除左递归,消除左公因子

Ubuntu 编译指令

flex test.l
bison -d test.y
gcc -o test lex.yy.c test.tab.c -lfl

flex.l文件

%{
# include "test.tab.
;