/* 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; } }