// $ANTLR 2.7.4: "Tests.g" -> "TestsTreeParser.java"$
package cz.muni.fi.bronchus.antlrparsers;
import antlr.TreeParser;
import antlr.Token;
import antlr.collections.AST;
import antlr.RecognitionException;
import antlr.ANTLRException;
import antlr.NoViableAltException;
import antlr.MismatchedTokenException;
import antlr.SemanticException;
import antlr.collections.impl.BitSet;
import antlr.ASTPair;
import antlr.collections.impl.ASTArray;
public class TestsTreeParser extends antlr.TreeParser implements TestsParserTokenTypes
{
java.util.Stack zasobnik = new java.util.Stack();
public TestsTreeParser() {
tokenNames = _tokenNames;
}
public final String expr(AST _t) throws RecognitionException {
String o;
AST expr_AST_in = (_t == ASTNULL) ? null : (AST)_t;
AST i1 = null;
AST i2 = null;
AST i3 = null;
AST i4 = null;
AST i5 = null;
AST i6 = null;
AST i7 = null;
AST i8 = null;
AST i9 = null;
AST i10 = null;
String a,b;
o="";
if (zasobnik.empty())
zasobnik.push("expr");
if (_t==null) _t=ASTNULL;
switch ( _t.getType()) {
case EQUAL:
{
AST __t69 = _t;
AST tmp25_AST_in = (AST)_t;
match(_t,EQUAL);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t69;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case NOTEQUAL:
{
AST __t70 = _t;
AST tmp26_AST_in = (AST)_t;
match(_t,NOTEQUAL);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t70;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case AND:
{
AST __t71 = _t;
AST tmp27_AST_in = (AST)_t;
match(_t,AND);
_t = _t.getFirstChild();
if (((String)zasobnik.lastElement()).compareTo("and")!=0)
{
o = "\n";
zasobnik.push("and");
}
a=expr(_t);
_t = _retTree;
if (((String)zasobnik.lastElement()).compareTo("or")==0)
{
zasobnik.pop();
a=a+"\n";
} else
if (((String)zasobnik.lastElement()).compareTo("not")==0)
{
zasobnik.pop();
a=a+"\n";
}
b=expr(_t);
_t = _retTree;
if (((String)zasobnik.lastElement()).compareTo("or")==0)
{
zasobnik.pop();
b=b+"\n";
} else
if (((String)zasobnik.lastElement()).compareTo("not")==0)
{
zasobnik.pop();
b=b+"\n";
}
_t = __t71;
_t = _t.getNextSibling();
o = o+a+b;
break;
}
case OR:
{
AST __t72 = _t;
AST tmp28_AST_in = (AST)_t;
match(_t,OR);
_t = _t.getFirstChild();
if (((String)zasobnik.lastElement()).compareTo("or")!=0)
{
o = "\n";
zasobnik.push("or");
}
a=expr(_t);
_t = _retTree;
if (((String)zasobnik.lastElement()).compareTo("and")==0)
{
zasobnik.pop();
a=a+"\n";
} else
if (((String)zasobnik.lastElement()).compareTo("not")==0)
{
zasobnik.pop();
a=a+"\n";
}
b=expr(_t);
_t = _retTree;
if (((String)zasobnik.lastElement()).compareTo("and")==0)
{
zasobnik.pop();
b=b+"\n";
} else
if (((String)zasobnik.lastElement()).compareTo("not")==0)
{
zasobnik.pop();
b=b+"\n";
}
_t = __t72;
_t = _t.getNextSibling();
o = o+a+b;
break;
}
case NOT:
{
AST __t73 = _t;
AST tmp29_AST_in = (AST)_t;
match(_t,NOT);
_t = _t.getFirstChild();
o="\n";
zasobnik.push("not");
a=expr(_t);
_t = _retTree;
if (((String)zasobnik.lastElement()).compareTo("and")==0)
{
zasobnik.pop();
a=a+"\n";
}
if (((String)zasobnik.lastElement()).compareTo("or")==0)
{
zasobnik.pop();
a=a+"\n";
}
_t = __t73;
_t = _t.getNextSibling();
o = o+a;
break;
}
case LT:
{
AST __t74 = _t;
AST tmp30_AST_in = (AST)_t;
match(_t,LT);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t74;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case GT:
{
AST __t75 = _t;
AST tmp31_AST_in = (AST)_t;
match(_t,GT);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t75;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case LE:
{
AST __t76 = _t;
AST tmp32_AST_in = (AST)_t;
match(_t,LE);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t76;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case GE:
{
AST __t77 = _t;
AST tmp33_AST_in = (AST)_t;
match(_t,GE);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
b=expr(_t);
_t = _retTree;
_t = __t77;
_t = _t.getNextSibling();
o = ""+b+"\n";
break;
}
case LETTER:
{
i1 = (AST)_t;
match(_t,LETTER);
_t = _t.getNextSibling();
o = i1.getText();
break;
}
case TRUE_LIT:
{
i2 = (AST)_t;
match(_t,TRUE_LIT);
_t = _t.getNextSibling();
o = i2.getText();
break;
}
case FALSE_LIT:
{
i3 = (AST)_t;
match(_t,FALSE_LIT);
_t = _t.getNextSibling();
o = i3.getText();
break;
}
case INT_CONST:
{
i4 = (AST)_t;
match(_t,INT_CONST);
_t = _t.getNextSibling();
o = i4.getText();
break;
}
case FLT_CONST:
{
i5 = (AST)_t;
match(_t,FLT_CONST);
_t = _t.getNextSibling();
o = i5.getText();
break;
}
case BINARY_INTEGER:
{
i6 = (AST)_t;
match(_t,BINARY_INTEGER);
_t = _t.getNextSibling();
o = i6.getText();
break;
}
case OCTAL_INTEGER:
{
i7 = (AST)_t;
match(_t,OCTAL_INTEGER);
_t = _t.getNextSibling();
o = i7.getText();
break;
}
case HEXADECIMAL_INTEGER:
{
i8 = (AST)_t;
match(_t,HEXADECIMAL_INTEGER);
_t = _t.getNextSibling();
o = i8.getText();
break;
}
case STR_CONST:
{
i9 = (AST)_t;
match(_t,STR_CONST);
_t = _t.getNextSibling();
o = i9.getText();
break;
}
case PORADI_INT_CONST:
{
i10 = (AST)_t;
match(_t,PORADI_INT_CONST);
_t = _t.getNextSibling();
o = i10.getText();
break;
}
case SEMI:
{
AST __t78 = _t;
AST tmp34_AST_in = (AST)_t;
match(_t,SEMI);
_t = _t.getFirstChild();
a=expr(_t);
_t = _retTree;
_t = __t78;
_t = _t.getNextSibling();
o=a;
while (zasobnik.empty()==false) {
String s=(String)zasobnik.pop();
if (s.compareTo("and")==0) { o=o+"\n"; }
if (s.compareTo("or")==0) { o=o+"\n"; }
if (s.compareTo("not")==0) { o=o+"\n"; }
}
break;
}
default:
{
throw new NoViableAltException(_t);
}
}
_retTree = _t;
return o;
}
public static final String[] _tokenNames = {
"<0>",
"EOF",
"<2>",
"NULL_TREE_LOOKAHEAD",
"SEMI",
"OR",
"AND",
"LETTER",
"EQUAL",
"NOTEQUAL",
"LT",
"GT",
"LE",
"GE",
"NOT",
"LPAREN",
"RPAREN",
"PLUS",
"MINUS",
"ORDER_INT_CONST",
"INT_CONST",
"FLT_CONST",
"BINARY_INTEGER",
"OCTAL_INTEGER",
"HEXADECIMAL_INTEGER",
"TRUE_LIT",
"FALSE_LIT",
"STR_CONST",
"EXPONENT",
"WS",
"PORADI_INT_CONST"
};
}