《编译原理》实验报告本文档集合了编译原理大作业的实验报告加代码实验主要内容为用C++实现了词法分析程序;语法语义以及四元式生成程序代码见附录,复制进VS后程序绝对可编译执行
文档代码为原创,谨慎使用(姚砺的大作业)实验设计一[一、实验名称]词法分析程序[二、实验目的](1)设计一个词法分析程序,每调用一次就从源程序文件中顺序识别出一个单词符号,并返回该单词符号的内部编码、单词符号自身、行列位置信息
(2)要能处理单行注释
[三、实验内容及要求]单词种类与识别规则(1)标识符:首字符为字母或下划线,其后由字母、数字或下划线组成、长度不超过255个字符;(2)整数:由1到8个数字组成
(3)小数:数字串1
数字串2,其中:数字串1由1-8个数字符组成;数字串2由0-8个数字符组成,即:数字串2可以为空
(4)字符串:由一对“”括起来的符号串,长度不超过255个字符;(5)保留字:if、else、while、do、integer、float、string、input、output、and、or、function、end、def、as、begin(6)数学运算符:+、-、*、/、=(7)比较运算符:=、、==(8)逻辑运算符:and、or(9)分隔符:{、}、(、)、;、,[四、实验环境]操作系统:Win7/其他编译工具:VC++6
0/CFree/VS2012[五、设计]1设计大体思路将读取的文件采用一遍扫描的方法,即从左到右只扫描一次源程序,将读取的数据存放在一个二维数组里
然后通过扫描函数scan,再从数组中一行一行的读取数据,每调用其依次返回一个单词的类型,同时单词本身以及行列号存放在全局变量中
而说词法分析作为语法分析的一个子程序,故在编写词法分析程序时,将会反复调用scan函数来获取一个个单词信息
3设计流程图4函数设计/*词法分析函数*/intscan(strings