一、简介
这篇文章中我们使用flex和bison制作一个支持基本数学运算和函数调用的计算器。
先来一张图看看效果:
二、词法分析器
为了简单,我们只支持一种数据类型——double,允许定义变量和函数调用。
1 | %{ |
三、语法分析器
语法分析也很简单,这里我们用scopes表示作用域,因为只有一个作用域,所以这是一个全局作用域。
我们把Token定义成union类型的,用于存储数值、字符串和函数的参数。
1 | %{ |
四、内置函数
这里定义一些常用的数学函数,为了简单,我们不考虑自定义函数。
1 |
|
五、程序入口
1 |
|
六、项目配置
我是使用cmake进行编译的,CMakeLists.txt
文件如下:
1 | cmake_minimum_required(VERSION 3.14) |
七、运行效果
- 本文作者: killf
- 本文链接: http://www.killf.info/编程语言/Flex+Bison/Flex与Bison入门系列之高级计算器/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!