资源简介
nput.txt是输入的测试文件。
produce.txt是输入的LR1产生式,能力不大,能if,while,赋值,加,乘,不能处理任何嵌套,没有数组,(这个你可以自己加文法进去进行处理)
Grammar.txt是某个博客上的文法,看着很靠谱,但是我没有再做测试的心思了。。。
这个程序没啥bug,但是文法如果有左递归,那肯定是会出现stack overflow的(书上算法就是这么设计的)
另外LR文法不能有二义性,你得在文法里面把算术优先级给解决了。
另外如果加入嵌套,那必然复杂度指数上升,得跑很久。。。。十分钟似乎都不算多。。
运行指南:
gui.JtableParse3.java 显示LR1分析表,同时对input里面的文件进行分析。输出词法分析结果到output.txt
输出规约过程,很小一段语句可能就会很长的规约过程。
letex.LexResult.java 显示词法分析结果。输出全部识别出来的单词。
LR1识别实现完全在Parse3包里,自己看名字去读代码。
几乎每一个主要的类我都写了main()方法,可以自己输入一些产生式去试下,
比如书上给的:
S' -> S
S -> C C
C -> c C|d
得到的集合和LR1的结果和书上完全一致
和一些网址上的
S' -> S
S -> L = R
S -> R
L -> * R
L -> id
R -> L
你可以通过跑ItemTable.java 得到全部的集合和goto集合,
通过跑gotoTable.java 得到goto表
通过跑ActionTable.java 得到action表(cmd形式)
通过跑parse.java 得到两张表的合集和规约过程。
gui.JtableParse3.java 把上面的两张表合在一起图形化了。
我鼓励你发现我的bug *0*虽然我仔细检察过并没有bug
但你可以发布修复bug的最新版本。注意标明原转载网址奥。
更加详细的思路和其他的说明,见下面的网址:
https://blog.csdn.net/qinglingLS
和:
https://blog.csdn.net/qinglingLS/article/details/89814398
【HIT哈工大编译原理实验】词法分析程序java
【编译原理】求first集合的代码实现java
【编译原理】求GOTO图的代码实现java
【编译原理】LL(1)分析法代码
其他的更新版本可以自己去博客里找一下噢。
写于2019/5/8

代码片段和文件信息
include ;
void id (int id)
{
int[digit] id;
while(id > id)
do{
if(id != id)
{
id=id*id;
}
id=id*id;
};
if(id != id)
{
while(id > id)
do{
if(id != id)
{
id=id*id;
}
id=id*id;
};
id=id*id;
}
}
void id (int id)
{
while(id < id)
do{
id[id]=(digit)-id* id+id;
};
if(id != id)
{
id=id*id;
}
}
$
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2019-05-02 10:47 Compiler_mean3\.classpath
文件 390 2019-05-08 23:03 Compiler_mean3\.project
文件 4776 2019-05-11 14:51 Compiler_mean3\bin\gui\JTableParse3.class
文件 2486 2019-05-11 14:51 Compiler_mean3\bin\letex\KeyWord.class
文件 10128 2019-05-11 14:51 Compiler_mean3\bin\letex\LexAnalyse.class
文件 5331 2019-05-11 14:51 Compiler_mean3\bin\letex\LexResult.class
文件 2637 2019-05-11 14:51 Compiler_mean3\bin\letex\Tag.class
文件 517 2019-05-11 14:51 Compiler_mean3\bin\letex\Token.class
文件 1217 2019-05-11 14:51 Compiler_mean3\bin\letex\Word.class
文件 6923 2019-05-11 14:51 Compiler_mean3\bin\parse3\ActionTable.class
文件 5267 2019-05-11 14:51 Compiler_mean3\bin\parse3\FirstFollow.class
文件 1644 2019-05-11 14:51 Compiler_mean3\bin\parse3\GoTo.class
文件 5303 2019-05-11 14:51 Compiler_mean3\bin\parse3\GoToTable.class
文件 9941 2019-05-11 14:51 Compiler_mean3\bin\parse3\Item.class
文件 2944 2019-05-11 14:51 Compiler_mean3\bin\parse3\ItemSet.class
文件 4658 2019-05-11 14:51 Compiler_mean3\bin\parse3\ItemTable.class
文件 5951 2019-05-11 14:51 Compiler_mean3\bin\parse3\LRClosure.class
文件 5846 2019-05-11 14:51 Compiler_mean3\bin\parse3\Parse.class
文件 1939 2019-05-11 14:51 Compiler_mean3\bin\parse3\Production.class
文件 4129 2019-05-11 14:51 Compiler_mean3\bin\parse3\ProductionList.class
文件 1761 2019-05-11 14:51 Compiler_mean3\bin\parse3\WordStack.class
文件 2503 2019-05-11 14:51 Compiler_mean3\bin\utils\FileOpt.class
文件 2799 2019-05-08 22:48 Compiler_mean3\Grammar.txt
文件 395 2019-05-09 00:44 Compiler_mean3\input.c
文件 597042 2019-05-12 22:58 Compiler_mean3\OUTPUT.c
文件 994 2019-05-09 00:15 Compiler_mean3\produce.txt
文件 4646 2019-05-09 00:26 Compiler_mean3\src\gui\JTableParse3.java
文件 1844 2019-05-02 11:05 Compiler_mean3\src\letex\KeyWord.java
文件 18757 2019-05-08 22:16 Compiler_mean3\src\letex\LexAnalyse.java
文件 3861 2019-05-08 16:30 Compiler_mean3\src\letex\LexResult.java
............此处省略33个文件信息
- 上一篇:Android(仓库管理系统)
- 下一篇:jsp音乐网站源代码
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论