java实现C语言词法分析器
提前说明:
由于编译原理课程实践的要求,我们需要实现一个高级程序设计语言的词法分析器、语法分析、语义分析,而这次课程实践对实验进行了拆分,第一个阶段是完成词法分析的部分;而我正好开始学java,所以我利用java来完成对C语言的词法分析,此次实验呢,老师要求我们提交可执行的文件(傻瓜式的双击程序即可使用),所以我又对程序进行了可视化窗口(虽然特别low)的设计,如果博友不要这种可视化的设计,我会在后文附带源码供其更改。
特别声明:初学java,代码冗余度高,本人提供源码旨在交流学习,如有更好建议,望大家不吝赐教!
功能简介
- 调用java Swing中的文件选择器,自由选择文件(暂支持txt文本文件;
- 调用java Swing中的文本域组件,将控制台的输出信息转移到窗体中 ,输出信息为识别单词符号的二元组;
- 支持结果写出操作,写出时调用文件选择器,保存至指定路径(方便下次的语法分析)。
支持识别的单词符号
说明:以下单词符号包括C语言中的32个关键字,37个界符、运算符等,以及打印输出的串为9999
算法思想
- 执行流程图
- 文字说明
- 启动程序,调用文件选择器,找到待分析得C语言代码文件(提前转存到txt文本中,并设置编码为utf-8(防止中文乱码));
- 文本预处理:清除掉所有注释[单行注释、多行注释、嵌套注释等] 、清除首尾空格,清除回车换行,处理结果不作保存,用于token记录;
- 自动处理,按照DFA转换图进行单词符号的识别(如下图,画的可能有点缺陷,意思到了就行);
- 识别结果输出,输出内容包括:二元组、空格/缩进提示、非要求内容提示、二元组类别提示。
源码及可执行程序
Java源码:百度云盘链接,单击我跳转输入提取码:k2t8
扫码下载也可以哦:
可执行程序(包含jar包):百度云盘链接,单击我跳转输入提取码:ilxt
你也可以直接使用百度云盘扫码下载:
批注: Java源码的运行是需要开发环境的,如果没有安装JDK,推荐使用可执行程序(exe),可执行程序压缩包里面的文件一定要解压到一个文件夹下,这样才能保证在无开发环境的电脑中正常运行!
应用演示视频
Java实现C语言词法分析演示
脾气暴躁的你倍速看怎么都行~~