资源简介
对算术表达式文法,用递归下降分析法(或预测分析方法、算符优先分析方法等)对任意输入的符号串进行分析,如合法给出相应信息,如果不合法,最好能给出在哪个产生式出现的问题。
算术表达式至少包含+、-、*、/、()。例如:i1 + i2 * ( 34 - i3 / 2 )
算术表达式至少包含+、-、*、/、()。例如:i1 + i2 * ( 34 - i3 / 2 )
代码片段和文件信息
package appmain;
import javax.swing.*;
import java.util.ArrayList;
import java.util.HashMap;
public class GrammaAnalysis {
private ArrayList stack = new ArrayList<>(); // 当前栈
private ArrayList reader = new ArrayList<>(); // 待读队列
private Production[] productions = new Production[42]; // 产生式数组
private HashMap map_i2s; // 种别码Map,种别码为键,单词为值
private HashMap map_s2i; // 种别码Map,单词为键,种别码为值
private void initMap() {
map_s2i = new HashMap<>();
map_s2i.put(“char“ 1);
map_s2i.put(“short“ 2);
map_s2i.put(“int“ 3);
map_s2i.put(“long“ 4);
map_s2i.put(“float“ 5);
map_s2i.put(“double“ 6);
map_s2i.put(“final“ 7);
map_s2i.put(““ 8);
map_s2i.put(“if“ 9);
map_s2i.put(“else“ 10);
map_s2i.put(“while“ 11);
map_s2i.put(“do“ 12);
map_s2i.put(“for“ 13);
map_s2i.put(“break“ 14);
map_s2i.put(“continue“ 15);
map_s2i.put(“void“ 16);
map_s2i.put(“id“ 20);
map_s2i.put(“num“ 30);
map_s2i.put(“=“ 31);
map_s2i.put(“==“ 32);
map_s2i.put(“>“ 33);
map_s2i.put(“<“ 34);
map_s2i.put(“>=“ 35);
map_s2i.put(“<=“ 36);
map_s2i.put(“+“ 37);
map_s2i.put(“-“ 38);
map_s2i.put(“*“ 39);
map_s2i.put(“/“ 40);
map_s2i.put(“(“ 41);
map_s2i.put(“)“ 42);
map_s2i.put(“[“ 43);
map_s2i.put(“]“ 44);
map_s2i.put(“{“ 45);
map_s2i.put(“}“ 46);
map_s2i.put(““ 47);
map_s2i.put(“:“ 48);
map_s2i.put(“;“ 49);
map_s2i.put(“!=“ 50);
map_s2i.put(“$“ 60);
map_i2s = new HashMap<>();
map_i2s.put(1 “char“);
map_i2s.put(2 “short“);
map_i2s.put(3 “int“);
map_i2s.put(4 “long“);
map_i2s.put(5 “float“);
map_i2s.put(6 “double“);
map_i2s.put(7 “final“);
map_i2s.put(8 ““);
map_i2s.put(9 “if“);
map_i2s.put(10 “else“);
map_i2s.put(11 “while“);
map_i2s.put(12 “do“);
map_i2s.put(13 “for“);
map_i2s.put(14 “break“);
map_i2s.put(15 “continue“);
map_i2s.put(16 “void“);
map_i2s.put(20 “id“);
map_i2s.put(30 “num“);
map_i2s.put(31 “=“);
map_i2s.put(32 “==“);
map_i2s.put(33 “>“);
map_i2s.put(34 “<“);
map_i2s.put(35 “>=“);
map_i2s.put(36 “<=“);
map_i2s.put(37 “+“);
map_i2s.put(38 “-“);
map_i2s.put(39 “*“);
map_i2s.put(40 “/“);
map_i2s.put(41 “(“);
map_i2s.put(42 “)“);
map_i2s.put(43 “[“);
map_i2s.put(44 “]“);
map_i2s.put(45 “{“);
map_i2s.put(46 “}“);
map_i2s.put(47 ““);
map_i2s.put(48 “:“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-03-30 14:51 .idea\
目录 0 2020-03-30 14:51 .idea\artifacts\
文件 287 2020-03-30 14:49 .idea\artifacts\_jar.xm
文件 244 2020-03-30 14:15 .idea\encodings.xm
文件 283 2020-03-30 14:23 .idea\misc.xm
文件 277 2020-03-30 14:15 .idea\modules.xm
文件 6338 2020-03-30 14:50 .idea\workspace.xm
目录 0 2020-03-30 14:51 bin\
目录 0 2020-03-30 14:51 bin\appmain\
文件 619 2020-03-30 14:28 bin\appmain\GrammaAnalysis$Production.class
文件 13042 2020-03-30 14:28 bin\appmain\GrammaAnalysis.class
文件 3623 2020-03-30 14:46 bin\appmain\LexicalAnalyzer.class
文件 4283 2020-03-30 14:23 bin\appmain\Mainfr
目录 0 2020-03-30 14:51 bin\me
文件 56 2020-03-30 14:43 bin\me
目录 0 2020-03-30 14:51 src\
目录 0 2020-03-30 14:51 src\appmain\
文件 24019 2020-03-30 14:28 src\appmain\GrammaAnalysis.java
文件 5944 2020-03-30 14:34 src\appmain\LexicalAnalyzer.java
文件 2930 2019-12-17 14:53 src\appmain\Mainfr
目录 0 2020-03-30 14:51 src\me
文件 56 2020-03-30 14:43 src\me
文件 448 2020-03-30 14:15 词法分析器.iml
文件 11555 2020-03-30 14:50 语法分析器.jar
相关资源
- 广州大学编译原理实验报告1-3.zip
- 编译原理实验 词法分析设计 MFC
- 山东大学编译原理实验报告含代码
- 西安交通大学编译原理实验代码及报
- 语法分析器Java语言编写附实验报告
- java开发的基于LL1文法的语法分析器
- java编写的LR语法分析器编译原理实验
- 用java语言编写的递归下降语法分析器
- 用java实现的语法分析器
- 语法分析器java实现
- 编译原理 LL1语法分析器(JAVA写的)
- 编译原理实验二语法分析java代码Jav
- 山东大学计算机学院编译原理实验—
- java语法分析器源代码LL(1)文法
- 词法分析器和语法分析器java实现代码
- 编译原理实验四-语义分析
- 编译原理实验三语义分析JavaCC代码
- 吉首大学编译原理实验_莫礼平
- 递归下降语法分析器用Java语言编写
- LR0语法分析器JAVA
- 递归下降法实现语法分析器java
- c语言表达式的语法分析器
- Java编写的C-minus词法和语法分析器
- 一个带界面的词法分析+语法分析语法
- LL(1)语法分析器
- 编译原理 语法分析器 lr1 java开发
- 云南大学编译原理实验1-4-6
- Sample词法分析器/Sample语法分析器(
- JavaCC语法分析器 基于Eclipse插件 能从
- PL/0语言编译器源程序山东大学编译原
评论
共有 条评论