资源简介
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音乐网站源代码
相关资源
- jsp音乐网站源代码
- Javaweb购物车系统源码
- 离散数学计算器
- java实现的考试系统
- 毕业论文基于java的实验室设备登记管
- 酒店管理系统JAVA+sqlserver
- 大华视频监控Javaweb 的demo html
- jsp+servlet+javabean客房管理系统
- swingx-1.6.1.jar
- java进行Vmware ESXI开发所需的基础jar包
- MySQL官方提供的驱动包 mysql-connector-
- JAVA在线支付源码
- Javaweb购物车119915
- javaWeb物流管理系统含数据库文件
- java点餐系统 java swing版本 mysql数据库
- java的小型超市管理系统,包含mysql数
- java爬取网页表格的(运行环境myecli
- javaWeb源码学生公寓管理系统struts2
- 学生学籍管理系统-jsp
- 基于Java Web的旅游网站设计与实现
- 基于Java Socket的租车系统.rar
- 茶叶销售网站(JAVAWEB)
- java se socket在线购物
- Java Excel Api及详细教程
- java优化编程ppt讲义,
- java语言程序设计清华郎波版课件、随
- Java语言程序设计课件PPT.zip
- JAVA版本微信公众账号开源项目版本发
- bt master 开源 纯java实现 bt 项目
- 用java实现爬虫抓取网页中的表格数据
评论
共有 条评论