编译原理实验一 词法分析设计 Java版
一、实验目的
通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。
二、功能描述
- 在文件中写入多行并读入进行分析
- 统计行数和列数用于错误单词的定位
- 删除空格类字符,包括回车、制表符空格
- 按拼写单词(关键字、标识符、常数、运算符、关系运算符、分界符号),并用(内码,属性)二元式表示
- 如果发现错误则报告出错
- 根据需要是否填写标识符表供以后各阶段使用
三、程序结构描述
函数名称及调用格式返回类型 | 参数含义 | 返回值描述 | 函数功能 |
| 无 | 无 | 得到相应的终结符集和非终结符集 |
| 返回action表中相应的字符串 | Topstate是状态栈中的栈顶符号,in是当前输入符号 | 通过栈顶状态和输入符号来查找相应的action表,得到表中对应操作 |
| 状态栈里全部符号 | 无 | 得到当前状态栈中的全部符号 |
| 符号栈的全部符号 | 无 | 得到符号栈的全部符号 |
| Goto表中对应状态 | 无 | 得到goto表中对应的状态 |
| 无 | 无 | 根据action表和goto表的内容进行LR(1)分析 |
| 无 | 标题字符 | 这是构造器,为了将输出界面化 |
| 无 | 响应事件 | 主要为按钮绑定事件,进行语法分析 |
| 无 | Main参数 | Main方法,执行入口 |
四、详细的算法描述
分析过程主要在startAnalysis()中进行实现,算法主要是依靠上表,对当前字符进行判断,字母,数字或者是其他三种类型然后再分别处理。
五、给出软件的测试方法和测试结果
在文件中进行读入,程序运行一次后退出。运行结果输出在控制台。
结果和源码