/* Generated By:JJTree&JavaCC: Do not edit this line. SparcTranslator.java */
package parser;
import java.io.*;
import sorts.*;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
import java.util.HashSet;
import java.util.Arrays;
import java.util.Set;
import translating.Translator;
import typechecking.TypeChecker;
import translating.InstanceGenerator;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;
import querying.QueryEngine;
import querying.parsing.AnswerSets.AnswerSetParser;
import querying.parsing.AnswerSets.ClingoAnswerSetParser;
import querying.parsing.AnswerSets.DLVAnswerSetParser;
import configuration.ASPSolver;
import externaltools.ClingoSolver;
import externaltools.DLVSolver;
import externaltools.ExternalSolver;
import configuration.Settings;
import solving.Runner;
class Arguments
{
@ Parameter(description = "Input files") List < String > inputFiles = new ArrayList < String > ();
@ Parameter(names = "-wasp", description = "Generate ASP debugging rules") boolean generateASPWarnings = false;
@ Parameter(names = "-wcon", description = "Generate warnings based on translation to clingcon") boolean generateClingconWarnings = false;
@ Parameter(names =
{
"-Help", "-H", "-help", "--Help", "--help", "-h"
}
, help = true) boolean help;
@ Parameter(names = "--disable-empty-sort-check", description = "Disable checking of sorts for being non-empty") boolean noEmptyCheck = false;
@ Parameter(names = "-o", description = "Output file") String outputFile = null;
@ Parameter(names = "-q", description = "Query") String query = null;
@ Parameter(names = "-A", description = "outputAnswerSets") boolean outputAnswerSets = false;
@ Parameter(names = "-web", description = "special things for online ide") boolean web = false;
@ Parameter(names = "-loutput", description = "output answer sets in L format") boolean lout = false;
@ Parameter(names = "-solver", description = "selected solver") String solver = null;
@ Parameter(names = "-solveropts", description = "options passed to internal solver")
String solverOpts = null;
}
class Pair
{
SimpleNode first;
boolean second;
public Pair(SimpleNode first, boolean second)
{
this.first = first;
this.second = second;
}
}
@ SuppressWarnings("all") public class SparcTranslator/*@bgen(jjtree)*/implements SparcTranslatorTreeConstants, SparcTranslatorConstants {/*@bgen(jjtree)*/
protected JJTSparcTranslatorState jjtree = new JJTSparcTranslatorState();// mapping from sort names to sort expressions assigned to the sorts
public HashMap < String, ASTsortExpression > sortNameToExpression;
// mapping from predicate names to a list of names of sorts describing
// arguments
public HashMap < String, ArrayList < String >> predicateArgumentSorts;
// labels of cr-rules
public HashSet < String > crRuleLabels;
//sort occurred explicitly in the program
public HashSet < String > generatingSorts;
// mapping from constant names to their values.
public HashMap < String, Long > constantsMapping;
// warnings found during the translation
private ArrayList < String > warnings;
// set of all terms occurring in curly brackets and their subterms
public HashSet < String > curlyBracketTerms;
// set of all defined record names:
public HashSet < String > definedRecordNames;
// hashmap from original sort names to sort names which match ASP syntax
public HashMap<String, String > sortRenaming;
// controlling the parsing
boolean inHead = false;
boolean inDisplay = true;
int anonSortId = 0;
/**
* Remove from args all
*/
private static HashSet < String > fetchOptions(String [] args)
{
HashSet < String > options = new HashSet < String > ();
for (int i = 0; i < args.length; i++)
{
if (args [i].startsWith("--"))
{
options.add(args [i]);
args = ArrayUtils.removeNthElement(args, i);
i--;
}
}
return options;
}
private static final Set < String > supportedSolvers = new HashSet < String > (Arrays.asList("clingo", "dlv"));
public static void main(String [] args)
{
Arguments jArguments = new Arguments();
try
{
new JCommander(jArguments, args);
}
catch (ParameterException ex)
{
System.err.println("ERROR: " + ex.getMessage());
return;
}
if(!jArguments.lout)
System.err.println("SPARC V2.52");
if (jArguments.help)
{
show_usage();
return;
}
if(!jArguments.outputAnswerSets && jArguments.solverOpts != null &&
(jArguments.solverOpts.indexOf("filter=") !=-1 || jArguments.solverOpts.indexOf("-n=") !=-1 ||
jArguments.solverOpts.matches("\u005c\u005cs\u005c\u005cd+\u005c\u005cs")))
{
System.err.println("ERROR: Some of the solver arguments from the list \u005c""+jArguments.solverOpts+ "\u005c" \u005cncan change"+
" or filter the computed answer sets. Either remove them or\u005cnuse the argument -A to let SPARC compute the answer sets.");
return;
}
if (jArguments.solver != null)
{
if (!supportedSolvers.contains(jArguments.solver))
{
System.err.println("Unknown solver: " + jArguments.solver);
return;
}
}
if (jArguments.solver != null && jArguments.solver.equals("clingo"))
{
Settings.getSingletonInstance().setSolver(ASPSolver.Clingo);
}
Settings.setLOutputFormat(jArguments.lout);
Settings.setWebMode(jArguments.web);
Settings.setEmptySortCheckingDisabled(jArguments.noEmptyCheck);
if (jArguments.solverOpts != null)
{
Settings.getSingletonInstance().setOptions(jArguments.solverOpts);
}
if(jArguments.query != null)
{
Settings.setCommandLineQuery(jArguments.query);
}
Reader sr = null;
Writer out = null;
if (jArguments.outputFile != null)
{
if (new File(jArguments.outputFile).exists() && !new File(jArguments.outputFile).isDirectory())
{
System.err.println("the output file already exists , do you want to overwrite it? y/n:");
char rep;
try
{
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
rep =in.readLine().charAt(0);
}
catch (IOException e)
{
e.printStackTrace();
return;
}
if (rep != 'y' && rep != 'Y')
{
return;
}
}
try
{
out = new FileWriter(jArguments.outputFile);
}
catch (IOException e)
{
e.printStackTrace();
}
}
TypeChecker tc = null;
StringBuilder translatedProgram = new StringBuilder();
SimpleNode programTree = null;
try
{
if (jArguments.inputFiles != null && jArguments.inputFiles.size() != 0)
{
if (jArguments.inputFiles.size() > 1)
{
System.err.println("ERROR: multiple input files");
return;
}
try
{
sr = new FileReader(jArguments.inputFiles.get(0));
}
catch (FileNotFoundException fileException)
{
System.err.println("%INPUT FILE ERROR: " + fileException.getMessage());
return;
}
}
if (sr == null) sr = new InputStreamReader(System.in);
SparcTranslator p = new SparcTranslator(sr);
programTree = p.program();
InstanceGenerator gen = new InstanceGenerator(p.sortNameToExpression);
tc = new TypeChecker(p.sortNameToExpression, p.predicateArgumentSorts, p.constantsMapping, p.curlyBracketTerms, p.definedRecordNames, gen);
Translator tr = new Translator(out, p, gen, jArguments.generateASPWarnings, jArguments.generateClingconWarnings);
if (jArguments.inputFiles.size() != 0)
{
String fileName=getShortFileName(jArguments.inputFiles.get(0));
tr.setInputFileName(fileName);
tc.setInputFileName(fileName);
}
tc.checkRules((ASTprogramRules) programTree.jjtGetChild(2));
tc.checkDisplay((ASTdisplay) programTree.jjtGetChild(3));
translatedProgram.append(tr.translateProgram((ASTprogram) programTree, p.generatingSorts, p.sortRenaming, true));
if(jArguments.outputFile != null)
{
tr.writeTranslatedProgram();
}
}
catch (ParseException pe)
{
System.err.println(pe.getMessage());
return;
}
if(!jArguments.lout)
System.err.println("program translated");
ExternalSolver solver = null;
AnswerSetParser aParser = null;
try
{
if (Settings.getSolver() == ASPSolver.DLV)
{
solver = new DLVSolver(translatedProgram.toString());
aParser = new DLVAnswerSetParser();
}
else
{
solver = new ClingoSolver(translatedProgram.toString());
aParser = new ClingoAnswerSetParser();
}
}
catch (
FileNotFoundException ex)
{
System.err.println(ex.getMessage());
}
if (jArguments.outputAnswerSets)
{
new Runner().outputAnswerSets(programTree, solver);
}
else
{
QueryEngine qe = new QueryEngine(aParser.getAnswerSets(solver.run(true)), tc);
if(jArguments.query != null)
{
qe.answerGroundQuery(jArguments.query);
}
else
{
qe.run();
}
}
}
private boolean isInteger(String s)
{
if(s.length()< 1)
return false;
if (s.length() == 1 && s.charAt(0) == '0') return true;
if (s.charAt(0) == '0') return false;
for (int i = 0; i < s.length(); i++)
{
if (!Character.isDigit(s.charAt(i))) return false;
}
return true;
}
/**
* @return absolute path.
*/
private static String getShortFileName(String fullPath)
{
File file = new File(fullPath);
return file.getName();
}
static final String newLine = System.getProperty("line.separator");
/**
* Output help message
*/
private static void show_usage()
{
System.err.println("usage: sparc filename {options}");
System.err.println(newLine + "Options:" + newLine);
String message = "-A" + newLine +
" " + newLine +
" Compute answer sets of the loaded program." + newLine +
newLine +
"-wcon" + newLine +
" " + newLine +
" Show warnings determined by CLP-based algorithm. See type warnings section in the manual." +
newLine +
"-wasp" + newLine +
" " + newLine +
" Show warnings determined by ASP-based algorithm. See type warnings section in the manual." + newLine +
newLine +
"-solver arg" + newLine +
newLine +
" Specify the solver which will be used for computing answer sets. arg can have two possible values: dlv and clingo. "
+ newLine +
"-solveropts arg" + newLine +
newLine +
" Pass command line arguments to the ASP solver (DLV or Clingo)." + newLine +
" " + newLine +
" Example: -solveropts '-pfilter=p'." + newLine +
newLine +
newLine +
" For the complete list of dlv options, see " + newLine +
" http://www.dlvsystem.com/html/DLV_User_Manual.html " + newLine +
newLine +
newLine +
" For the complete list of clingo options, see " + newLine +
" http://sourceforge.net/projects/potassco/files/potassco_guide/" + newLine +
newLine +
" Note that options '0' and '--shift' are passed to clingo solver by default." + newLine +
newLine +
"-Help, -H, -help, --Help, --help, -h" + newLine +
newLine +
" Show help message." + newLine +
newLine +
"-o arg" + newLine +
newLine +
" Specify the output file where the translated ASP program will be written. arg is the path to the output file." + newLine +
" Note that if the option is not specified, the translated ASP program will not be stored anywhere." + newLine +
newLine +
"input_file " + newLine + newLine +
" Specify the file where the sparc program is located";
System.err.println(message);
}
/**
* Add built-in sorts to sort expressions
*/
public void addBuiltInSorts()
{
HashMap < String, ASTsortExpression > builtInSorts = BuiltIn.getBuiltInSorts();
for (String sortName : builtInSorts.keySet())
{
sortNameToExpression.put(sortName, builtInSorts.get(sortName));
}
}
/**
* Add warning to set of warnings
*/
public void addWarning(String warning)
{
warnings.add(warning);
}
public ArrayList < String > getWarnings()
{
return warnings;
}
final public SimpleNode program() throws ParseException {
/*@bgen(jjtree) program */
ASTprogram jjtn000 = new ASTprogram(JJTPROGRAM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);sortNameToExpression = new HashMap < String, ASTsortExpression > ();
predicateArgumentSorts = new HashMap < String, ArrayList < String >> ();
crRuleLabels = new HashSet < String > ();
generatingSorts = new HashSet < String > ();
constantsMapping = new HashMap < String, Long > ();
warnings = new ArrayList < String > ();
curlyBracketTerms = new HashSet < String > ();
definedRecordNames = new HashSet < String > ();
sortRenaming = new HashMap<String,String > ();
SimpleNode disp = null;
try {
directives(jjtn000.directives);
sortDefinitions();
predicateDeclarations();
programRules();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DISPLAYKEYWORD:
disp = display();
break;
default:
jj_la1[0] = jj_gen;
;
}
jj_consume_token(0);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
// if there is no display, let's create one consisting
// of all the predicates in the program!
if(disp == null)
{
HashSet<String > predicatesToDisplay = new HashSet<String > ();
for (String predName: predicateArgumentSorts.keySet())
{
if(!predName.startsWith("#"))
predicatesToDisplay.add(predName);
}
jjtn000.jjtAddChild(new ASTdisplay(predicatesToDisplay),3);
}
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void sortDefinitions() throws ParseException {
/*@bgen(jjtree) sortDefinitions */
ASTsortDefinitions jjtn000 = new ASTsortDefinitions(JJTSORTDEFINITIONS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SORTDEFKEYWORD:
jj_consume_token(SORTDEFKEYWORD);
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case POUND_SIGN:
;
break;
default:
jj_la1[1] = jj_gen;
break label_1;
}
sortDefinition();
}
break;
default:
jj_la1[2] = jj_gen;
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void sortDefinition() throws ParseException {
/*@bgen(jjtree) sortDefinition */
ASTsortDefinition jjtn000 = new ASTsortDefinition(JJTSORTDEFINITION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
SimpleNode n;
try {
jj_consume_token(POUND_SIGN);
t = jj_consume_token(IDENTIFIER);
jj_consume_token(EQ);
n = sortExpression();
jj_consume_token(DOT);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (sortNameToExpression.containsKey(t.image))
{
{if (true) throw new ParseException("sort " + t.image + " at line " + t.beginLine + " column " + t.beginColumn + " was already defined");}
}
for (String builtInSortName : BuiltIn.sortNames)
{
if (t.image.equals(builtInSortName))
{
{if (true) throw new ParseException("sort " + t.image + " at line " + t.beginLine + " column " + t.beginColumn + " is built-in and cannot be redefined");}
}
}
if (Settings.isEmptySortCheckingEnabled() && EmptySortChecker.isEmpty((ASTsortExpression) n, sortNameToExpression))
{
{if (true) throw new ParseException("sort " + t.image + " defined at line " + t.beginLine + " column " + t.beginColumn + " is empty");}
}
sortNameToExpression.put(t.image, (ASTsortExpression) n);
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode sortExpression() throws ParseException {
/*@bgen(jjtree) sortExpression */
ASTsortExpression jjtn000 = new ASTsortExpression(JJTSORTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
String s;
try {
if (jj_2_1(2)) {
n = setExpression();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else if ((getToken(1) != null && (getToken(1).image) != null) && (constantsMapping.containsKey(getToken(1).image) || isInteger(getToken(1).image))) {
n = numericRange();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else if (jj_2_2(2147483647)) {
n = identifierRange();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OSB:
n = concatenation();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
default:
jj_la1[3] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode setExpression() throws ParseException {
/*@bgen(jjtree) setExpression */
ASTsetExpression jjtn000 = new ASTsetExpression(JJTSETEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = additiveSetExpression();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode multiplicativeSetExpression() throws ParseException {
/*@bgen(jjtree) multiplicativeSetExpression */
ASTmultiplicativeSetExpression jjtn000 = new ASTmultiplicativeSetExpression(JJTMULTIPLICATIVESETEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = unarySetExpression();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
label_2:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MULT:
;
break;
default:
jj_la1[4] = jj_gen;
break label_2;
}
jj_consume_token(MULT);
unarySetExpression();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode additiveSetExpression() throws ParseException {
/*@bgen(jjtree) additiveSetExpression */
ASTadditiveSetExpression jjtn000 = new ASTadditiveSetExpression(JJTADDITIVESETEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);jjtn000.image = "+";
SimpleNode n;
try {
n = multiplicativeSetExpression();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
label_3:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
case MINUS:
;
break;
default:
jj_la1[5] = jj_gen;
break label_3;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
jj_consume_token(PLUS);
jjtn000.image += "+";
break;
case MINUS:
jj_consume_token(MINUS);
jjtn000.image += "-";
break;
default:
jj_la1[6] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
multiplicativeSetExpression();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode sortName() throws ParseException {
/*@bgen(jjtree) sortName */
ASTsortName jjtn000 = new ASTsortName(JJTSORTNAME);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
t = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (!sortNameToExpression.containsKey(t.image))
{
{if (true) throw new ParseException("sort " + "#"+ t.image + " at line " + t.beginLine + " column " + t.beginColumn + " was not defined");}
}
else
{
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
}
{if (true) return jjtn000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode unarySetExpression() throws ParseException {
/*@bgen(jjtree) unarySetExpression */
ASTunarySetExpression jjtn000 = new ASTunarySetExpression(JJTUNARYSETEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
SimpleNode n;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case POUND_SIGN:
t = jj_consume_token(POUND_SIGN);
sortName();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
break;
case OB:
n = curlyBrackets();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
case OP:
t = jj_consume_token(OP);
setExpression();
jj_consume_token(CP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
break;
case IDENTIFIER:
n = functionalSymbol();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (!FunctionalSymbolChecker.checkFunctionalSymbolSorts((ASTfunctionalSymbol) n, sortNameToExpression))
{
{if (true) throw new ParseException("the definition of record " + n.image + " at line " + n.beginLine + " column " + n.beginColumn + " has a condition which involves " + "checking less/greater relations on elements of non-basic sorts");}
}
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
default:
jj_la1[7] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode curlyBrackets() throws ParseException {
/*@bgen(jjtree) curlyBrackets */
ASTcurlyBrackets jjtn000 = new ASTcurlyBrackets(JJTCURLYBRACKETS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
SimpleNode child;
try {
t = jj_consume_token(OB);
child = constantTermList();
jj_consume_token(CB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
CurlyBrackets.retrieveAllTerms((ASTconstantTermList) child, curlyBracketTerms);
CurlyBrackets.retrieveAllFunctionalSymbols(jjtn000, definedRecordNames);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void concatenationTermList() throws ParseException {
/*@bgen(jjtree) constantTermList */
ASTconstantTermList jjtn000 = new ASTconstantTermList(JJTCONSTANTTERMLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
concatenationTerm();
label_4:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[8] = jj_gen;
break label_4;
}
jj_consume_token(COMMA);
concatenationTerm();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode constantTermList() throws ParseException {
/*@bgen(jjtree) constantTermList */
ASTconstantTermList jjtn000 = new ASTconstantTermList(JJTCONSTANTTERMLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
label_5:
while (true) {
if (jj_2_3(1)) {
;
} else {
break label_5;
}
constantTerm();
label_6:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[9] = jj_gen;
break label_6;
}
jj_consume_token(COMMA);
constantTerm();
}
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void constantTerm() throws ParseException {
/*@bgen(jjtree) constantTerm */
ASTconstantTerm jjtn000 = new ASTconstantTerm(JJTCONSTANTTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1, t2, t3;
String s;
try {
if ((getToken(1) != null && (getToken(1).image) != null) && (constantsMapping.containsKey(getToken(1).image) || isInteger(getToken(1).image))) {
t1 = number();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_4(2)) {
t1 = jj_consume_token(IDENTIFIER);
t3 = jj_consume_token(OP);
constantTermList();
t2 = jj_consume_token(CP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image + t3.image + " " + t2.image;
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
t1 = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
break;
default:
jj_la1[10] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void concatenationTerm() throws ParseException {
/*@bgen(jjtree) constantTerm */
ASTconstantTerm jjtn000 = new ASTconstantTerm(JJTCONSTANTTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1;
try {
if (constantsMapping.containsKey(getToken(1).image)) {
t1 = number();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
t1 = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
break;
default:
jj_la1[11] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode condition(HashMap < String, Integer > varMap) throws ParseException {
/*@bgen(jjtree) condition */
ASTcondition jjtn000 = new ASTcondition(JJTCONDITION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t, t1, t2;
try {
orCondition(varMap);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void orCondition(HashMap < String, Integer > varMap) throws ParseException {
/*@bgen(jjtree) orCondition */
ASTorCondition jjtn000 = new ASTorCondition(JJTORCONDITION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
andCondition(varMap);
label_7:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OR:
;
break;
default:
jj_la1[12] = jj_gen;
break label_7;
}
jj_consume_token(OR);
andCondition(varMap);
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void andCondition(HashMap < String, Integer > varMap) throws ParseException {
/*@bgen(jjtree) andCondition */
ASTandCondition jjtn000 = new ASTandCondition(JJTANDCONDITION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
unaryCondition(varMap);
label_8:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AND:
;
break;
default:
jj_la1[13] = jj_gen;
break label_8;
}
jj_consume_token(AND);
unaryCondition(varMap);
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void unaryCondition(HashMap < String, Integer > varMap) throws ParseException {
/*@bgen(jjtree) unaryCondition */
ASTunaryCondition jjtn000 = new ASTunaryCondition(JJTUNARYCONDITION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t, t3, t4;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VARIABLE:
t3 = var();
jjtn000.image = varMap.get(t3.image).toString();
t = rel();
jjtn000.image += " " + t.image;
t4 = var();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image += " " + varMap.get(t4.image).toString();
break;
case OP:
jj_consume_token(OP);
condition(varMap);
jj_consume_token(CP);
break;
case NOTOP:
t = jj_consume_token(NOTOP);
condition(varMap);
jj_consume_token(CP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
break;
default:
jj_la1[14] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode functionalSymbol() throws ParseException {
/*@bgen(jjtree) functionalSymbol */
ASTfunctionalSymbol jjtn000 = new ASTfunctionalSymbol(JJTFUNCTIONALSYMBOL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1, t2, t3;
Token from, to;
HashMap < String, Integer > map;
HashSet < Integer > BasicSorts;
SimpleNode c = null;
try {
t1 = jj_consume_token(IDENTIFIER);
t3 = jj_consume_token(OP);
map = specialSortExpressionList();
t2 = jj_consume_token(CP);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COLON:
jj_consume_token(COLON);
c = condition(map);
break;
default:
jj_la1[15] = jj_gen;
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
definedRecordNames.add(t1.image);
jjtn000.beginLine = t1.beginLine;
jjtn000.beginColumn = t1.beginColumn;
jjtn000.image = t1.image + t3.image + t2.image;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public Token specialSortExpression() throws ParseException {
Token sortToken,t = null;
jj_consume_token(POUND_SIGN);
sortName();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OP:
jj_consume_token(OP);
t = jj_consume_token(VARIABLE);
jj_consume_token(CP);
break;
default:
jj_la1[16] = jj_gen;
;
}
{if (true) return t;}
throw new Error("Missing return statement in function");
}
final public HashMap < String, Integer > specialSortExpressionList() throws ParseException {
/*@bgen(jjtree) sortExpressionList */
ASTsortExpressionList jjtn000 = new ASTsortExpressionList(JJTSORTEXPRESSIONLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);HashMap < String, Integer > variableMapping = new HashMap < String, Integer > ();
int agr = 0;
Token t;
try {
t = specialSortExpression();
if (t != null)
{
if (variableMapping.containsKey(t.image))
{
{if (true) throw new ParseException("variable " + t.image + " at line " + t.beginLine + ", column " + t.beginColumn + " is used more than once in " + "record definition");}
}
variableMapping.put(t.image, agr);
}
agr++;
label_9:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[17] = jj_gen;
break label_9;
}
jj_consume_token(COMMA);
t = specialSortExpression();
if (t != null)
{
if (variableMapping.containsKey(t.image))
{
{if (true) throw new ParseException("variable " + t.image + " at line " + t.beginLine + ", column " + t.beginColumn + " is used more than once in " + "record definition");}
}
variableMapping.put(t.image, agr);
}
agr++;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return variableMapping;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode concatenation() throws ParseException {
/*@bgen(jjtree) concatenation */
ASTconcatenation jjtn000 = new ASTconcatenation(JJTCONCATENATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
label_10:
while (true) {
jj_consume_token(OSB);
basicSort();
jj_consume_token(OCB);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OSB:
;
break;
default:
jj_la1[18] = jj_gen;
break label_10;
}
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void basicSort() throws ParseException {
/*@bgen(jjtree) basicSort */
ASTbasicSort jjtn000 = new ASTbasicSort(JJTBASICSORT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode se;
Token t;
String s;
try {
if ((getToken(1) != null && (s = getToken(1).image) != null) && (constantsMapping.containsKey(s) || isInteger(s))) {
numericRange();
} else if (jj_2_5(2147483647)) {
identifierRange();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case POUND_SIGN:
t = jj_consume_token(POUND_SIGN);
se = sortName();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (!sortNameToExpression.containsKey(se.image))
{
{if (true) throw new ParseException("Line " + t.beginLine + ", column " + t.beginColumn + ": " + "sort '" + "#"+ t.image + "' was not defined");}
}
ASTsortExpression ex = sortNameToExpression.get(se.image);
if (!BasicSortChecker.isBasic(ex, sortNameToExpression))
{
{if (true) throw new ParseException("ERROR: Sort '" + "#"+ se.image + "' at line " + t.beginLine + ", column " + t.beginColumn + " is not a basic sort");}
}
break;
default:
jj_la1[19] = jj_gen;
if (jj_2_6(1)) {
concatenationTermList();
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode identifierRange() throws ParseException {
/*@bgen(jjtree) identifierRange */
ASTidentifierRange jjtn000 = new ASTidentifierRange(JJTIDENTIFIERRANGE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1, t2;
try {
t1 = jj_consume_token(IDENTIFIER);
jj_consume_token(DOT);
jj_consume_token(DOT);
t2 = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
int errorLine = t1.beginLine;
int errorColumn = t1.beginColumn;
if (t1.image.length() > t2.image.length())
{
{if (true) throw new ParseException("ERROR: the length of the first identifier in identifier range should be smaller or equal to the length of the second one " + "at line " + errorLine + ", column " + errorColumn);}
}
if (t1.image.compareTo(t2.image) > 0)
{
{if (true) throw new ParseException("ERROR: the first identifier in identifier range should be lexicographically smaller or equal to the second one " + "at line " + errorLine + ", column " + errorColumn);}
}
jjtn000.image = t1.image + " " + t2.image;
{if (true) return jjtn000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode numericRange() throws ParseException {
/*@bgen(jjtree) numericRange */
ASTnumericRange jjtn000 = new ASTnumericRange(JJTNUMERICRANGE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token from, to;
try {
from = number();
jjtn000.beginLine = from.beginLine;
jjtn000.beginColumn = from.beginColumn;
jj_consume_token(DOT);
jj_consume_token(DOT);
to = number();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
int fromI = 0;
int toI = 0;
try
{
fromI = Integer.parseInt(from.image);
toI = Integer.parseInt(to.image);
}
catch (NumberFormatException ex)
{}
if (fromI > toI)
{
{if (true) throw new ParseException("ERROR: the first number in numeric range should be smaller or equal to the second one " + "at line " + to.beginLine + ", column " + to.beginColumn);}
}
jjtn000.image = from.image + " " + to.image;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public Token number() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case POSITIVE_INTEGER:
t = jj_consume_token(POSITIVE_INTEGER);
int integer = Integer.parseInt(t.image);
if(integer > BuiltIn.getMaxInt() )
{
{if (true) throw new ParseException("ERROR: Integer '" + t.image + "' at line " + t.beginLine + ", column " + t.beginColumn + " is out of range");}
}
{if (true) return t;}
break;
case ZERO:
t = jj_consume_token(ZERO);
{if (true) return t;}
break;
case NONZERODIGIT:
t = jj_consume_token(NONZERODIGIT);
{if (true) return t;}
break;
case IDENTIFIER:
t = jj_consume_token(IDENTIFIER);
if (!constantsMapping.containsKey(t.image))
{
{if (true) throw new ParseException("ERROR: Constant '" + t.image + "' at line " + t.beginLine + ", column " + t.beginColumn + " was not defined");}
//return t;
}
else
{
t.image = constantsMapping.get(t.image).toString();
{if (true) return t;}
}
break;
default:
jj_la1[20] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public void predicateDeclarations() throws ParseException {
/*@bgen(jjtree) predicateDeclarations */
ASTpredicateDeclarations jjtn000 = new ASTpredicateDeclarations(JJTPREDICATEDECLARATIONS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
jj_consume_token(PREDDEFKEYWORD);
label_11:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
;
break;
default:
jj_la1[21] = jj_gen;
break label_11;
}
predicateDeclaration();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
HashSet < String > usedPredicateNames = new HashSet < String > ();
usedPredicateNames.addAll(predicateArgumentSorts.keySet());
for (String sortName : sortNameToExpression.keySet())
{
predicateArgumentSorts.put("#" + sortName, new ArrayList < String > ());
predicateArgumentSorts.get("#" + sortName).add(sortName);
String nameCandidate = sortName;
while (usedPredicateNames.contains(nameCandidate))
{
nameCandidate += "_";
}
usedPredicateNames.add(nameCandidate);
sortRenaming.put(sortName, nameCandidate);
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void predicateDeclaration() throws ParseException {
/*@bgen(jjtree) predicateDeclaration */
ASTpredicateDeclaration jjtn000 = new ASTpredicateDeclaration(JJTPREDICATEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
ArrayList < String > arguments = new ArrayList < String > ();
try {
t = jj_consume_token(IDENTIFIER);
if (predicateArgumentSorts.containsKey(t.image))
{
{if (true) throw new ParseException("Line " + t.beginLine + ", column " + t.beginColumn + ": " + "predicate " + t.image + " was already declared");}
}
if (BuiltInPredicates.predicateNamesSet.contains(t.image))
{
{if (true) throw new ParseException("Line " + t.beginLine + ", column " + t.beginColumn + ": " + "predicate " + t.image + " is a built-in predicate");}
}
jj_consume_token(OP);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case POUND_SIGN:
arguments = identifierList();
break;
default:
jj_la1[22] = jj_gen;
;
}
predicateArgumentSorts.put(t.image, arguments);
jj_consume_token(CP);
jj_consume_token(DOT);
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public ArrayList < String > identifierList() throws ParseException {
/*@bgen(jjtree) identifierList */
ASTidentifierList jjtn000 = new ASTidentifierList(JJTIDENTIFIERLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);ArrayList < String > result = new ArrayList < String > ();
Token t;
try {
jj_consume_token(POUND_SIGN);
t = jj_consume_token(IDENTIFIER);
if (!sortNameToExpression.containsKey(t.image))
{
{if (true) throw new ParseException("Line " + t.beginLine + ", column " + t.beginColumn + ": " + "sort '" + "#"+ t.image + "' was not defined");}
}
result.add(t.image);
label_12:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[23] = jj_gen;
break label_12;
}
jj_consume_token(COMMA);
jj_consume_token(POUND_SIGN);
t = jj_consume_token(IDENTIFIER);
if (!sortNameToExpression.containsKey(t.image))
{
{if (true) throw new ParseException("Line " + t.beginLine + ", column " + t.beginColumn + ": " + "sort '" + "#" + t.image + "' was not defined");}
}
result.add(t.image);
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return result;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode programRules() throws ParseException {
/*@bgen(jjtree) programRules */
ASTprogramRules jjtn000 = new ASTprogramRules(JJTPROGRAMRULES);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
jj_consume_token(PROGRULDEFKEYWORD);
label_13:
while (true) {
if (jj_2_7(1)) {
;
} else {
break label_13;
}
programRule();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode programRule() throws ParseException {
/*@bgen(jjtree) programRule */
ASTprogramRule jjtn000 = new ASTprogramRule(JJTPROGRAMRULE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
SimpleNode n;
inHead = true;
try {
if (jj_2_8(2)) {
t = label();
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
jjtn000.setLabel(t.image);
if (crRuleLabels.contains(t.image))
{
{if (true) throw new ParseException("cr-rule label " + t.image + " at line " + t.beginLine + " column " + t.beginColumn + " occures more then once");}
}
else
{
crRuleLabels.add(t.image);
}
n = unlabeledProgramCrRule();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else if (jj_2_9(1)) {
n = unlabeledProgramRule();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else {
jj_consume_token(-1);
throw new ParseException();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode unlabeledProgramRule() throws ParseException {
/*@bgen(jjtree) unlabeledProgramRule */
ASTunlabeledProgramRule jjtn000 = new ASTunlabeledProgramRule(JJTUNLABELEDPROGRAMRULE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Pair n;
SimpleNode n2;
Token from, to, sep;
try {
if (jj_2_10(2147483647)) {
n = predSymbol();
from = number();
jj_consume_token(DOT);
jj_consume_token(DOT);
to = number();
jj_consume_token(CP);
jj_consume_token(DOT);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.first.beginLine;
jjtn000.beginColumn = n.first.beginColumn;
jjtn000.image = n.first.image + " " + from.image + " " + to.image;
inHead = false;
{if (true) return jjtn000;}
} else if (jj_2_11(1)) {
n2 = head();
inHead = false;
sep = exBody();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = sep.image;
jjtn000.beginLine = n2.beginLine;
jjtn000.beginColumn = n2.beginColumn;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ORRSEP:
sep = jj_consume_token(ORRSEP);
inHead = false;
jjtn000.image = sep.image;
jjtn000.beginLine = sep.beginLine;
jjtn000.beginColumn = sep.beginColumn;
body();
jj_consume_token(DOT);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
break;
case CRRSEP:
sep = jj_consume_token(CRRSEP);
inHead = false;
jjtn000.beginLine = sep.beginLine;
jjtn000.beginColumn = sep.beginColumn;
jjtn000.image = sep.image;
body();
jj_consume_token(DOT);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
break;
case WEAKSEP:
sep = jj_consume_token(WEAKSEP);
inHead = false;
jjtn000.beginLine = sep.beginLine;
jjtn000.beginColumn = sep.beginColumn;
jjtn000.image = sep.image;
body();
jj_consume_token(DOT);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case OSB:
constraintParams();
break;
default:
jj_la1[24] = jj_gen;
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
break;
default:
jj_la1[25] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void constraintParams() throws ParseException {
/*@bgen(jjtree) constraintParams */
ASTconstraintParams jjtn000 = new ASTconstraintParams(JJTCONSTRAINTPARAMS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t0;
Token t1 = null, t2 = null, t3 = null, t4 = null, t5 = null;
jjtn000.image = "";
try {
t0 = jj_consume_token(OSB);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
case VARIABLE:
case NONZERODIGIT:
case POSITIVE_INTEGER:
case ZERO:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VARIABLE:
t1 = var();
break;
case IDENTIFIER:
case NONZERODIGIT:
case POSITIVE_INTEGER:
case ZERO:
t2 = number();
break;
default:
jj_la1[26] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[27] = jj_gen;
;
}
t5 = jj_consume_token(COLON);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
case VARIABLE:
case NONZERODIGIT:
case POSITIVE_INTEGER:
case ZERO:
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VARIABLE:
t3 = var();
break;
case IDENTIFIER:
case NONZERODIGIT:
case POSITIVE_INTEGER:
case ZERO:
t4 = number();
break;
default:
jj_la1[28] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
jj_la1[29] = jj_gen;
;
}
jj_consume_token(OCB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (t1 == null && t2 == null && t3 == null && t4 == null)
{
{if (true) throw new ParseException("line " + t0.beginLine + ", column " + t0.beginColumn + ": weak constraint paramethers cannot both be empty");}
}
if (t2 != null)
{
jjtn000.image += t2.image;
}
else if (t1 != null)
{
jjtn000.image += "V";
}
jjtn000.image += t5.image;
if (t4 != null)
{
jjtn000.image += t4.image;
}
else if (t3 != null)
{
jjtn000.image += "V";
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode unlabeledProgramCrRule() throws ParseException {
/*@bgen(jjtree) unlabeledProgramCrRule */
ASTunlabeledProgramCrRule jjtn000 = new ASTunlabeledProgramCrRule(JJTUNLABELEDPROGRAMCRRULE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
Token t;
try {
if (jj_2_12(1)) {
n = head();
t = exCrBody();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
jjtn000.image = t.image;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case CRRSEP:
t = jj_consume_token(CRRSEP);
body();
jj_consume_token(DOT);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
jjtn000.image = t.image;
{if (true) return jjtn000;}
break;
default:
jj_la1[30] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public Token label() throws ParseException {
Token t;
t = jj_consume_token(IDENTIFIER);
jj_consume_token(COLON);
{if (true) return t;}
throw new Error("Missing return statement in function");
}
final public Token exBody() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ORRSEP:
case DOT:
t = exStandartBody();
{if (true) return t;}
break;
case CRRSEP:
t = exCrBody();
{if (true) return t;}
break;
default:
jj_la1[31] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public Token exStandartBody() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ORRSEP:
t = jj_consume_token(ORRSEP);
body();
jj_consume_token(DOT);
{if (true) return t;}
break;
case DOT:
t = jj_consume_token(DOT);
{if (true) return new Token(SparcTranslatorConstants.ORRSEP, ":-");}
break;
default:
jj_la1[32] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public Token exCrBody() throws ParseException {
Token t;
t = jj_consume_token(CRRSEP);
crBodyWithoutSep();
{if (true) return t;}
throw new Error("Missing return statement in function");
}
final public void crBodyWithoutSep() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DOT:
jj_consume_token(DOT);
break;
default:
jj_la1[33] = jj_gen;
if (jj_2_13(1)) {
body();
jj_consume_token(DOT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
}
final public SimpleNode head() throws ParseException {
/*@bgen(jjtree) head */
ASThead jjtn000 = new ASThead(JJTHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
if (jj_2_14(2)) {
n = choice_rule();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
case IDENTIFIER_WITH_OP:
case NEGATIVE_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM_WITH_OP:
case SORT_ATOM:
case SORT_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM:
case NEGATIVE_ATOM:
n = disjunction();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
default:
jj_la1[34] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode disjunction() throws ParseException {
/*@bgen(jjtree) disjunction */
ASTdisjunction jjtn000 = new ASTdisjunction(JJTDISJUNCTION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = nonRelAtom();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
label_14:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case HEAD_OR:
;
break;
default:
jj_la1[35] = jj_gen;
break label_14;
}
jj_consume_token(HEAD_OR);
nonRelAtom();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode choice_rule() throws ParseException {
/*@bgen(jjtree) choice_rule */
ASTchoice_rule jjtn000 = new ASTchoice_rule(JJTCHOICE_RULE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n1 = null;
Token t;
try {
if (jj_2_15(1)) {
n1 = arithmeticTerm();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ:
case EQR:
case NOTEQ:
case GT:
case GTEQ:
case SM:
case SMEQ:
t = rel();
jjtn000.image = "L" + t.image;
break;
default:
jj_la1[36] = jj_gen;
;
}
} else {
;
}
t = jj_consume_token(OB);
choice_elements();
jj_consume_token(CB);
if (jj_2_16(1)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ:
case EQR:
case NOTEQ:
case GT:
case GTEQ:
case SM:
case SMEQ:
t = rel();
jjtn000.image += " R" + t.image;
break;
default:
jj_la1[37] = jj_gen;
;
}
arithmeticTerm();
} else {
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (n1 != null)
{
jjtn000.beginLine = n1.beginLine;
jjtn000.beginColumn = n1.beginColumn;
}
else
{
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
}
if (Settings.getSingletonInstance().getSolver() != ASPSolver.Clingo)
{if (true) throw new ParseException("line " + jjtn000.beginLine + ", column " + jjtn000.beginColumn + ": choice rules are not supported in DLV");}
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void choice_elements() throws ParseException {
/*@bgen(jjtree) choice_elements */
ASTchoice_elements jjtn000 = new ASTchoice_elements(JJTCHOICE_ELEMENTS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
choice_element();
label_15:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
;
break;
default:
jj_la1[38] = jj_gen;
break label_15;
}
jj_consume_token(SEMICOLON);
choice_element();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void choice_element() throws ParseException {
/*@bgen(jjtree) choice_element */
ASTchoice_element jjtn000 = new ASTchoice_element(JJTCHOICE_ELEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = nonRelAtom();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COLON:
jj_consume_token(COLON);
extendedSimpleAtomList();
break;
default:
jj_la1[39] = jj_gen;
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void extendedSimpleAtomList() throws ParseException {
/*@bgen(jjtree) extendedSimpleAtomList */
ASTextendedSimpleAtomList jjtn000 = new ASTextendedSimpleAtomList(JJTEXTENDEDSIMPLEATOMLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
simpleAtom();
label_16:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[40] = jj_gen;
break label_16;
}
jj_consume_token(COMMA);
simpleAtom();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void body() throws ParseException {
/*@bgen(jjtree) body */
ASTbody jjtn000 = new ASTbody(JJTBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
atom();
label_17:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[41] = jj_gen;
break label_17;
}
jj_consume_token(COMMA);
atom();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public Token var() throws ParseException {
/*@bgen(jjtree) var */
ASTvar jjtn000 = new ASTvar(JJTVAR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
t = jj_consume_token(VARIABLE);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.setOriginalImage(t.image);
{if (true) return t;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode nonRelAtom() throws ParseException {
/*@bgen(jjtree) nonRelAtom */
ASTnonRelAtom jjtn000 = new ASTnonRelAtom(JJTNONRELATOM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode tList = null;
Pair n;
try {
n = predSymbol();
jjtn000.beginLine = n.first.beginLine;
jjtn000.beginColumn = n.first.beginColumn;
if (jj_2_17(1)) {
tList = termList();
if (!n.second && tList != null)
{
{if (true) throw new ParseException("ERROR:( expected at line " + tList.beginLine + " column " + tList.beginColumn);}
}
jj_consume_token(CP);
} else {
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
ASTpredSymbol predS = (ASTpredSymbol) n.first;
if (predS.hasPoundSign && (tList == null || tList.jjtGetNumChildren() != 1) && !inDisplay)
{
{if (true) throw new ParseException("sort predicate " + n.first.image + " at line " + n.first.beginLine + " column " + n.first.beginColumn + " must have exactly one argument");}
}
if (predS.hasPoundSign && tList != null && tList.jjtGetNumChildren() > 1 && inDisplay)
{
{if (true) throw new ParseException("sort predicate " + n.first.image + " at line " + n.first.beginLine + " column " + n.first.beginColumn + " cannot have more than one argument");}
}
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void simpleAtom() throws ParseException {
/*@bgen(jjtree) simpleAtom */
ASTsimpleAtom jjtn000 = new ASTsimpleAtom(JJTSIMPLEATOM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
Token t;
try {
if (jj_2_18(2147483647)) {
symbolicTerm();
t = rel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else if (jj_2_19(2147483647)) {
symbolicTerm();
t = rel();
var();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else if (jj_2_20(2147483647)) {
arithmeticTerm();
t = rel();
arithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else if (jj_2_21(2147483647)) {
var();
t = rel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else if (jj_2_22(2147483647)) {
arithmeticTerm();
t = eqrel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else if (jj_2_23(2147483647)) {
symbolicTerm();
t = eqrel();
arithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NOT:
case IDENTIFIER:
case IDENTIFIER_WITH_OP:
case NEGATIVE_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM_WITH_OP:
case SORT_ATOM:
case SORT_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM:
case NEGATIVE_ATOM:
n = extendedNonRelAtom();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = n.image;
break;
default:
jj_la1[42] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public SimpleNode extendedNonRelAtom() throws ParseException {
/*@bgen(jjtree) extendedNonRelAtom */
ASTextendedNonRelAtom jjtn000 = new ASTextendedNonRelAtom(JJTEXTENDEDNONRELATOM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
jjtn000.image = "";
SimpleNode tList = null;
Pair n;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NOT:
t = jj_consume_token(NOT);
jjtn000.image = t.image;
break;
default:
jj_la1[43] = jj_gen;
;
}
n = predSymbol();
if (jj_2_24(1)) {
tList = termList();
if (!n.second && tList != null)
{
{if (true) throw new ParseException("ERROR:( expected at line " + tList.beginLine + " column " + tList.beginColumn);}
}
jj_consume_token(CP);
} else {
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
ASTpredSymbol predS = (ASTpredSymbol) n.first;
if (predS.hasPoundSign && (tList == null || tList.jjtGetNumChildren() != 1))
{
{if (true) throw new ParseException("sort predicate " + n.first.image + " at line " + n.first.beginLine + " column " + n.first.beginColumn + " must have exactly one argument");}
}
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode addOp() throws ParseException {
Token t;
SimpleNode n = new SimpleNode(0);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
t = jj_consume_token(PLUS);
n.image = t.image;
{if (true) return n;}
break;
case MINUS:
t = jj_consume_token(MINUS);
n.image = t.image;
{if (true) return n;}
break;
default:
jj_la1[44] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public SimpleNode multOp() throws ParseException {
Token t;
SimpleNode n = new SimpleNode(0);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MULT:
t = jj_consume_token(MULT);
n.image = t.image;
{if (true) return n;}
break;
case DIV:
t = jj_consume_token(DIV);
n.image = t.image;
{if (true) return n;}
break;
default:
jj_la1[45] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public SimpleNode arithmeticTerm() throws ParseException {
/*@bgen(jjtree) arithmeticTerm */
ASTarithmeticTerm jjtn000 = new ASTarithmeticTerm(JJTARITHMETICTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = additiveArithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode atomicArithmeticTerm() throws ParseException {
/*@bgen(jjtree) atomicArithmeticTerm */
ASTatomicArithmeticTerm jjtn000 = new ASTatomicArithmeticTerm(JJTATOMICARITHMETICTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
if ((getToken(1) != null && getToken(1).image != null) && (constantsMapping.containsKey(getToken(1).image ) || isInteger(getToken(1).image ))) {
t = number();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case VARIABLE:
t = var();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
break;
case OP:
t = jj_consume_token(OP);
arithmeticTerm();
jj_consume_token(CP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
break;
default:
jj_la1[46] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode additiveArithmeticTerm() throws ParseException {
/*@bgen(jjtree) additiveArithmeticTerm */
ASTadditiveArithmeticTerm jjtn000 = new ASTadditiveArithmeticTerm(JJTADDITIVEARITHMETICTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
jjtn000.image = "+";
try {
n = multiplicativeArithmeticTerm();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
label_18:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case PLUS:
case MINUS:
;
break;
default:
jj_la1[47] = jj_gen;
break label_18;
}
n = addOp();
jjtn000.image += n.image;
multiplicativeArithmeticTerm();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode multiplicativeArithmeticTerm() throws ParseException {
/*@bgen(jjtree) multiplicativeArithmeticTerm */
ASTmultiplicativeArithmeticTerm jjtn000 = new ASTmultiplicativeArithmeticTerm(JJTMULTIPLICATIVEARITHMETICTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
jjtn000.image = "";
try {
n = atomicArithmeticTerm();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
label_19:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MULT:
case DIV:
;
break;
default:
jj_la1[48] = jj_gen;
break label_19;
}
n = multOp();
jjtn000.image += n.image;
atomicArithmeticTerm();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode symbolicFunction() throws ParseException {
/*@bgen(jjtree) symbolicFunction */
ASTsymbolicFunction jjtn000 = new ASTsymbolicFunction(JJTSYMBOLICFUNCTION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
t = jj_consume_token(IDENTIFIER_WITH_OP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginColumn = t.beginColumn;
jjtn000.beginLine = t.beginLine;
{if (true) return jjtn000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode symbolicConstant() throws ParseException {
/*@bgen(jjtree) symbolicConstant */
ASTsymbolicConstant jjtn000 = new ASTsymbolicConstant(JJTSYMBOLICCONSTANT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
t = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode symbolicTerm() throws ParseException {
/*@bgen(jjtree) symbolicTerm */
ASTsymbolicTerm jjtn000 = new ASTsymbolicTerm(JJTSYMBOLICTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
n = symbolicConstant();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
case IDENTIFIER_WITH_OP:
n = symbolicFunction();
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
termList();
jj_consume_token(CP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
break;
default:
jj_la1[49] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode term() throws ParseException {
/*@bgen(jjtree) term */
ASTterm jjtn000 = new ASTterm(JJTTERM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
Token t;
jjtn000.image = "";
try {
if (jj_2_25(2147483647)) {
t = var();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
//System.out.println("t.image");
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return jjtn000;}
} else if (jj_2_26(2)) {
n = arithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
case IDENTIFIER_WITH_OP:
n = symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
{if (true) return jjtn000;}
break;
default:
jj_la1[50] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public SimpleNode termList() throws ParseException {
/*@bgen(jjtree) termList */
ASTtermList jjtn000 = new ASTtermList(JJTTERMLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode t;
try {
t = term();
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
label_20:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[51] = jj_gen;
break label_20;
}
jj_consume_token(COMMA);
term();
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public Token rel() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ:
t = jj_consume_token(EQ);
{if (true) return t;}
break;
case NOTEQ:
t = jj_consume_token(NOTEQ);
{if (true) return t;}
break;
case GT:
t = jj_consume_token(GT);
{if (true) return t;}
break;
case GTEQ:
t = jj_consume_token(GTEQ);
{if (true) return t;}
break;
case SM:
t = jj_consume_token(SM);
{if (true) return t;}
break;
case SMEQ:
t = jj_consume_token(SMEQ);
{if (true) return t;}
break;
case EQR:
t = jj_consume_token(EQR);
{if (true) return t;}
break;
default:
jj_la1[52] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public Token eqrel() throws ParseException {
Token t;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ:
t = jj_consume_token(EQ);
{if (true) return t;}
break;
case NOTEQ:
t = jj_consume_token(NOTEQ);
{if (true) return t;}
break;
default:
jj_la1[53] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
throw new Error("Missing return statement in function");
}
final public Pair predSymbol() throws ParseException {
/*@bgen(jjtree) predSymbol */
ASTpredSymbol jjtn000 = new ASTpredSymbol(JJTPREDSYMBOL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t, poundSign = null;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
t = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, false);}
break;
case IDENTIFIER_WITH_OP:
t = jj_consume_token(IDENTIFIER_WITH_OP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image.substring(0, t.image.length() - 1);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, true);}
break;
case SORT_ATOM_WITH_OP:
t = jj_consume_token(SORT_ATOM_WITH_OP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.setPoundSign(true);
if (inHead)
{
{if (true) throw new ParseException("sort name " + t.image.substring(0, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " cannot occur in the head");}
}
String sort = t.image.substring(0, t.image.length() - 1);
if (!predicateArgumentSorts.containsKey(sort))
{
{if (true) throw new ParseException("sort " + t.image.substring(0, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " was not defined");}
}
generatingSorts.add(t.image.substring(1, t.image.length()-1));
jjtn000.image = t.image.substring(1, t.image.length() - 1);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, true);}
break;
case NEGATIVE_ATOM_WITH_OP:
t = jj_consume_token(NEGATIVE_ATOM_WITH_OP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.negative = true;
jjtn000.image = t.image.substring(1, t.image.length() - 1);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, true);}
break;
case NEGATIVE_ATOM:
t = jj_consume_token(NEGATIVE_ATOM);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.negative = true;
jjtn000.image = t.image.substring(1, t.image.length());
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, false);}
break;
case NEGATIVE_SORT_ATOM_WITH_OP:
t = jj_consume_token(NEGATIVE_SORT_ATOM_WITH_OP);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.setPoundSign(true);
if (inHead)
{
{if (true) throw new ParseException("sort name " + t.image.substring(1, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " cannot occur in the head");}
}
sort = t.image.substring(2, t.image.length() - 1);
if (!predicateArgumentSorts.containsKey(sort))
{
{if (true) throw new ParseException("sort " + t.image.substring(1, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " was not defined");}
}
jjtn000.negative = true;
jjtn000.image = t.image.substring(2, t.image.length() - 1);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, true);}
break;
case SORT_ATOM:
t = jj_consume_token(SORT_ATOM);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.setPoundSign(true);
if (inHead)
{
{if (true) throw new ParseException("sort name " + t.image.substring(1, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " cannot occur in the head");}
}
sort = t.image;
if (!predicateArgumentSorts.containsKey(sort))
{
{if (true) throw new ParseException("sort " + t.image + " at line " + t.beginLine + " column " + t.beginColumn + " was not defined");}
}
generatingSorts.add(t.image.substring(1));
jjtn000.negative = false;
jjtn000.image = t.image.substring(1);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, false);}
break;
case NEGATIVE_SORT_ATOM:
t = jj_consume_token(NEGATIVE_SORT_ATOM);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.setPoundSign(true);
if (inHead)
{
{if (true) throw new ParseException("sort name " + t.image.substring(1, t.image.length() - 1) + " at line " + t.beginLine + " column " + t.beginColumn + " cannot occur in the head");}
}
sort = t.image.substring(2);
if (!predicateArgumentSorts.containsKey(sort))
{
{if (true) throw new ParseException("sort " + t.image.substring(1) + " at line " + t.beginLine + " column " + t.beginColumn + " was not defined");}
}
jjtn000.negative = true;
jjtn000.image = t.image.substring(2);
jjtn000.beginLine = t.beginLine;
jjtn000.beginColumn = t.beginColumn;
{if (true) return new Pair(jjtn000, false);}
break;
default:
jj_la1[54] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
final public void atom() throws ParseException {
/*@bgen(jjtree) atom */
ASTatom jjtn000 = new ASTatom(JJTATOM);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1;
try {
if (jj_2_27(2147483647)) {
aggregate();
} else if (jj_2_28(2147483647)) {
symbolicTerm();
t1 = rel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_29(2147483647)) {
symbolicTerm();
t1 = rel();
var();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_30(2147483647)) {
var();
t1 = rel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_31(2147483647)) {
arithmeticTerm();
t1 = eqrel();
symbolicTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_32(2147483647)) {
symbolicTerm();
t1 = eqrel();
arithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else if (jj_2_33(2147483647)) {
arithmeticTerm();
t1 = rel();
arithmeticTerm();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t1.image;
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case NOT:
case IDENTIFIER:
case IDENTIFIER_WITH_OP:
case NEGATIVE_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM_WITH_OP:
case SORT_ATOM:
case SORT_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM:
case NEGATIVE_ATOM:
extendedNonRelAtom();
break;
default:
jj_la1[55] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void aggregate() throws ParseException {
/*@bgen(jjtree) aggregate */
ASTaggregate jjtn000 = new ASTaggregate(JJTAGGREGATE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t1 = null, t2 = null;
jjtn000.image = "";
try {
if (jj_2_34(1)) {
arithmeticTerm();
t1 = rel();
} else {
;
}
aggregateFunction();
aggregateElements();
jj_consume_token(CB);
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EQ:
case EQR:
case NOTEQ:
case GT:
case GTEQ:
case SM:
case SMEQ:
t2 = rel();
arithmeticTerm();
break;
default:
jj_la1[56] = jj_gen;
;
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
if (t1 != null)
{
jjtn000.image += "L" + t1.image;
}
if (t2 != null)
{
jjtn000.image += "R" + t2.image;
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void aggregateElements() throws ParseException {
/*@bgen(jjtree) aggregateElements */
ASTaggregateElements jjtn000 = new ASTaggregateElements(JJTAGGREGATEELEMENTS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
aggregateElement();
label_21:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
;
break;
default:
jj_la1[57] = jj_gen;
break label_21;
}
jj_consume_token(SEMICOLON);
aggregateElement();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void aggregateElement() throws ParseException {
/*@bgen(jjtree) aggregateElement */
ASTaggregateElement jjtn000 = new ASTaggregateElement(JJTAGGREGATEELEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);SimpleNode n;
try {
n = term();
label_22:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[58] = jj_gen;
break label_22;
}
jj_consume_token(COMMA);
term();
}
jj_consume_token(COLON);
extendedSimpleAtomList();
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
for(int i=0; i<jjtn000.jjtGetNumChildren(); i++)
{
SimpleNode child = (SimpleNode) jjtn000.jjtGetChild(i);
if(child.getId() == SparcTranslatorTreeConstants.JJTTERM)
{
ASTterm term = (ASTterm) child;
if(!term.isGround() && !term.isVariable())
{
{if (true) throw new ParseException("the term at line " + n.beginLine + " column " + n.beginColumn + " is not ground and is not a variable ");}
}
}
}
jjtn000.beginLine = n.beginLine;
jjtn000.beginColumn = n.beginColumn;
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void aggregateFunction() throws ParseException {
/*@bgen(jjtree) aggregateFunction */
ASTaggregateFunction jjtn000 = new ASTaggregateFunction(JJTAGGREGATEFUNCTION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);Token t;
try {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case AGGREGATE_COUNT_OB:
t = jj_consume_token(AGGREGATE_COUNT_OB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
break;
case AGGREGATE_MAX_OB:
t = jj_consume_token(AGGREGATE_MAX_OB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
break;
case AGGREGATE_MIN_OB:
t = jj_consume_token(AGGREGATE_MIN_OB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
break;
case AGGREGATE_SUM_OB:
t = jj_consume_token(AGGREGATE_SUM_OB);
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtn000.image = t.image;
break;
default:
jj_la1[59] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void atomSequence() throws ParseException {
/*@bgen(jjtree) atomSequence */
ASTatomSequence jjtn000 = new ASTatomSequence(JJTATOMSEQUENCE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
atom();
label_23:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
;
break;
default:
jj_la1[60] = jj_gen;
break label_23;
}
jj_consume_token(COMMA);
atom();
}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}
final public void directives(ArrayList < String > directives) throws ParseException {
label_24:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MAXINTDIRECTIVE:
case CONSTDIRECTIVE:
;
break;
default:
jj_la1[61] = jj_gen;
break label_24;
}
directive(directives);
}
addBuiltInSorts();
}
final public void directive(ArrayList < String > directives) throws ParseException {
Token t, t1, t2, t3, t4;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case MAXINTDIRECTIVE:
t = jj_consume_token(MAXINTDIRECTIVE);
t1 = jj_consume_token(EQ);
t2 = number();
t3 = jj_consume_token(DOT);
Integer value = Integer.parseInt(t2.image);
BuiltIn.setMaxInt(value);
break;
case CONSTDIRECTIVE:
t = jj_consume_token(CONSTDIRECTIVE);
t1 = jj_consume_token(IDENTIFIER);
t2 = jj_consume_token(EQ);
t3 = number();
t4 = jj_consume_token(DOT);
directives.add(t.image + " " + t1.image + t2.image + t3.image + t4.image);
constantsMapping.put(t1.image, Long.parseLong(t3.image));
break;
default:
jj_la1[62] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
final public SimpleNode display() throws ParseException {
/*@bgen(jjtree) display */
ASTdisplay jjtn000 = new ASTdisplay(JJTDISPLAY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);inDisplay = true;
try {
jj_consume_token(DISPLAYKEYWORD);
label_25:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case IDENTIFIER:
case IDENTIFIER_WITH_OP:
case NEGATIVE_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM_WITH_OP:
case SORT_ATOM:
case SORT_ATOM_WITH_OP:
case NEGATIVE_SORT_ATOM:
case NEGATIVE_ATOM:
;
break;
default:
jj_la1[63] = jj_gen;
break label_25;
}
nonRelAtom();
jj_consume_token(DOT);
}
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
{if (true) return jjtn000;}
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
throw new Error("Missing return statement in function");
}
private boolean jj_2_1(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_1(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(0, xla); }
}
private boolean jj_2_2(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_2(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(1, xla); }
}
private boolean jj_2_3(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_3(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(2, xla); }
}
private boolean jj_2_4(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_4(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(3, xla); }
}
private boolean jj_2_5(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_5(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(4, xla); }
}
private boolean jj_2_6(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_6(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(5, xla); }
}
private boolean jj_2_7(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_7(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(6, xla); }
}
private boolean jj_2_8(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_8(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(7, xla); }
}
private boolean jj_2_9(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_9(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(8, xla); }
}
private boolean jj_2_10(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_10(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(9, xla); }
}
private boolean jj_2_11(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_11(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(10, xla); }
}
private boolean jj_2_12(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_12(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(11, xla); }
}
private boolean jj_2_13(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_13(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(12, xla); }
}
private boolean jj_2_14(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_14(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(13, xla); }
}
private boolean jj_2_15(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_15(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(14, xla); }
}
private boolean jj_2_16(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_16(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(15, xla); }
}
private boolean jj_2_17(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_17(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(16, xla); }
}
private boolean jj_2_18(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_18(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(17, xla); }
}
private boolean jj_2_19(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_19(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(18, xla); }
}
private boolean jj_2_20(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_20(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(19, xla); }
}
private boolean jj_2_21(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_21(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(20, xla); }
}
private boolean jj_2_22(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_22(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(21, xla); }
}
private boolean jj_2_23(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_23(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(22, xla); }
}
private boolean jj_2_24(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_24(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(23, xla); }
}
private boolean jj_2_25(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_25(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(24, xla); }
}
private boolean jj_2_26(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_26(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(25, xla); }
}
private boolean jj_2_27(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_27(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(26, xla); }
}
private boolean jj_2_28(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_28(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(27, xla); }
}
private boolean jj_2_29(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_29(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(28, xla); }
}
private boolean jj_2_30(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_30(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(29, xla); }
}
private boolean jj_2_31(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_31(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(30, xla); }
}
private boolean jj_2_32(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_32(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(31, xla); }
}
private boolean jj_2_33(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_33(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(32, xla); }
}
private boolean jj_2_34(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_34(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(33, xla); }
}
private boolean jj_3R_108() {
if (jj_3R_33()) return true;
return false;
}
private boolean jj_3R_82() {
if (jj_scan_token(NOTEQ)) return true;
return false;
}
private boolean jj_3R_31() {
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(COLON)) return true;
return false;
}
private boolean jj_3R_81() {
if (jj_scan_token(EQ)) return true;
return false;
}
private boolean jj_3R_44() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_81()) {
jj_scanpos = xsp;
if (jj_3R_82()) return true;
}
return false;
}
private boolean jj_3R_29() {
if (jj_3R_50()) return true;
return false;
}
private boolean jj_3R_122() {
if (jj_scan_token(OP)) return true;
if (jj_3R_38()) return true;
if (jj_scan_token(CP)) return true;
return false;
}
private boolean jj_3R_43() {
if (jj_scan_token(VARIABLE)) return true;
return false;
}
private boolean jj_3R_80() {
if (jj_scan_token(EQR)) return true;
return false;
}
private boolean jj_3R_127() {
if (jj_scan_token(OB)) return true;
if (jj_3R_131()) return true;
if (jj_scan_token(CB)) return true;
return false;
}
private boolean jj_3R_121() {
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3_34() {
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_79() {
if (jj_scan_token(SMEQ)) return true;
return false;
}
private boolean jj_3R_109() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_34()) jj_scanpos = xsp;
if (jj_3R_46()) return true;
return false;
}
private boolean jj_3_12() {
if (jj_3R_35()) return true;
return false;
}
private boolean jj_3R_78() {
if (jj_scan_token(SM)) return true;
return false;
}
private boolean jj_3_33() {
if (jj_3R_38()) return true;
if (jj_3R_42()) return true;
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_36() {
if (jj_3R_68()) return true;
return false;
}
private boolean jj_3R_120() {
if (jj_3R_34()) return true;
return false;
}
private boolean jj_3R_111() {
Token xsp;
xsp = jj_scanpos;
jj_lookingAhead = true;
jj_semLA = (getToken(1) != null && getToken(1).image != null) && (constantsMapping.containsKey(getToken(1).image ) || isInteger(getToken(1).image ));
jj_lookingAhead = false;
if (!jj_semLA || jj_3R_120()) {
jj_scanpos = xsp;
if (jj_3R_121()) {
jj_scanpos = xsp;
if (jj_3R_122()) return true;
}
}
return false;
}
private boolean jj_3R_77() {
if (jj_scan_token(GTEQ)) return true;
return false;
}
private boolean jj_3R_98() {
if (jj_3R_110()) return true;
return false;
}
private boolean jj_3_32() {
if (jj_3R_41()) return true;
if (jj_3R_44()) return true;
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_76() {
if (jj_scan_token(GT)) return true;
return false;
}
private boolean jj_3R_118() {
if (jj_3R_128()) return true;
return false;
}
private boolean jj_3R_97() {
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3_31() {
if (jj_3R_38()) return true;
if (jj_3R_44()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_75() {
if (jj_scan_token(NOTEQ)) return true;
return false;
}
private boolean jj_3R_96() {
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_74() {
if (jj_scan_token(EQ)) return true;
return false;
}
private boolean jj_3R_42() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_74()) {
jj_scanpos = xsp;
if (jj_3R_75()) {
jj_scanpos = xsp;
if (jj_3R_76()) {
jj_scanpos = xsp;
if (jj_3R_77()) {
jj_scanpos = xsp;
if (jj_3R_78()) {
jj_scanpos = xsp;
if (jj_3R_79()) {
jj_scanpos = xsp;
if (jj_3R_80()) return true;
}
}
}
}
}
}
return false;
}
private boolean jj_3_30() {
if (jj_3R_43()) return true;
if (jj_3R_42()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_38() {
if (jj_3R_70()) return true;
return false;
}
private boolean jj_3R_117() {
if (jj_scan_token(OP)) return true;
if (jj_3R_26()) return true;
return false;
}
private boolean jj_3R_100() {
if (jj_3R_108()) return true;
return false;
}
private boolean jj_3R_95() {
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3_29() {
if (jj_3R_41()) return true;
if (jj_3R_42()) return true;
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3R_116() {
if (jj_3R_127()) return true;
return false;
}
private boolean jj_3R_112() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_71()) return true;
return false;
}
private boolean jj_3R_94() {
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3_28() {
if (jj_3R_41()) return true;
if (jj_3R_42()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_45() {
if (jj_3R_38()) return true;
if (jj_3R_42()) return true;
return false;
}
private boolean jj_3_27() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_45()) jj_scanpos = xsp;
if (jj_3R_46()) return true;
return false;
}
private boolean jj_3R_130() {
if (jj_scan_token(DIV)) return true;
return false;
}
private boolean jj_3R_115() {
if (jj_scan_token(POUND_SIGN)) return true;
if (jj_3R_126()) return true;
return false;
}
private boolean jj_3R_107() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_115()) {
jj_scanpos = xsp;
if (jj_3R_116()) {
jj_scanpos = xsp;
if (jj_3R_117()) {
jj_scanpos = xsp;
if (jj_3R_118()) return true;
}
}
}
return false;
}
private boolean jj_3R_93() {
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_69() {
if (jj_3R_100()) return true;
return false;
}
private boolean jj_3R_40() {
if (jj_3R_71()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_112()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_129() {
if (jj_scan_token(MULT)) return true;
return false;
}
private boolean jj_3R_123() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_129()) {
jj_scanpos = xsp;
if (jj_3R_130()) return true;
}
return false;
}
private boolean jj_3R_92() {
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_91() {
if (jj_3R_109()) return true;
return false;
}
private boolean jj_3R_68() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_91()) {
jj_scanpos = xsp;
if (jj_3R_92()) {
jj_scanpos = xsp;
if (jj_3R_93()) {
jj_scanpos = xsp;
if (jj_3R_94()) {
jj_scanpos = xsp;
if (jj_3R_95()) {
jj_scanpos = xsp;
if (jj_3R_96()) {
jj_scanpos = xsp;
if (jj_3R_97()) {
jj_scanpos = xsp;
if (jj_3R_98()) return true;
}
}
}
}
}
}
}
return false;
}
private boolean jj_3R_103() {
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_125() {
if (jj_scan_token(MINUS)) return true;
return false;
}
private boolean jj_3R_128() {
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(OP)) return true;
return false;
}
private boolean jj_3R_126() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_124() {
if (jj_scan_token(PLUS)) return true;
return false;
}
private boolean jj_3R_114() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_124()) {
jj_scanpos = xsp;
if (jj_3R_125()) return true;
}
return false;
}
private boolean jj_3_26() {
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_39() {
if (jj_3R_42()) return true;
return false;
}
private boolean jj_3_25() {
if (jj_3R_43()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(27)) {
jj_scanpos = xsp;
if (jj_scan_token(33)) {
jj_scanpos = xsp;
if (jj_scan_token(35)) return true;
}
}
return false;
}
private boolean jj_3_16() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_39()) jj_scanpos = xsp;
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_62() {
if (jj_scan_token(NEGATIVE_SORT_ATOM)) return true;
return false;
}
private boolean jj_3R_99() {
if (jj_3R_42()) return true;
return false;
}
private boolean jj_3R_54() {
if (jj_scan_token(WEAKSEP)) return true;
return false;
}
private boolean jj_3R_102() {
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3R_71() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_102()) {
jj_scanpos = xsp;
if (jj_3_26()) {
jj_scanpos = xsp;
if (jj_3R_103()) return true;
}
}
return false;
}
private boolean jj_3_15() {
if (jj_3R_38()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3R_99()) jj_scanpos = xsp;
return false;
}
private boolean jj_3R_66() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_37() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_15()) jj_scanpos = xsp;
if (jj_scan_token(OB)) return true;
if (jj_3R_69()) return true;
return false;
}
private boolean jj_3R_65() {
if (jj_scan_token(NONZERODIGIT)) return true;
return false;
}
private boolean jj_3R_53() {
if (jj_scan_token(CRRSEP)) return true;
return false;
}
private boolean jj_3_24() {
if (jj_3R_40()) return true;
return false;
}
private boolean jj_3R_64() {
if (jj_scan_token(ZERO)) return true;
return false;
}
private boolean jj_3R_47() {
if (jj_3R_87()) return true;
return false;
}
private boolean jj_3R_119() {
if (jj_scan_token(NOT)) return true;
return false;
}
private boolean jj_3R_61() {
if (jj_scan_token(SORT_ATOM)) return true;
return false;
}
private boolean jj_3R_73() {
if (jj_3R_105()) return true;
if (jj_3R_40()) return true;
if (jj_scan_token(CP)) return true;
return false;
}
private boolean jj_3R_110() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_119()) jj_scanpos = xsp;
if (jj_3R_33()) return true;
return false;
}
private boolean jj_3R_63() {
if (jj_scan_token(POSITIVE_INTEGER)) return true;
return false;
}
private boolean jj_3R_34() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_63()) {
jj_scanpos = xsp;
if (jj_3R_64()) {
jj_scanpos = xsp;
if (jj_3R_65()) {
jj_scanpos = xsp;
if (jj_3R_66()) return true;
}
}
}
return false;
}
private boolean jj_3R_52() {
if (jj_scan_token(ORRSEP)) return true;
return false;
}
private boolean jj_3R_90() {
if (jj_3R_108()) return true;
return false;
}
private boolean jj_3R_72() {
if (jj_3R_104()) return true;
return false;
}
private boolean jj_3R_41() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_72()) {
jj_scanpos = xsp;
if (jj_3R_73()) return true;
}
return false;
}
private boolean jj_3_23() {
if (jj_3R_41()) return true;
if (jj_3R_44()) return true;
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3_10() {
if (jj_3R_33()) return true;
if (jj_3R_34()) return true;
if (jj_scan_token(DOT)) return true;
return false;
}
private boolean jj_3_11() {
if (jj_3R_35()) return true;
return false;
}
private boolean jj_3R_87() {
if (jj_3R_107()) return true;
return false;
}
private boolean jj_3_22() {
if (jj_3R_38()) return true;
if (jj_3R_44()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_67() {
if (jj_3R_90()) return true;
return false;
}
private boolean jj_3R_104() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3_21() {
if (jj_3R_43()) return true;
if (jj_3R_42()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_60() {
if (jj_scan_token(NEGATIVE_SORT_ATOM_WITH_OP)) return true;
return false;
}
private boolean jj_3R_32() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_51()) {
jj_scanpos = xsp;
if (jj_3_11()) {
jj_scanpos = xsp;
if (jj_3R_52()) {
jj_scanpos = xsp;
if (jj_3R_53()) {
jj_scanpos = xsp;
if (jj_3R_54()) return true;
}
}
}
}
return false;
}
private boolean jj_3R_51() {
if (jj_3R_33()) return true;
return false;
}
private boolean jj_3_14() {
if (jj_3R_37()) return true;
return false;
}
private boolean jj_3R_35() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_14()) {
jj_scanpos = xsp;
if (jj_3R_67()) return true;
}
return false;
}
private boolean jj_3_20() {
if (jj_3R_38()) return true;
if (jj_3R_42()) return true;
if (jj_3R_38()) return true;
return false;
}
private boolean jj_3R_26() {
if (jj_3R_47()) return true;
return false;
}
private boolean jj_3R_59() {
if (jj_scan_token(NEGATIVE_ATOM)) return true;
return false;
}
private boolean jj_3_19() {
if (jj_3R_41()) return true;
if (jj_3R_42()) return true;
if (jj_3R_43()) return true;
return false;
}
private boolean jj_3R_86() {
if (jj_scan_token(AGGREGATE_SUM_OB)) return true;
return false;
}
private boolean jj_3_13() {
if (jj_3R_36()) return true;
return false;
}
private boolean jj_3R_105() {
if (jj_scan_token(IDENTIFIER_WITH_OP)) return true;
return false;
}
private boolean jj_3_18() {
if (jj_3R_41()) return true;
if (jj_3R_42()) return true;
if (jj_3R_41()) return true;
return false;
}
private boolean jj_3R_89() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_58() {
if (jj_scan_token(NEGATIVE_ATOM_WITH_OP)) return true;
return false;
}
private boolean jj_3R_85() {
if (jj_scan_token(AGGREGATE_MIN_OB)) return true;
return false;
}
private boolean jj_3_9() {
if (jj_3R_32()) return true;
return false;
}
private boolean jj_3_2() {
if (jj_3R_27()) return true;
return false;
}
private boolean jj_3R_88() {
if (jj_3R_34()) return true;
return false;
}
private boolean jj_3R_84() {
if (jj_scan_token(AGGREGATE_MAX_OB)) return true;
return false;
}
private boolean jj_3R_50() {
Token xsp;
xsp = jj_scanpos;
jj_lookingAhead = true;
jj_semLA = constantsMapping.containsKey(getToken(1).image);
jj_lookingAhead = false;
if (!jj_semLA || jj_3R_88()) {
jj_scanpos = xsp;
if (jj_3R_89()) return true;
}
return false;
}
private boolean jj_3R_83() {
if (jj_scan_token(AGGREGATE_COUNT_OB)) return true;
return false;
}
private boolean jj_3R_46() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_83()) {
jj_scanpos = xsp;
if (jj_3R_84()) {
jj_scanpos = xsp;
if (jj_3R_85()) {
jj_scanpos = xsp;
if (jj_3R_86()) return true;
}
}
}
return false;
}
private boolean jj_3R_113() {
if (jj_3R_123()) return true;
if (jj_3R_111()) return true;
return false;
}
private boolean jj_3R_49() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_27() {
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(DOT)) return true;
if (jj_scan_token(DOT)) return true;
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3R_101() {
if (jj_3R_111()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_113()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3_4() {
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(OP)) return true;
return false;
}
private boolean jj_3_8() {
if (jj_3R_31()) return true;
return false;
}
private boolean jj_3R_30() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_8()) {
jj_scanpos = xsp;
if (jj_3_9()) return true;
}
return false;
}
private boolean jj_3R_57() {
if (jj_scan_token(SORT_ATOM_WITH_OP)) return true;
return false;
}
private boolean jj_3R_28() {
Token xsp;
xsp = jj_scanpos;
jj_lookingAhead = true;
jj_semLA = (getToken(1) != null && (getToken(1).image) != null) && (constantsMapping.containsKey(getToken(1).image) || isInteger(getToken(1).image));
jj_lookingAhead = false;
if (!jj_semLA || jj_3R_48()) {
jj_scanpos = xsp;
if (jj_3_4()) {
jj_scanpos = xsp;
if (jj_3R_49()) return true;
}
}
return false;
}
private boolean jj_3R_48() {
if (jj_3R_34()) return true;
return false;
}
private boolean jj_3_1() {
if (jj_3R_26()) return true;
return false;
}
private boolean jj_3_6() {
if (jj_3R_29()) return true;
return false;
}
private boolean jj_3R_56() {
if (jj_scan_token(IDENTIFIER_WITH_OP)) return true;
return false;
}
private boolean jj_3_5() {
if (jj_3R_27()) return true;
return false;
}
private boolean jj_3_7() {
if (jj_3R_30()) return true;
return false;
}
private boolean jj_3R_106() {
if (jj_3R_114()) return true;
if (jj_3R_101()) return true;
return false;
}
private boolean jj_3R_33() {
Token xsp;
xsp = jj_scanpos;
if (jj_3R_55()) {
jj_scanpos = xsp;
if (jj_3R_56()) {
jj_scanpos = xsp;
if (jj_3R_57()) {
jj_scanpos = xsp;
if (jj_3R_58()) {
jj_scanpos = xsp;
if (jj_3R_59()) {
jj_scanpos = xsp;
if (jj_3R_60()) {
jj_scanpos = xsp;
if (jj_3R_61()) {
jj_scanpos = xsp;
if (jj_3R_62()) return true;
}
}
}
}
}
}
}
return false;
}
private boolean jj_3R_55() {
if (jj_scan_token(IDENTIFIER)) return true;
return false;
}
private boolean jj_3_3() {
if (jj_3R_28()) return true;
return false;
}
private boolean jj_3_17() {
if (jj_3R_40()) return true;
return false;
}
private boolean jj_3R_131() {
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3_3()) { jj_scanpos = xsp; break; }
}
return false;
}
private boolean jj_3R_70() {
if (jj_3R_101()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_3R_106()) { jj_scanpos = xsp; break; }
}
return false;
}
/** Generated Token Manager. */
public SparcTranslatorTokenManager token_source;
SimpleCharStream jj_input_stream;
/** Current token. */
public Token token;
/** Next token. */
public Token jj_nt;
private int jj_ntk;
private Token jj_scanpos, jj_lastpos;
private int jj_la;
/** Whether we are looking ahead. */
private boolean jj_lookingAhead = false;
private boolean jj_semLA;
private int jj_gen;
final private int[] jj_la1 = new int[64];
static private int[] jj_la1_0;
static private int[] jj_la1_1;
static {
jj_la1_init_0();
jj_la1_init_1();
}
private static void jj_la1_init_0() {
jj_la1_0 = new int[] {0x40,0x0,0x8,0x0,0x20000,0x10000,0x10000,0x14000800,0x0,0x0,0x800,0x800,0x200,0x400,0x4001100,0x0,0x4000000,0x0,0x0,0x0,0xe800,0x800,0x0,0x0,0x0,0xc0000000,0xf800,0xf800,0xf800,0xf800,0x80000000,0xc0000000,0x40000000,0x0,0x800,0x0,0x3f80000,0x3f80000,0x0,0x0,0x0,0x0,0x880,0x80,0x10000,0x60000,0x4001000,0x10000,0x60000,0x800,0x800,0x0,0x3f80000,0x280000,0x800,0x880,0x3f80000,0x0,0x0,0x0,0x0,0x6,0x6,0x800,};
}
private static void jj_la1_init_1() {
jj_la1_1 = new int[] {0x0,0x4000,0x0,0x1000,0x0,0x1000000,0x1000000,0x4000,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x2,0x1000,0x4000,0x0,0x0,0x4000,0x2,0x1000,0x1,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x3f8000,0x80,0x0,0x0,0x10,0x8,0x2,0x2,0x3f8000,0x0,0x1000000,0x0,0x0,0x1000000,0x0,0x8000,0x8000,0x2,0x0,0x0,0x3f8000,0x3f8000,0x0,0x10,0x2,0xf00,0x2,0x0,0x0,0x3f8000,};
}
final private JJCalls[] jj_2_rtns = new JJCalls[34];
private boolean jj_rescan = false;
private int jj_gc = 0;
/** Constructor with InputStream. */
public SparcTranslator(java.io.InputStream stream) {
this(stream, null);
}
/** Constructor with InputStream and supplied encoding */
public SparcTranslator(java.io.InputStream stream, String encoding) {
try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source = new SparcTranslatorTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(java.io.InputStream stream) {
ReInit(stream, null);
}
/** Reinitialise. */
public void ReInit(java.io.InputStream stream, String encoding) {
try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor. */
public SparcTranslator(java.io.Reader stream) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new SparcTranslatorTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(java.io.Reader stream) {
jj_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Constructor with generated Token Manager. */
public SparcTranslator(SparcTranslatorTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
/** Reinitialise. */
public void ReInit(SparcTranslatorTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
for (int i = 0; i < 64; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
if (token.kind == kind) {
jj_gen++;
if (++jj_gc > 100) {
jj_gc = 0;
for (int i = 0; i < jj_2_rtns.length; i++) {
JJCalls c = jj_2_rtns[i];
while (c != null) {
if (c.gen < jj_gen) c.first = null;
c = c.next;
}
}
}
return token;
}
token = oldToken;
jj_kind = kind;
throw generateParseException();
}
static private final class LookaheadSuccess extends java.lang.Error { }
final private LookaheadSuccess jj_ls = new LookaheadSuccess();
private boolean jj_scan_token(int kind) {
if (jj_scanpos == jj_lastpos) {
jj_la--;
if (jj_scanpos.next == null) {
jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
} else {
jj_lastpos = jj_scanpos = jj_scanpos.next;
}
} else {
jj_scanpos = jj_scanpos.next;
}
if (jj_rescan) {
int i = 0; Token tok = token;
while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
if (tok != null) jj_add_error_token(kind, i);
}
if (jj_scanpos.kind != kind) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
return false;
}
/** Get the next Token. */
final public Token getNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.getNextToken();
jj_ntk = -1;
jj_gen++;
return token;
}
/** Get the specific Token. */
final public Token getToken(int index) {
Token t = jj_lookingAhead ? jj_scanpos : token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.getNextToken();
}
return t;
}
private int jj_ntk() {
if ((jj_nt=token.next) == null)
return (jj_ntk = (token.next=token_source.getNextToken()).kind);
else
return (jj_ntk = jj_nt.kind);
}
private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
private int[] jj_expentry;
private int jj_kind = -1;
private int[] jj_lasttokens = new int[100];
private int jj_endpos;
private void jj_add_error_token(int kind, int pos) {
if (pos >= 100) return;
if (pos == jj_endpos + 1) {
jj_lasttokens[jj_endpos++] = kind;
} else if (jj_endpos != 0) {
jj_expentry = new int[jj_endpos];
for (int i = 0; i < jj_endpos; i++) {
jj_expentry[i] = jj_lasttokens[i];
}
jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
int[] oldentry = (int[])(it.next());
if (oldentry.length == jj_expentry.length) {
for (int i = 0; i < jj_expentry.length; i++) {
if (oldentry[i] != jj_expentry[i]) {
continue jj_entries_loop;
}
}
jj_expentries.add(jj_expentry);
break jj_entries_loop;
}
}
if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
}
}
/** Generate ParseException. */
public ParseException generateParseException() {
jj_expentries.clear();
boolean[] la1tokens = new boolean[57];
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
for (int i = 0; i < 64; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
la1tokens[j] = true;
}
if ((jj_la1_1[i] & (1<<j)) != 0) {
la1tokens[32+j] = true;
}
}
}
}
for (int i = 0; i < 57; i++) {
if (la1tokens[i]) {
jj_expentry = new int[1];
jj_expentry[0] = i;
jj_expentries.add(jj_expentry);
}
}
jj_endpos = 0;
jj_rescan_token();
jj_add_error_token(0, 0);
int[][] exptokseq = new int[jj_expentries.size()][];
for (int i = 0; i < jj_expentries.size(); i++) {
exptokseq[i] = jj_expentries.get(i);
}
return new ParseException(token, exptokseq, tokenImage);
}
/** Enable tracing. */
final public void enable_tracing() {
}
/** Disable tracing. */
final public void disable_tracing() {
}
private void jj_rescan_token() {
jj_rescan = true;
for (int i = 0; i < 34; i++) {
try {
JJCalls p = jj_2_rtns[i];
do {
if (p.gen > jj_gen) {
jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
switch (i) {
case 0: jj_3_1(); break;
case 1: jj_3_2(); break;
case 2: jj_3_3(); break;
case 3: jj_3_4(); break;
case 4: jj_3_5(); break;
case 5: jj_3_6(); break;
case 6: jj_3_7(); break;
case 7: jj_3_8(); break;
case 8: jj_3_9(); break;
case 9: jj_3_10(); break;
case 10: jj_3_11(); break;
case 11: jj_3_12(); break;
case 12: jj_3_13(); break;
case 13: jj_3_14(); break;
case 14: jj_3_15(); break;
case 15: jj_3_16(); break;
case 16: jj_3_17(); break;
case 17: jj_3_18(); break;
case 18: jj_3_19(); break;
case 19: jj_3_20(); break;
case 20: jj_3_21(); break;
case 21: jj_3_22(); break;
case 22: jj_3_23(); break;
case 23: jj_3_24(); break;
case 24: jj_3_25(); break;
case 25: jj_3_26(); break;
case 26: jj_3_27(); break;
case 27: jj_3_28(); break;
case 28: jj_3_29(); break;
case 29: jj_3_30(); break;
case 30: jj_3_31(); break;
case 31: jj_3_32(); break;
case 32: jj_3_33(); break;
case 33: jj_3_34(); break;
}
}
p = p.next;
} while (p != null);
} catch(LookaheadSuccess ls) { }
}
jj_rescan = false;
}
private void jj_save(int index, int xla) {
JJCalls p = jj_2_rtns[index];
while (p.gen > jj_gen) {
if (p.next == null) { p = p.next = new JJCalls(); break; }
p = p.next;
}
p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
}
static final class JJCalls {
int gen;
Token first;
int arg;
JJCalls next;
}
}