编译原理_计算器_flex、bison实现(详细辅助理解)
- 个人博客 [https://www.yuque.com/_ngp/blog/tuanh6](https://www.yuque.com/_ngp/blog/tuanh6)
- P.S. 这篇文章只能助你理解并修改程序,博主也只理解了部分, 而且很久没用了, 其他的都忘了. 附赠安装配置环境的教程(毕竟很多人卡在第一步嘛( ̄▽ ̄)/)
- 一 环境配置:Windows/Ubuntu+flex、bison
- 二 一个简单的示例代码calcSimple下载
- 三 把 calcSimple 修改成 完整版的计算器 全攻略
- 四 非常重要的 两个学长学姐的 示例程序。
- 五 理解 `.l` 文件和 `.y` 文件
- 六 词法分析&语法分析
- 七 编译、运行的时候,常见错误以及对策
- 八 源代码
个人博客 https://www.yuque.com/_ngp/blog/tuanh6
目标:参考范例程序, 用 Flex 和 Bison 实现一个功能更为强大的计算器,包含以下运算:
a) 加、减、乘、除运算
b) 乘方、开方运算
c) 位运算
– 与 & 、或 |、非 ~…
d) 阶乘运算 !
e)sin cos tan
sin(SIN*pi/180.0)//把角度变成弧度即把180度变成π
如果要写实验报告的话,请先看报告书的要求,一边截图一边编程,免得写报告的时候,浪费时间。
P.S. 这篇文章只能助你理解并修改程序,博主也只理解了部分, 而且很久没用了, 其他的都忘了. 附赠安装配置环境的教程(毕竟很多人卡在第一步嘛( ̄▽ ̄)/)
一 环境配置:Windows/Ubuntu+flex、bison
\1 使用Windows+CodeBlocks+flex、bison的环境(有两种方式)
方式1 借助codeblcoks编译、运行。
flex_bison 下载 百度云密码:usk6
flex_bison 备用下载链接
1)下载百度云里的flex和bison。放到windows环境下。
2)把.l文件和.y文件复制到该文件下
3)在2)文件夹的地址栏(也就是下图画红圈的地方),输入cmd, 然后按 回车
4)在 cmd弹出的控制台 里输入
flex -ocalc.c calc.l
bison -ocalc.tab.h calc.y //注意-o后面没有空格
这样,会生成两个文件,calc.tab.h 和 calc.c
然后,把生成的.c文件(calc.c),丢进 codeblocks里,编译,运行。
方式2 配置MinGW直接在cmd下编译、运行。
flex_bison 下载 百度云密码:usk6
flex_bison 备用下载链接
1)下载百度云里的flex和bison。放到windows环境下。
2)把.l文件和.y文件复制到该文件下
3)把%codeblocks%\MinGW\bin添加到 电脑\属性\高级系统设置\环境变量\PATH(即把codeblocks的编译器的路径放到环境变量PATH里)
4)在2)文件夹的地址栏(也就是下图画红圈的地方),输入cmd, 然后按 回车
flex calc.l
bison -o calc.tab.h calc.y //注意-o后面有没有空格都可以 ==
gcc -o aa lex.yy.c calc.tab.h //编译
aa //运行aa.exe
这种方式,会生成两个文件,calc.tab.h 、calc.tab.c 和 calc.c
这样,就直接在 在 cmd弹出的控制台 界面,运行程序,而不要通过codeblocks。
\2 使用Ubuntu+flex、bison的环境,来编译、运行。
vm12+ubuntukylin16.04 虚拟机安装ヾ(o◕∀◕)ノヾ (❁´︶`❁)
然后,在ubuntu安装flex、bison并完成编译
老版本的ubuntu可能这样安装不了,