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.h"
int lexerr

这篇博客介绍了如何利用flex和bison构建一个简单的计算器。文中提到了文法但未进行左递归和左公因子消除。博客内容包括Ubuntu下的编译指令,flex.l和bison.y文件的内容,以及最终的计算结果展示。
最低0.47元/天 解锁文章
1391

被折叠的 条评论
为什么被折叠?



