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.