编译原理-基于WINDOWS下FLEX与BISON的计算器实现

本文介绍如何使用词法分析工具Flex和语法分析工具Bison构建一个功能丰富的计算器程序,支持多种数学运算,包括基本算术、三角函数、对数及阶乘等。通过具体的实现代码示例,展示了如何解析和计算复杂的数学表达式。

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

要求

基于词法分析程序自动构造工具Flex与语法分析程序自动构造工具Bison,编制简单的计算器程序。

 

参考示例程序, 用Flex和Bison实现一个功能更为强大的计算器,尽可能多的包含以下运算(支持浮点数):

a) 加、减、乘、除运算

b) 乘方power、开方sqrt运算

c) 位运算  – 与、或、非...(不做)

d) 三角函数运算 – sin、cos...

e) 求阶乘

f) 求模(不做)

g) 求log以e为底的对数(不做)

h) 求log以10为底的对数

测试样例

52+ 21*2 - 2.1

91.9

 

(25*2+3)*(1-25)

-1272

 

pow(4,2)+sqrt(144)

28

 

sin(30)*cos(60)

0.25

 

log(100)+3!

8

 

具体实现

具体步骤见https://blog.youkuaiyun.com/artherlex/article/details/103455632

下面是calc.l和calc.y的具体实现

calc.l

%{
	#include "calc.tab.h"
	#define YYSTYPE double
	#include <stdlib.h>
	void yyerror(c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值