/* This file was generated by SableCC (http://www.sablecc.org/). */
package net.sourceforge.texlipse.bibparser.parser;
import net.sourceforge.texlipse.bibparser.lexer.*;
import net.sourceforge.texlipse.bibparser.node.*;
import net.sourceforge.texlipse.bibparser.analysis.*;
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;
}
@SuppressWarnings({"unchecked","unused"})
private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
{
this.nodeList = listNode;
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);
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);
}
break;
case REDUCE:
switch(this.action[1])
{
case 0: /* reduce AAbibtex1Bibtex */
{
ArrayList list = new0();
push(goTo(0), list);
}
break;
case 1: /* reduce AAbibtex2Bibtex */
{
ArrayList list = new1();
push(goTo(0), list);
}
break;
case 2: /* reduce ABibstreBibEntry */
{
ArrayList list = new2();
push(goTo(1), list);
}
break;
case 3: /* reduce ABibeBibEntry */
{
ArrayList list = new3();
push(goTo(1), list);
}
break;
case 4: /* reduce ABibtaskBibEntry */
{
ArrayList list = new4();
push(goTo(1), list);
}
break;
case 5: /* reduce AAstrbracestringentry1StringEntry */
{
ArrayList list = new5();
push(goTo(2), list);
}
break;
case 6: /* reduce AAstrbracestringentry2StringEntry */
{
ArrayList list = new6();
push(goTo(2), list);
}
break;
case 7: /* reduce AAstrbracestringentry3StringEntry */
{
ArrayList list = new7();
push(goTo(2), list);
}
break;
case 8: /* reduce AAstrbracestringentry4StringEntry */
{
ArrayList list = new8();
push(goTo(2), list);
}
break;
case 9: /* reduce AAstrparenstringentry1StringEntry */
{
ArrayList list = new9();
push(goTo(2), list);
}
break;
case 10: /* reduce AAstrparenstringentry2StringEntry */
{
ArrayList list = new10();
push(goTo(2), list);
}
break;
case 11: /* reduce AAstrparenstringentry3StringEntry */
{
ArrayList list = new11();
push(goTo(2), list);
}
break;
case 12: /* reduce AAstrparenstringentry4StringEntry */
{
ArrayList list = new12();
push(goTo(2), list);
}
break;
case 13: /* reduce AAentrybraceentry1Entry */
{
ArrayList list = new13();
push(goTo(3), list);
}
break;
case 14: /* reduce AAentrybraceentry2Entry */
{
ArrayList list = new14();
push(goTo(3), list);
}
break;
case 15: /* reduce AAentryparenentry1Entry */
{
ArrayList list = new15();
push(goTo(3), list);
}
break;
case 16: /* reduce AAentryparenentry2Entry */
{
ArrayList list = new16();
push(goTo(3), list);
}
break;
case 17: /* reduce AEntryDef */
{
ArrayList list = new17();
push(goTo(4), list);
}
break;
case 18: /* reduce AAkeyvaldecl1KeyvalDecl */
{
ArrayList list = new18();
push(goTo(5), list);
}
break;
case 19: /* reduce AAkeyvaldecl2KeyvalDecl */
{
ArrayList list = new19();
push(goTo(5), list);
}
break;
case 20: /* reduce AValueBValOrSid */
{
ArrayList list = new20();
push(goTo(6), list);
}
break;
case 21: /* reduce AAvalueqvalorsid1ValOrSid */
{
ArrayList list = new21();
push(goTo(6), list);
}
break;
case 22: /* reduce AAvalueqvalorsid2ValOrSid */
{
ArrayList list = new22();
push(goTo(6), list);
}
break;
case 23: /* reduce ANumValOrSid */
{
ArrayList list = new23();
push(goTo(6), list);
}
break;
case 24: /* reduce AIdValOrSid */
{
ArrayList list = new24();
push(goTo(6), list);
}
break;
case 25: /* reduce AConcat */
{
ArrayList list = new25();
push(goTo(7), list);
}
break;
case 26: /* reduce ATerminal$BibEntry */
{
ArrayList list = new26();
push(goTo(8), list);
}
break;
case 27: /* reduce ANonTerminal$BibEntry */
{
ArrayList list = new27();
push(goTo(8), list);
}
break;
case 28: /* reduce ATerminal$KeyvalDecl */
{
ArrayList list = new28();
push(goTo(9), list);
}
break;
case 29: /* reduce ANonTerminal$KeyvalDecl */
{
ArrayList list = new29();
push(goTo(9), list);
}
break;
case 30: /* reduce ATerminal$Concat */
{
ArrayList list = new30();
push(goTo(10), list);
}
break;
case 31: /* reduce ANonTerminal$Concat */
{
ArrayList list = new31();
push(goTo(10), list);
}
break;
}
break;
case ACCEPT:
{
EOF node2 = (EOF) this.lexer.next();
PBibtex node1 = (PBibtex) 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]]]);
}
}
}
@SuppressWarnings("unchecked")
ArrayList new0() /* reduce AAbibtex1Bibtex */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
PBibtex pbibtexNode1;
{
// Block
LinkedList listNode2 = new LinkedList();
{
// Block
}
pbibtexNode1 = new ABibtex(listNode2);
}
nodeList.add(pbibtexNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new1() /* reduce AAbibtex2Bibtex */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PBibtex pbibtexNode1;
{
// Block
LinkedList listNode3 = new LinkedList();
{
// Block
LinkedList listNode2 = new LinkedList();
listNode2 = (LinkedList)nodeArrayList1.get(0);
if(listNode2 != null)
{
listNode3.addAll(listNode2);
}
}
pbibtexNode1 = new ABibtex(listNode3);
}
nodeList.add(pbibtexNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new2() /* reduce ABibstreBibEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PBibEntry pbibentryNode1;
{
// Block
PStringEntry pstringentryNode2;
pstringentryNode2 = (PStringEntry)nodeArrayList1.get(0);
pbibentryNode1 = new ABibstreBibEntry(pstringentryNode2);
}
nodeList.add(pbibentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new3() /* reduce ABibeBibEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PBibEntry pbibentryNode1;
{
// Block
PEntry pentryNode2;
pentryNode2 = (PEntry)nodeArrayList1.get(0);
pbibentryNode1 = new ABibeBibEntry(pentryNode2);
}
nodeList.add(pbibentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new4() /* reduce ABibtaskBibEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PBibEntry pbibentryNode1;
{
// Block
TTaskcomment ttaskcommentNode2;
ttaskcommentNode2 = (TTaskcomment)nodeArrayList1.get(0);
pbibentryNode1 = new ABibtaskBibEntry(ttaskcommentNode2);
}
nodeList.add(pbibentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new5() /* reduce AAstrbracestringentry1StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList5.get(0);
pstringentryNode1 = new AStrbraceStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new6() /* reduce AAstrbracestringentry2StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList6.get(0);
pstringentryNode1 = new AStrbraceStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new7() /* reduce AAstrbracestringentry3StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList5.get(0);
pstringentryNode1 = new AStrbraceStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new8() /* reduce AAstrbracestringentry4StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList8 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList6.get(0);
pstringentryNode1 = new AStrbraceStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new9() /* reduce AAstrparenstringentry1StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList5.get(0);
pstringentryNode1 = new AStrparenStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new10() /* reduce AAstrparenstringentry2StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList6.get(0);
pstringentryNode1 = new AStrparenStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new11() /* reduce AAstrparenstringentry3StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList5.get(0);
pstringentryNode1 = new AStrparenStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new12() /* reduce AAstrparenstringentry4StringEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList8 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList7 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PStringEntry pstringentryNode1;
{
// Block
TIdentifier tidentifierNode2;
TStringLiteral tstringliteralNode3;
tidentifierNode2 = (TIdentifier)nodeArrayList3.get(0);
tstringliteralNode3 = (TStringLiteral)nodeArrayList6.get(0);
pstringentryNode1 = new AStrparenStringEntry(tidentifierNode2, tstringliteralNode3);
}
nodeList.add(pstringentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new13() /* reduce AAentrybraceentry1Entry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PEntry pentryNode1;
{
// Block
PEntryDef pentrydefNode2;
TIdentifier tidentifierNode3;
LinkedList listNode5 = new LinkedList();
TRBrace trbraceNode6;
pentrydefNode2 = (PEntryDef)nodeArrayList1.get(0);
tidentifierNode3 = (TIdentifier)nodeArrayList3.get(0);
{
// Block
LinkedList listNode4 = new LinkedList();
listNode4 = (LinkedList)nodeArrayList4.get(0);
if(listNode4 != null)
{
listNode5.addAll(listNode4);
}
}
trbraceNode6 = (TRBrace)nodeArrayList5.get(0);
pentryNode1 = new AEntrybraceEntry(pentrydefNode2, tidentifierNode3, listNode5, trbraceNode6);
}
nodeList.add(pentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new14() /* reduce AAentrybraceentry2Entry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PEntry pentryNode1;
{
// Block
PEntryDef pentrydefNode2;
TIdentifier tidentifierNode3;
LinkedList listNode5 = new LinkedList();
TRBrace trbraceNode6;
pentrydefNode2 = (PEntryDef)nodeArrayList1.get(0);
tidentifierNode3 = (TIdentifier)nodeArrayList3.get(0);
{
// Block
LinkedList listNode4 = new LinkedList();
listNode4 = (LinkedList)nodeArrayList4.get(0);
if(listNode4 != null)
{
listNode5.addAll(listNode4);
}
}
trbraceNode6 = (TRBrace)nodeArrayList6.get(0);
pentryNode1 = new AEntrybraceEntry(pentrydefNode2, tidentifierNode3, listNode5, trbraceNode6);
}
nodeList.add(pentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new15() /* reduce AAentryparenentry1Entry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PEntry pentryNode1;
{
// Block
PEntryDef pentrydefNode2;
TIdentifier tidentifierNode3;
LinkedList listNode5 = new LinkedList();
TRParen trparenNode6;
pentrydefNode2 = (PEntryDef)nodeArrayList1.get(0);
tidentifierNode3 = (TIdentifier)nodeArrayList3.get(0);
{
// Block
LinkedList listNode4 = new LinkedList();
listNode4 = (LinkedList)nodeArrayList4.get(0);
if(listNode4 != null)
{
listNode5.addAll(listNode4);
}
}
trparenNode6 = (TRParen)nodeArrayList5.get(0);
pentryNode1 = new AEntryparenEntry(pentrydefNode2, tidentifierNode3, listNode5, trparenNode6);
}
nodeList.add(pentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new16() /* reduce AAentryparenentry2Entry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList6 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PEntry pentryNode1;
{
// Block
PEntryDef pentrydefNode2;
TIdentifier tidentifierNode3;
LinkedList listNode5 = new LinkedList();
TRParen trparenNode6;
pentrydefNode2 = (PEntryDef)nodeArrayList1.get(0);
tidentifierNode3 = (TIdentifier)nodeArrayList3.get(0);
{
// Block
LinkedList listNode4 = new LinkedList();
listNode4 = (LinkedList)nodeArrayList4.get(0);
if(listNode4 != null)
{
listNode5.addAll(listNode4);
}
}
trparenNode6 = (TRParen)nodeArrayList6.get(0);
pentryNode1 = new AEntryparenEntry(pentrydefNode2, tidentifierNode3, listNode5, trparenNode6);
}
nodeList.add(pentryNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new17() /* reduce AEntryDef */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PEntryDef pentrydefNode1;
{
// Block
TEntryName tentrynameNode2;
tentrynameNode2 = (TEntryName)nodeArrayList1.get(0);
pentrydefNode1 = new AEntryDef(tentrynameNode2);
}
nodeList.add(pentrydefNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new18() /* reduce AAkeyvaldecl1KeyvalDecl */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PKeyvalDecl pkeyvaldeclNode1;
{
// Block
TIdentifier tidentifierNode2;
PValOrSid pvalorsidNode3;
LinkedList listNode4 = new LinkedList();
tidentifierNode2 = (TIdentifier)nodeArrayList2.get(0);
pvalorsidNode3 = (PValOrSid)nodeArrayList4.get(0);
{
// Block
}
pkeyvaldeclNode1 = new AKeyvalDecl(tidentifierNode2, pvalorsidNode3, listNode4);
}
nodeList.add(pkeyvaldeclNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new19() /* reduce AAkeyvaldecl2KeyvalDecl */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList5 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList4 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PKeyvalDecl pkeyvaldeclNode1;
{
// Block
TIdentifier tidentifierNode2;
PValOrSid pvalorsidNode3;
LinkedList listNode5 = new LinkedList();
tidentifierNode2 = (TIdentifier)nodeArrayList2.get(0);
pvalorsidNode3 = (PValOrSid)nodeArrayList4.get(0);
{
// Block
LinkedList listNode4 = new LinkedList();
listNode4 = (LinkedList)nodeArrayList5.get(0);
if(listNode4 != null)
{
listNode5.addAll(listNode4);
}
}
pkeyvaldeclNode1 = new AKeyvalDecl(tidentifierNode2, pvalorsidNode3, listNode5);
}
nodeList.add(pkeyvaldeclNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new20() /* reduce AValueBValOrSid */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PValOrSid pvalorsidNode1;
{
// Block
TStringLiteral tstringliteralNode2;
tstringliteralNode2 = (TStringLiteral)nodeArrayList1.get(0);
pvalorsidNode1 = new AValueBValOrSid(tstringliteralNode2);
}
nodeList.add(pvalorsidNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new21() /* reduce AAvalueqvalorsid1ValOrSid */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PValOrSid pvalorsidNode1;
{
// Block
@SuppressWarnings("unused") Object nullNode2 = null;
pvalorsidNode1 = new AValueQValOrSid(null);
}
nodeList.add(pvalorsidNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new22() /* reduce AAvalueqvalorsid2ValOrSid */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PValOrSid pvalorsidNode1;
{
// Block
TStringLiteral tstringliteralNode2;
tstringliteralNode2 = (TStringLiteral)nodeArrayList2.get(0);
pvalorsidNode1 = new AValueQValOrSid(tstringliteralNode2);
}
nodeList.add(pvalorsidNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new23() /* reduce ANumValOrSid */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PValOrSid pvalorsidNode1;
{
// Block
TNumber tnumberNode2;
tnumberNode2 = (TNumber)nodeArrayList1.get(0);
pvalorsidNode1 = new ANumValOrSid(tnumberNode2);
}
nodeList.add(pvalorsidNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new24() /* reduce AIdValOrSid */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PValOrSid pvalorsidNode1;
{
// Block
TIdentifier tidentifierNode2;
tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0);
pvalorsidNode1 = new AIdValOrSid(tidentifierNode2);
}
nodeList.add(pvalorsidNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new25() /* reduce AConcat */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
PConcat pconcatNode1;
{
// Block
PValOrSid pvalorsidNode2;
pvalorsidNode2 = (PValOrSid)nodeArrayList2.get(0);
pconcatNode1 = new AConcat(pvalorsidNode2);
}
nodeList.add(pconcatNode1);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new26() /* reduce ATerminal$BibEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode2 = new LinkedList();
{
// Block
PBibEntry pbibentryNode1;
pbibentryNode1 = (PBibEntry)nodeArrayList1.get(0);
if(pbibentryNode1 != null)
{
listNode2.add(pbibentryNode1);
}
}
nodeList.add(listNode2);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new27() /* reduce ANonTerminal$BibEntry */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode3 = new LinkedList();
{
// Block
LinkedList listNode1 = new LinkedList();
PBibEntry pbibentryNode2;
listNode1 = (LinkedList)nodeArrayList1.get(0);
pbibentryNode2 = (PBibEntry)nodeArrayList2.get(0);
if(listNode1 != null)
{
listNode3.addAll(listNode1);
}
if(pbibentryNode2 != null)
{
listNode3.add(pbibentryNode2);
}
}
nodeList.add(listNode3);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new28() /* reduce ATerminal$KeyvalDecl */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode2 = new LinkedList();
{
// Block
PKeyvalDecl pkeyvaldeclNode1;
pkeyvaldeclNode1 = (PKeyvalDecl)nodeArrayList1.get(0);
if(pkeyvaldeclNode1 != null)
{
listNode2.add(pkeyvaldeclNode1);
}
}
nodeList.add(listNode2);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new29() /* reduce ANonTerminal$KeyvalDecl */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode3 = new LinkedList();
{
// Block
LinkedList listNode1 = new LinkedList();
PKeyvalDecl pkeyvaldeclNode2;
listNode1 = (LinkedList)nodeArrayList1.get(0);
pkeyvaldeclNode2 = (PKeyvalDecl)nodeArrayList2.get(0);
if(listNode1 != null)
{
listNode3.addAll(listNode1);
}
if(pkeyvaldeclNode2 != null)
{
listNode3.add(pkeyvaldeclNode2);
}
}
nodeList.add(listNode3);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new30() /* reduce ATerminal$Concat */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode2 = new LinkedList();
{
// Block
PConcat pconcatNode1;
pconcatNode1 = (PConcat)nodeArrayList1.get(0);
if(pconcatNode1 != null)
{
listNode2.add(pconcatNode1);
}
}
nodeList.add(listNode2);
return nodeList;
}
@SuppressWarnings("unchecked")
ArrayList new31() /* reduce ANonTerminal$Concat */
{
@SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
@SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
@SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
LinkedList listNode3 = new LinkedList();
{
// Block
LinkedList listNode1 = new LinkedList();
PConcat pconcatNode2;
listNode1 = (LinkedList)nodeArrayList1.get(0);
pconcatNode2 = (PConcat)nodeArrayList2.get(0);
if(listNode1 != null)
{
listNode3.addAll(listNode1);
}
if(pconcatNode2 != null)
{
listNode3.add(pconcatNode2);
}
}
nodeList.add(listNode3);
return nodeList;
}
private static int[][][] actionTable;
/* {
{{-1, REDUCE, 0}, {0, SHIFT, 1}, {1, SHIFT, 2}, {4, SHIFT, 3}, },
{{-1, REDUCE, 4}, },
{{-1, ERROR, 2}, {5, SHIFT, 10}, {8, SHIFT, 11}, },
{{-1, REDUCE, 17}, },
{{-1, ERROR, 4}, {17, ACCEPT, -1}, },
{{-1, REDUCE, 26}, },
{{-1, REDUCE, 2}, },
{{-1, REDUCE, 3}, },
{{-1, ERROR, 8}, {5, SHIFT, 12}, {8, SHIFT, 13}, },
{{-1, REDUCE, 1}, {0, SHIFT, 1}, {1, SHIFT, 2}, {4, SHIFT, 3}, },
{{-1, ERROR, 10}, {14, SHIFT, 15}, },
{{-1, ERROR, 11}, {14, SHIFT, 16}, },
{{-1, ERROR, 12}, {14, SHIFT, 17}, },
{{-1, ERROR, 13}, {14, SHIFT, 18}, },
{{-1, REDUCE, 27}, },
{{-1, ERROR, 15}, {11, SHIFT, 19}, },
{{-1, ERROR, 16}, {11, SHIFT, 20}, },
{{-1, ERROR, 17}, {10, SHIFT, 21}, },
{{-1, ERROR, 18}, {10, SHIFT, 21}, },
{{-1, ERROR, 19}, {15, SHIFT, 25}, {16, SHIFT, 26}, },
{{-1, ERROR, 20}, {15, SHIFT, 27}, {16, SHIFT, 28}, },
{{-1, ERROR, 21}, {14, SHIFT, 29}, },
{{-1, REDUCE, 28}, },
{{-1, ERROR, 23}, {6, SHIFT, 30}, {10, SHIFT, 31}, },
{{-1, ERROR, 24}, {9, SHIFT, 33}, {10, SHIFT, 34}, },
{{-1, ERROR, 25}, {16, SHIFT, 35}, },
{{-1, ERROR, 26}, {6, SHIFT, 36}, {15, SHIFT, 37}, },
{{-1, ERROR, 27}, {16, SHIFT, 38}, },
{{-1, ERROR, 28}, {9, SHIFT, 39}, {15, SHIFT, 40}, },
{{-1, ERROR, 29}, {11, SHIFT, 41}, },
{{-1, REDUCE, 13}, },
{{-1, ERROR, 31}, {6, SHIFT, 42}, {14, SHIFT, 29}, },
{{-1, REDUCE, 29}, },
{{-1, REDUCE, 15}, },
{{-1, ERROR, 34}, {9, SHIFT, 43}, {14, SHIFT, 29}, },
{{-1, ERROR, 35}, {6, SHIFT, 44}, {15, SHIFT, 45}, },
{{-1, REDUCE, 5}, },
{{-1, ERROR, 37}, {6, SHIFT, 46}, },
{{-1, ERROR, 38}, {9, SHIFT, 47}, {15, SHIFT, 48}, },
{{-1, REDUCE, 9}, },
{{-1, ERROR, 40}, {9, SHIFT, 49}, },
{{-1, ERROR, 41}, {13, SHIFT, 50}, {14, SHIFT, 51}, {15, SHIFT, 52}, {16, SHIFT, 53}, },
{{-1, REDUCE, 14}, },
{{-1, REDUCE, 16}, },
{{-1, REDUCE, 6}, },
{{-1, ERROR, 45}, {6, SHIFT, 55}, },
{{-1, REDUCE, 7}, },
{{-1, REDUCE, 10}, },
{{-1, ERROR, 48}, {9, SHIFT, 56}, },
{{-1, REDUCE, 11}, },
{{-1, REDUCE, 23}, },
{{-1, REDUCE, 24}, },
{{-1, ERROR, 52}, {15, SHIFT, 57}, {16, SHIFT, 58}, },
{{-1, REDUCE, 20}, },
{{-1, REDUCE, 18}, {12, SHIFT, 59}, },
{{-1, REDUCE, 8}, },
{{-1, REDUCE, 12}, },
{{-1, REDUCE, 21}, },
{{-1, ERROR, 58}, {15, SHIFT, 62}, },
{{-1, ERROR, 59}, {13, SHIFT, 50}, {14, SHIFT, 51}, {15, SHIFT, 52}, {16, SHIFT, 53}, },
{{-1, REDUCE, 30}, },
{{-1, REDUCE, 19}, {12, SHIFT, 59}, },
{{-1, REDUCE, 22}, },
{{-1, REDUCE, 25}, },
{{-1, REDUCE, 31}, },
};*/
private static int[][][] gotoTable;
/* {
{{-1, 4}, },
{{-1, 5}, {9, 14}, },
{{-1, 6}, },
{{-1, 7}, },
{{-1, 8}, },
{{-1, 22}, {23, 32}, {24, 32}, },
{{-1, 54}, {59, 63}, },
{{-1, 60}, {61, 64}, },
{{-1, 9}, },
{{-1, 23}, {18, 24}, },
{{-1, 61}, },
};*/
private static String[] errorMessages;
/* {
"expecting: taskcomment, estring, entry name, EOF",
"expecting: '{', '('",
"expecting: EOF",
"expecting: identifier",
"expecting: '='",
"expecting: ','",
"expecting: '"', string literal",
"expecting: '}', ')', ','",
"expecting: '}', ','",
"expecting: ')', ','",
"expecting: string literal",
"expecting: '}', '"'",
"expecting: ')', '"'",
"expecting: '}', identifier",
"expecting: ')', identifier",
"expecting: '}'",
"expecting: ')'",
"expecting: number, identifier, '"', string literal",
"expecting: '}', ')', ',', '#'",
"expecting: '"'",
};*/
private static int[] errors;
/* {
0, 0, 1, 1, 2, 0, 0, 0, 1, 0, 3, 3, 3, 3, 0, 4, 4, 5, 5, 6, 6, 3, 7, 8, 9, 10, 11, 10, 12, 4, 0, 13, 7, 0, 14, 11, 0, 15, 12, 0, 16, 17, 0, 0, 0, 15, 0, 0, 16, 0, 18, 18, 6, 18, 18, 0, 0, 18, 19, 17, 18, 18, 18, 18, 18,
};*/
static
{
try
{
DataInputStream s = new DataInputStream(
new BufferedInputStream(
Parser.class.getResourceAsStream("parser.dat")));
// read actionTable
int length = s.readInt();
Parser.actionTable = new int[length][][];
for(int i = 0; i < Parser.actionTable.length; i++)
{
length = s.readInt();
Parser.actionTable[i] = new int[length][3];
for(int j = 0; j < Parser.actionTable[i].length; j++)
{
for(int k = 0; k < 3; k++)
{
Parser.actionTable[i][j][k] = s.readInt();
}
}
}
// read gotoTable
length = s.readInt();
gotoTable = new int[length][][];
for(int i = 0; i < gotoTable.length; i++)
{
length = s.readInt();
gotoTable[i] = new int[length][2];
for(int j = 0; j < gotoTable[i].length; j++)
{
for(int k = 0; k < 2; k++)
{
gotoTable[i][j][k] = s.readInt();
}
}
}
// read errorMessages
length = s.readInt();
errorMessages = new String[length];
for(int i = 0; i < errorMessages.length; i++)
{
length = s.readInt();
StringBuffer buffer = new StringBuffer();
for(int j = 0; j < length; j++)
{
buffer.append(s.readChar());
}
errorMessages[i] = buffer.toString();
}
// read errors
length = s.readInt();
errors = new int[length];
for(int i = 0; i < errors.length; i++)
{
errors[i] = s.readInt();
}
s.close();
}
catch(Exception e)
{
throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted.");
}
}
}