package compile.ParsingTable;
public class ParsingTable {
enum NONTERMINAL {
P , CS, S, SS, IS, WS, AS, BE, BO, AE, AEP, ME, MEP, SE
}
enum TERMINAL {
lb, rb, lp, rp, smc, tif, tthen, telse, twhile, id, num, lt, gt, le, ge, as, eq, plus, minus, mul, di, ne, dl
}
public int getNonTermialIndex(NONTERMINAL n) {
if (n.equals(NONTERMINAL.P)) {
return 0;
} else if (n.equals(NONTERMINAL.CS)) {
return 1;
} else if (n.equals(NONTERMINAL.S)) {
return 2;
} else if (n.equals(NONTERMINAL.SS)) {
return 3;
} else if (n.equals(NONTERMINAL.IS)) {
return 4;
} else if (n.equals(NONTERMINAL.WS)) {
return 5;
} else if (n.equals(NONTERMINAL.AS)) {
return 6;
} else if (n.equals(NONTERMINAL.BE)) {
return 7;
} else if (n.equals(NONTERMINAL.BO)) {
return 8;
} else if (n.equals(NONTERMINAL.AE)) {
return 9;
} else if (n.equals(NONTERMINAL.AEP)) {
return 10;
} else if (n.equals(NONTERMINAL.ME)) {
return 11;
} else if (n.equals(NONTERMINAL.MEP)) {
return 12;
} else if (n.equals(NONTERMINAL.SE)) {
return 13;
} else {
return -1;
}
}
public int getTerminalIndex(TERMINAL n)
{
if(n.equals(TERMINAL.lb))
{
return 0;
}else if(n.equals(TERMINAL.rb))
{
return 1;
}else if(n.equals(TERMINAL.lp))
{
return 2;
}else if(n.equals(TERMINAL.rp))
{
return 3;
}else if(n.equals(TERMINAL.smc))
{
return 4;
}else if(n.equals(TERMINAL.tif))
{
return 5;
}else if(n.equals(TERMINAL.tthen))
{
return 6;
}else if(n.equals(TERMINAL.telse))
{
return 7;
}else if(n.equals(TERMINAL.twhile))
{
return 8;
}else if(n.equals(TERMINAL.id))
{
return 9;
}else if(n.equals(TERMINAL.num))
{
return 10;
}else if(n.equals(TERMINAL.lt))
{
return 11;
}else if(n.equals(TERMINAL.gt))
{
return 12;
}else if(n.equals(TERMINAL.le))
{
return 13;
}else if(n.equals(TERMINAL.ge))
{
return 14;
}else if(n.equals(TERMINAL.as))
{
return 15;
}else if(n.equals(TERMINAL.eq))
{
return 16;
}else if(n.equals(TERMINAL.plus))
{
return 17;
}else if(n.equals(TERMINAL.minus))
{
return 18;
}else if(n.equals(TERMINAL.mul))
{
return 19;
}else if(n.equals(TERMINAL.di))
{
return 20;
}else if(n.equals(TERMINAL.ne))
{
return 21;
}else if(n.equals(TERMINAL.dl))
{
return 22;
}else
{
return -1;
}
}
private final int ROW = 14;
private final int COLUMN = 23;
private parsingTableElement[][] parTable = new parsingTableElement[ROW][COLUMN];
public parsingTableElement unexpect;
public parsingTableElement missing;
public parsingTableElement empty;
private String[] errorArray;
public void initialize()
{
this.errorArray = new String [2];
errorArray[0] = "Unexpected";
errorArray[1] = "Missing";
for(int row =0 ; row < ROW ; row++)
{
for(int col = 0 ;col < COLUMN ; col++)
{
parsingTableElement a = new parsingTableElement();
parTable[row][col] = a;
}
}
unexpect = new parsingTableElement();
unexpect.setErrorM(errorArray[0]);
missing = new parsingTableElement();
missing.setEntry("SYCN");
empty = new parsingTableElement();
empty.setEntry("empty");
empty.setErrorM(this.errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.P)][getTerminalIndex(TERMINAL.lb)].setEntry("CS");
parTable[getNonTermialIndex(NONTERMINAL.P)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.P)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.CS)][getTerminalIndex(TERMINAL.lb)].setEntry("lb SS rb");
parTable[getNonTermialIndex(NONTERMINAL.CS)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.CS)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.lb)].setEntry("CS");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.rb)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.rb)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.tif)].setEntry("IS");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.telse)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.telse)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.twhile)].setEntry("WS");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.id)].setEntry("AS");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.S)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.lb)].setEntry("S SS");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.rb)].setEntry("empty");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.tif)].setEntry("S SS");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.telse)].setEntry("empty");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.twhile)].setEntry("S SS");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.id)].setEntry("S SS");
parTable[getNonTermialIndex(NONTERMINAL.SS)][getTerminalIndex(TERMINAL.dl)].setEntry("empty");
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.rb)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.rb)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.tif)].setEntry("if lp BE rp then S else S");
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.telse)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.telse)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.IS)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.rb)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.rb)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.telse)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.telse)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.twhile)].setEntry("while lp BE rp S");
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.WS)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.AS)][getTerminalIndex(TERMINAL.id)].setEntry("id as AE smc");
parTable[getNonTermialIndex(NONTERMINAL.AS)][getTerminalIndex(TERMINAL.dl)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.AS)][getTerminalIndex(TERMINAL.dl)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.BE)][getTerminalIndex(TERMINAL.lp)].setEntry("AE BO AE");
parTable[getNonTermialIndex(NONTERMINAL.BE)][getTerminalIndex(TERMINAL.rp)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.BE)][getTerminalIndex(TERMINAL.rp)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL.BE)][getTerminalIndex(TERMINAL.smc)].setEntry("SYCN");
parTable[getNonTermialIndex(NONTERMINAL.BE)][getTerminalIndex(TERMINAL.smc)].setErrorM(errorArray[1]);
parTable[getNonTermialIndex(NONTERMINAL
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Compile.rar (29个子文件)
Compile
.project 383B
bin
compile
main
Main.class 3KB
LexicalAnalyzer
LexicalAnalyzer.class 9KB
ParsingStack
stackEntry.class 582B
ParsingStack.class 2KB
SymbolTable
SymbolElement.class 901B
SymbolTable.class 2KB
SyntaxAnalyzer
SyntaxAnalyzer.class 4KB
Tools
Tools.class 3KB
ParsingTable
ParsingTable.class 10KB
ParsingTable$NONTERMINAL.class 2KB
ParsingTable$TERMINAL.class 2KB
parsingTableElement.class 932B
log4j.properties 541B
.settings
org.eclipse.jdt.core.prefs 629B
src
compile
main
Main.java 2KB
LexicalAnalyzer
LexicalAnalyzer.java 14KB
ParsingStack
ParsingStack.java 1KB
stackEntry.java 285B
SymbolTable
SymbolElement.java 501B
SymbolTable.java 993B
SyntaxAnalyzer
SyntaxAnalyzer.java 3KB
Tools
Tools.java 3KB
ParsingTable
ParsingTable.java 22KB
parsingTableElement.java 537B
.classpath 360B
lib
log4j-1.2.15.jar 383KB
logs
log.log 54KB
log.log.1 100KB
共 29 条
- 1
资源评论
- Wendy-Y2012-06-19这个真的是有些复杂,让人有些看不懂,还不知道怎么下手去修改。
- R_Pepe2012-11-09太复杂,看不懂。
- 三分钟冷血2012-06-16不太好用啊。。。好像还只有词法
- fuxing1122012-11-07不太好用啊。。太简单了
PandaKing1988
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功