/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This file is part of SableCC. *
* See the file "LICENSE" for copyright information and the *
* terms and conditions for copying, distribution and *
* modification of SableCC. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
Macro:ParserHeader
/* This file was generated by SableCC (http://www.sablecc.org/). */
package $0$;
import $1$.*;
import $2$.*;
import $3$.*;
import java.util.*;
import java.io.DataInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
@SuppressWarnings("nls")
public class Parser
{
public final Analysis ignoredTokens = new AnalysisAdapter();
protected ArrayList nodeList;
private final Lexer lexer;
private final ListIterator stack = new LinkedList().listIterator();
private int last_pos;
private int last_line;
private Token last_token;
private final TokenIndex converter = new TokenIndex();
private final int[] action = new int[2];
private final static int SHIFT = 0;
private final static int REDUCE = 1;
private final static int ACCEPT = 2;
private final static int ERROR = 3;
public Parser(@SuppressWarnings("hiding") Lexer lexer)
{
this.lexer = lexer;
}
$
Macro:ParserInliningPushHeader
@SuppressWarnings({"unchecked","unused"})
private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
{
this.nodeList = listNode;
$
Macro:ParserNoInliningPushHeader
protected void filter() throws ParserException, LexerException, IOException
{
// Empty body
}
private void push(int numstate, ArrayList listNode, boolean hidden) throws ParserException, LexerException, IOException
{
this.nodeList = listNode;
if(!hidden)
{
filter();
}
$
Macro:ParserCommon
if(!this.stack.hasNext())
{
this.stack.add(new State(numstate, this.nodeList));
return;
}
State s = (State) this.stack.next();
s.state = numstate;
s.nodes = this.nodeList;
}
private int goTo(int index)
{
int state = state();
int low = 1;
int high = gotoTable[index].length - 1;
int value = gotoTable[index][0][1];
while(low <= high)
{
int middle = (low + high) / 2;
if(state < gotoTable[index][middle][0])
{
high = middle - 1;
}
else if(state > gotoTable[index][middle][0])
{
low = middle + 1;
}
else
{
value = gotoTable[index][middle][1];
break;
}
}
return value;
}
private int state()
{
State s = (State) this.stack.previous();
this.stack.next();
return s.state;
}
private ArrayList pop()
{
return ((State) this.stack.previous()).nodes;
}
private int index(Switchable token)
{
this.converter.index = -1;
token.apply(this.converter);
return this.converter.index;
}
@SuppressWarnings("unchecked")
public Start parse() throws ParserException, LexerException, IOException
{
push(0, null$0$);
List<Node> ign = null;
while(true)
{
while(index(this.lexer.peek()) == -1)
{
if(ign == null)
{
ign = new LinkedList<Node>();
}
ign.add(this.lexer.next());
}
if(ign != null)
{
this.ignoredTokens.setIn(this.lexer.peek(), ign);
ign = null;
}
this.last_pos = this.lexer.peek().getPos();
this.last_line = this.lexer.peek().getLine();
this.last_token = this.lexer.peek();
int index = index(this.lexer.peek());
this.action[0] = Parser.actionTable[state()][0][1];
this.action[1] = Parser.actionTable[state()][0][2];
int low = 1;
int high = Parser.actionTable[state()].length - 1;
while(low <= high)
{
int middle = (low + high) / 2;
if(index < Parser.actionTable[state()][middle][0])
{
high = middle - 1;
}
else if(index > Parser.actionTable[state()][middle][0])
{
low = middle + 1;
}
else
{
this.action[0] = Parser.actionTable[state()][middle][1];
this.action[1] = Parser.actionTable[state()][middle][2];
break;
}
}
switch(this.action[0])
{
case SHIFT:
{
ArrayList list = new ArrayList();
list.add(this.lexer.next());
push(this.action[1], list$1$);
}
break;
case REDUCE:
switch(this.action[1])
{
$
Macro:ParserInliningReduce
case $0$: /* reduce $2$ */
{
ArrayList list = new$0$();
push(goTo($1$), list);
}
break;
$
Macro:ParserNoInliningReduce
case $0$: /* reduce $3$ */
{
ArrayList list = new$0$();
push(goTo($1$), list, $2$);
}
break;
$
Macro:ParserParseTail
}
break;
case ACCEPT:
{
EOF node2 = (EOF) this.lexer.next();
$0$ node1 = ($0$) pop().get(0);
Start node = new Start(node1, node2);
return node;
}
case ERROR:
throw new ParserException(this.last_token,
"[" + this.last_line + "," + this.last_pos + "] " +
Parser.errorMessages[Parser.errors[this.action[1]]]);
}
}
}
$
Macro:ParserNewHeader
@SuppressWarnings("unchecked")
ArrayList new$0$() /* reduce $1$ */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
$
Macro:ParserNewBodyDecl
@SuppressWarnings("unused") ArrayList nodeArrayList$0$ = pop();
$
Macro:ParserNewBodyDeclNull
ArrayList nodeArrayList$0$ = null;
$
Macro:ParserBraceOpening
{
// Block
$
Macro:ParserBraceClosing
}
$
Macro:ParserSimpleVariableDeclaration
$0$ $1$Node$2$;
$
Macro:ParserListVariableDeclaration
LinkedList listNode$0$ = new LinkedList();
$
Macro:ParserNullVariableDeclaration
@SuppressWarnings("unused") Object nullNode$0$ = null;
$
Macro:ParserSimpleTerm
$0$Node$1$ = ($2$)nodeArrayList$3$.get($4$);
$
Macro:ParserNewBodyNew
$0$Node$1$ = new $2$(
$
Macro:ParserNew&ListBodyParams
$0$Node$1$
$
Macro:ParserNew&ListBodyParamsNull
$0$
$
Macro:ParserNewBodyNewTail
);
$
Macro:ParserTypedLinkedListAdd
if($2$Node$3$ != null)
{
$0$Node$1$.add($2$Node$3$);
}
$
Macro:ParserTypedLinkedListAddAll
if($2$Node$3$ != null)
{
$0$Node$1$.addAll($2$Node$3$);
}
$
Macro:ParserTypedLinkedListAddAll2
if($2$ != null)
{
$0$Node$1$.addAll($2$);
}
$
Macro:ParserNewBodyListAdd
nodeList.add($0$Node$1$);
$
Macro:ParserNewTail
return nodeList;
}
$
Macro:ParserActionHeader
private static int[][][] actionTable;
/* {
$
Macro:ParserActionTail
};*/
$
Macro:ParserGotoHeader
private static int[][][] gotoTable;
/* {
$
Macro:ParserGotoTail
};*/
$
Macro:ParserErrorsHeader
private static String[] errorMessages;
/* {
$
Macro:ParserErrorsTail
没有合适的资源?快使用搜索试试~ 我知道了~
sablecc-3.2.zip
共225个文件
java:198个
txt:7个
sablecc3:2个
需积分: 5 0 下载量 44 浏览量
2023-01-31
10:17:20
上传
评论
收藏 526KB ZIP 举报
温馨提示
sablecc是一种编译器生成器。
资源推荐
资源详情
资源评论
收起资源包目录
sablecc-3.2.zip (225个子文件)
AUTHORS 268B
AUTHORS 268B
sablecc.bat 526B
ChangeLog 309KB
COPYING-LESSER 26KB
COPYING-LESSER 26KB
parser.dat 20KB
lexer.dat 7KB
sablecc-anttask-1.0.1.tar.gz 16KB
description.html 14KB
README.html 6KB
sablecc.jar 294KB
Parser.java 275KB
ResolveTransformIds.java 34KB
Lexer.java 34KB
GenParser.java 27KB
InternalTransformationsToGrammar.java 21KB
Inlining.java 20KB
ReversedDepthFirstAdapter.java 19KB
DepthFirstAdapter.java 19KB
Grammar.java 18KB
ResolveIds.java 18KB
GenerateAlternativeCodeForParser.java 18KB
ResolveProdTransformIds.java 17KB
GenAlts.java 11KB
GenAnalyses.java 11KB
ResolveAstIds.java 10KB
GenLexer.java 10KB
DFA.java 9KB
ConstructNFA.java 9KB
NFA.java 9KB
SableCC.java 8KB
ComputeCGNomenclature.java 8KB
PrettyPrinter.java 7KB
AnalysisAdapter.java 7KB
IntSet.java 7KB
AddProdTransformAndAltTransform.java 6KB
ComputeInlining.java 6KB
LR1Collection.java 6KB
AGrammar.java 6KB
GenUtils.java 6KB
CharSet.java 5KB
ResolveAltIds.java 5KB
TypedTreeMap.java 5KB
AltTransformAdapter.java 5KB
GenTokens.java 5KB
LR1ItemSet.java 4KB
In_Production.java 4KB
AProd.java 4KB
ATokenDef.java 4KB
SymbolSet.java 4KB
Analysis.java 3KB
LR0Collection.java 3KB
Production.java 3KB
LR0ItemSet.java 3KB
TypedHashMap.java 3KB
AStateList.java 3KB
AAlt.java 3KB
AElem.java 3KB
GenProds.java 3KB
ANewListTerm.java 3KB
AAltTransform.java 3KB
Symbol.java 3KB
ANewTerm.java 3KB
AddEventualEmptyTransformationToProductions.java 3KB
AddAstProductions.java 3KB
TokenIndex.java 3KB
ASimpleListTerm.java 3KB
ComputeSimpleTermPosition.java 3KB
ASimpleTerm.java 3KB
MacroExpander.java 3KB
AOperationSet.java 2KB
AListTerm.java 2KB
AAstAlt.java 2KB
TypedLinkedList.java 2KB
AAstProd.java 2KB
ConstructParserGenerationDatas.java 2KB
LR1Item.java 2KB
TypedLinkedList.java 2KB
Transitions.java 2KB
LR0Item.java 2KB
AStateListTail.java 2KB
AProdName.java 2KB
AIntervalSet.java 2KB
RecursiveProductionsDetections.java 2KB
AHelpers.java 2KB
Start.java 2KB
AHelperDef.java 2KB
AUnExp.java 2KB
ATokens.java 2KB
AProductions.java 2KB
AIgnTokens.java 2KB
ARegExp.java 2KB
DisplayLicense.java 2KB
AConcat.java 2KB
AStates.java 2KB
AAst.java 2KB
AlternativeElementTypes.java 2KB
AcceptStates.java 1KB
Node.java 1KB
共 225 条
- 1
- 2
- 3
资源评论
qq513283439
- 粉丝: 165
- 资源: 140
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于MFC的校园导航程序(使用最短路径dijkstra算法).rar
- Android Studio android APP 视频作为视图背景需要源代码或想了解其实现原理的可以私心我
- com.ZeroneGames.GreenProject.apk
- Python自动化开发入门教程
- 4399GameSem_116_13955_207551_6.apk
- python 3.9.19源码编译包
- php-8.2.18-Win32-vs16-x64.rar
- 字节跳动青训营-抖音项目
- SQL资料手册,语句教程,高级查询语句语法
- 上位机和串口建立 Modbus 协议进行数据传输,并使用 Mysql 数据库存储,能够实现实时温湿度显示和动态变化曲线,历史数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功