⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 特别说明.txt

📁 一个flex和bison用法入门的很好的例子。 按照词法分析,语法分析,语义分析的顺序来熟悉flex和bison这两个有力的工具。最后给出了一个用flex做词法分析用bison做语法分析设计的科学计算
💻 TXT
字号:
这个压缩文件下有三个目录分别是flex,bison,end这三个目录中分别存放了我在试验这个小计算器时的学习过程.

我是按照词法分析,语法分析,语义分析的顺序来熟悉flex和bison这两个工具的.

我在调试时所有的编译使用的都是 Dos版的turboc2.0 如要改为用VC++则需处理一下关于malloc.h的问题

1  flex目录中是只涉及练习 flex的源文件,这里的例子只涉及到词法分析器,没有任何语法等其他的内容,目的是练习flex,这个程序能从指定的文件中分析出每一个单词,并且打印出单词的类型,如运行时不给出要分析的文件,则程序分析键盘输入序列的词法.目录中wkhlex.txt是词法规则,用命令flex wkhlex.txt可得到lex.yy.c,由于Turboc2不能识别.yy.c这种格式的文件我们把 lex.yy.c改名为 wkhlex.c,启动Turboc编译即可得到运行文件wkhlex.exe


2  bison 目录中存放的是只涉及练习bison的源文件, 这里的这个例子只练习bison工具,但由于bison中需要调用yylex()函数来读取一个单词,所以这里我们自己写了一个yylex()读取单词的函数, 而没有用flex生成的yylex()函数,目的是只练习bison.这样和bison教程里所讲的差不多.目录中bis.y是bison规则文件,到这里已经能基本实现计算功能,如可以计算3+4等简单式子,但不支持函数,不支持变量赋值. 用命令bison bis.y可生成 bis_tab.c,编译即可得到bis_tab.exe
  注意: 1在编译bis_tab.c前请先将bis_tab.c中的所有"alloc" 替换为 "malloc" (均无引号),什么原因我也没搞明白 
        2用bison生成 .c文件时一定要有bison.simple在当前目录,bison.simple是bison工具提供的.

3  End 目录中是最后的程序文件, 是用flex做词法分析器,其输出为bison生成的语法分析器所用, 这和bison教程里的不一样, bison教程里的计算器没有涉及到flex词法分析,我们这个是二者的结合.
   目录中: flexend.txt定义了felx词法规则;  bis1.y定义了bison语法规则;  calc.h定义了一些全局变量,
           lex.c由felx 生成, bis1_tab.c由bison生成.
           最后编译bis1_tab.c 可生成 bis1_tab.exe最终文件.
注意: 在bison中需要调用flex的yylex()函数, 我是通过在bison文件中包含lex.c文件实现的.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -