flex和bison计算器1

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值