/* * generated by Xtext */ package net.certware.argument.analysis.services; import com.google.inject.Singleton; import com.google.inject.Inject; import java.util.List; import org.eclipse.xtext.*; import org.eclipse.xtext.service.GrammarProvider; import org.eclipse.xtext.service.AbstractElementFinder.*; import org.eclipse.xtext.common.services.TerminalsGrammarAccess; @Singleton public class AnalysisDSLGrammarAccess extends AbstractGrammarElementFinder { public class OutputElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.Output"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cLinesAssignment_0 = (Assignment)cGroup.eContents().get(0); private final RuleCall cLinesLineParserRuleCall_0_0 = (RuleCall)cLinesAssignment_0.eContents().get(0); private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1); private final RuleCall cSATISFIABLETerminalRuleCall_1_0 = (RuleCall)cAlternatives_1.eContents().get(0); private final RuleCall cUNSATISFIABLETerminalRuleCall_1_1 = (RuleCall)cAlternatives_1.eContents().get(1); //// first rule must be a parser rule //// an output file consists of some number of lines followed by SATISFIABLE or UNSATISFIABLE keyword //// we assume the output file is scanned as ASCII text but it need not be stored this way //Output: // lines+=Line* (SATISFIABLE | UNSATISFIABLE); @Override public ParserRule getRule() { return rule; } //lines+=Line* (SATISFIABLE | UNSATISFIABLE) public Group getGroup() { return cGroup; } //lines+=Line* public Assignment getLinesAssignment_0() { return cLinesAssignment_0; } //Line public RuleCall getLinesLineParserRuleCall_0_0() { return cLinesLineParserRuleCall_0_0; } //(SATISFIABLE | UNSATISFIABLE) public Alternatives getAlternatives_1() { return cAlternatives_1; } //SATISFIABLE public RuleCall getSATISFIABLETerminalRuleCall_1_0() { return cSATISFIABLETerminalRuleCall_1_0; } //UNSATISFIABLE public RuleCall getUNSATISFIABLETerminalRuleCall_1_1() { return cUNSATISFIABLETerminalRuleCall_1_1; } } public class LineElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.Line"); private final Assignment cItemsAssignment = (Assignment)rule.eContents().get(1); private final RuleCall cItemsClassicLiteralParserRuleCall_0 = (RuleCall)cItemsAssignment.eContents().get(0); //// more parser rules //// a line contains one or more classic literals //Line: // items+=ClassicLiteral+; @Override public ParserRule getRule() { return rule; } //items+=ClassicLiteral+ public Assignment getItemsAssignment() { return cItemsAssignment; } //ClassicLiteral public RuleCall getItemsClassicLiteralParserRuleCall_0() { return cItemsClassicLiteralParserRuleCall_0; } } public class ClassicLiteralElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.ClassicLiteral"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cNegAssignment_0 = (Assignment)cGroup.eContents().get(0); private final Keyword cNegHyphenMinusKeyword_0_0 = (Keyword)cNegAssignment_0.eContents().get(0); private final Assignment cAtomAssignment_1 = (Assignment)cGroup.eContents().get(1); private final RuleCall cAtomAtomParserRuleCall_1_0 = (RuleCall)cAtomAssignment_1.eContents().get(0); //// a classic literal is an atom with an optional negation sign //ClassicLiteral: // neg='-'? atom=Atom; @Override public ParserRule getRule() { return rule; } //neg='-'? atom=Atom public Group getGroup() { return cGroup; } //neg='-'? public Assignment getNegAssignment_0() { return cNegAssignment_0; } //'-' public Keyword getNegHyphenMinusKeyword_0_0() { return cNegHyphenMinusKeyword_0_0; } //atom=Atom public Assignment getAtomAssignment_1() { return cAtomAssignment_1; } //Atom public RuleCall getAtomAtomParserRuleCall_1_0() { return cAtomAtomParserRuleCall_1_0; } } public class AtomElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.Atom"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0); private final RuleCall cNamePREDICATE_NAMEParserRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0); private final Group cGroup_1 = (Group)cGroup.eContents().get(1); private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); private final Assignment cTermsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); private final RuleCall cTermsTermsParserRuleCall_1_1_0 = (RuleCall)cTermsAssignment_1_1.eContents().get(0); private final Keyword cRightParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2); //// an atom is a predicate name with an optional terms expression in parentheses //Atom: // name=PREDICATE_NAME ('(' terms=Terms? ')')?; @Override public ParserRule getRule() { return rule; } //name=PREDICATE_NAME ('(' terms=Terms? ')')? public Group getGroup() { return cGroup; } //name=PREDICATE_NAME public Assignment getNameAssignment_0() { return cNameAssignment_0; } //PREDICATE_NAME public RuleCall getNamePREDICATE_NAMEParserRuleCall_0_0() { return cNamePREDICATE_NAMEParserRuleCall_0_0; } //('(' terms=Terms? ')')? public Group getGroup_1() { return cGroup_1; } //'(' public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; } //terms=Terms? public Assignment getTermsAssignment_1_1() { return cTermsAssignment_1_1; } //Terms public RuleCall getTermsTermsParserRuleCall_1_1_0() { return cTermsTermsParserRuleCall_1_1_0; } //')' public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; } } public class PREDICATE_NAMEElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.PREDICATE_NAME"); private final RuleCall cIDENTIFIERTerminalRuleCall = (RuleCall)rule.eContents().get(1); //PREDICATE_NAME: // IDENTIFIER; @Override public ParserRule getRule() { return rule; } //IDENTIFIER public RuleCall getIDENTIFIERTerminalRuleCall() { return cIDENTIFIERTerminalRuleCall; } } public class TermsElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.Terms"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cCarAssignment_0 = (Assignment)cGroup.eContents().get(0); private final RuleCall cCarTermParserRuleCall_0_0 = (RuleCall)cCarAssignment_0.eContents().get(0); private final Group cGroup_1 = (Group)cGroup.eContents().get(1); private final Keyword cCommaKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0); private final Assignment cCdrAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); private final RuleCall cCdrTermParserRuleCall_1_1_0 = (RuleCall)cCdrAssignment_1_1.eContents().get(0); //// a terms expression is one or more terms separated by commas //Terms: // car=Term (',' cdr+=Term)*; @Override public ParserRule getRule() { return rule; } //car=Term (',' cdr+=Term)* public Group getGroup() { return cGroup; } //car=Term public Assignment getCarAssignment_0() { return cCarAssignment_0; } //Term public RuleCall getCarTermParserRuleCall_0_0() { return cCarTermParserRuleCall_0_0; } //(',' cdr+=Term)* public Group getGroup_1() { return cGroup_1; } //',' public Keyword getCommaKeyword_1_0() { return cCommaKeyword_1_0; } //cdr+=Term public Assignment getCdrAssignment_1_1() { return cCdrAssignment_1_1; } //Term public RuleCall getCdrTermParserRuleCall_1_1_0() { return cCdrTermParserRuleCall_1_1_0; } } public class TermElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.Term"); private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); private final Assignment cCsAssignment_0 = (Assignment)cAlternatives.eContents().get(0); private final RuleCall cCsCONSTANT_SYMBOLParserRuleCall_0_0 = (RuleCall)cCsAssignment_0.eContents().get(0); private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1); private final Assignment cSignAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0); private final Keyword cSignHyphenMinusKeyword_1_0_0 = (Keyword)cSignAssignment_1_0.eContents().get(0); private final Assignment cNAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1); private final RuleCall cNNUMBERTerminalRuleCall_1_1_0 = (RuleCall)cNAssignment_1_1.eContents().get(0); private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2); private final Assignment cFsAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0); private final RuleCall cFsFUNCTIONAL_SYMBOLParserRuleCall_2_0_0 = (RuleCall)cFsAssignment_2_0.eContents().get(0); private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1); private final Assignment cTermsAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2); private final RuleCall cTermsTermsParserRuleCall_2_2_0 = (RuleCall)cTermsAssignment_2_2.eContents().get(0); private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3); //// a term is a constant symbol, a number with optional sign, or //// a functional symbol with optional terms in parentheses //Term: // cs=CONSTANT_SYMBOL | sign='-'? n=NUMBER | fs=FUNCTIONAL_SYMBOL '(' terms=Terms ')'; @Override public ParserRule getRule() { return rule; } //cs=CONSTANT_SYMBOL | sign='-'? n=NUMBER | fs=FUNCTIONAL_SYMBOL '(' terms=Terms ')' public Alternatives getAlternatives() { return cAlternatives; } //cs=CONSTANT_SYMBOL public Assignment getCsAssignment_0() { return cCsAssignment_0; } //CONSTANT_SYMBOL public RuleCall getCsCONSTANT_SYMBOLParserRuleCall_0_0() { return cCsCONSTANT_SYMBOLParserRuleCall_0_0; } //sign='-'? n=NUMBER public Group getGroup_1() { return cGroup_1; } //sign='-'? public Assignment getSignAssignment_1_0() { return cSignAssignment_1_0; } //'-' public Keyword getSignHyphenMinusKeyword_1_0_0() { return cSignHyphenMinusKeyword_1_0_0; } //n=NUMBER public Assignment getNAssignment_1_1() { return cNAssignment_1_1; } //NUMBER public RuleCall getNNUMBERTerminalRuleCall_1_1_0() { return cNNUMBERTerminalRuleCall_1_1_0; } //fs=FUNCTIONAL_SYMBOL '(' terms=Terms ')' public Group getGroup_2() { return cGroup_2; } //fs=FUNCTIONAL_SYMBOL public Assignment getFsAssignment_2_0() { return cFsAssignment_2_0; } //FUNCTIONAL_SYMBOL public RuleCall getFsFUNCTIONAL_SYMBOLParserRuleCall_2_0_0() { return cFsFUNCTIONAL_SYMBOLParserRuleCall_2_0_0; } //'(' public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; } //terms=Terms public Assignment getTermsAssignment_2_2() { return cTermsAssignment_2_2; } //Terms public RuleCall getTermsTermsParserRuleCall_2_2_0() { return cTermsTermsParserRuleCall_2_2_0; } //')' public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; } } public class CONSTANT_SYMBOLElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.CONSTANT_SYMBOL"); private final RuleCall cIDENTIFIERTerminalRuleCall = (RuleCall)rule.eContents().get(1); //CONSTANT_SYMBOL: // IDENTIFIER; @Override public ParserRule getRule() { return rule; } //IDENTIFIER public RuleCall getIDENTIFIERTerminalRuleCall() { return cIDENTIFIERTerminalRuleCall; } } public class FUNCTIONAL_SYMBOLElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.FUNCTIONAL_SYMBOL"); private final RuleCall cIDENTIFIERTerminalRuleCall = (RuleCall)rule.eContents().get(1); //FUNCTIONAL_SYMBOL: // IDENTIFIER; @Override public ParserRule getRule() { return rule; } //IDENTIFIER public RuleCall getIDENTIFIERTerminalRuleCall() { return cIDENTIFIERTerminalRuleCall; } } private final OutputElements pOutput; private final TerminalRule tNUMBER; private final TerminalRule tIDENTIFIER; private final TerminalRule tSATISFIABLE; private final TerminalRule tUNSATISFIABLE; private final LineElements pLine; private final ClassicLiteralElements pClassicLiteral; private final AtomElements pAtom; private final PREDICATE_NAMEElements pPREDICATE_NAME; private final TermsElements pTerms; private final TermElements pTerm; private final CONSTANT_SYMBOLElements pCONSTANT_SYMBOL; private final FUNCTIONAL_SYMBOLElements pFUNCTIONAL_SYMBOL; private final Grammar grammar; private final TerminalsGrammarAccess gaTerminals; @Inject public AnalysisDSLGrammarAccess(GrammarProvider grammarProvider, TerminalsGrammarAccess gaTerminals) { this.grammar = internalFindGrammar(grammarProvider); this.gaTerminals = gaTerminals; this.pOutput = new OutputElements(); this.tNUMBER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.NUMBER"); this.tIDENTIFIER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.IDENTIFIER"); this.tSATISFIABLE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.SATISFIABLE"); this.tUNSATISFIABLE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "net.certware.argument.analysis.AnalysisDSL.UNSATISFIABLE"); this.pLine = new LineElements(); this.pClassicLiteral = new ClassicLiteralElements(); this.pAtom = new AtomElements(); this.pPREDICATE_NAME = new PREDICATE_NAMEElements(); this.pTerms = new TermsElements(); this.pTerm = new TermElements(); this.pCONSTANT_SYMBOL = new CONSTANT_SYMBOLElements(); this.pFUNCTIONAL_SYMBOL = new FUNCTIONAL_SYMBOLElements(); } protected Grammar internalFindGrammar(GrammarProvider grammarProvider) { Grammar grammar = grammarProvider.getGrammar(this); while (grammar != null) { if ("net.certware.argument.analysis.AnalysisDSL".equals(grammar.getName())) { return grammar; } List<Grammar> grammars = grammar.getUsedGrammars(); if (!grammars.isEmpty()) { grammar = grammars.iterator().next(); } else { return null; } } return grammar; } @Override public Grammar getGrammar() { return grammar; } public TerminalsGrammarAccess getTerminalsGrammarAccess() { return gaTerminals; } //// first rule must be a parser rule //// an output file consists of some number of lines followed by SATISFIABLE or UNSATISFIABLE keyword //// we assume the output file is scanned as ASCII text but it need not be stored this way //Output: // lines+=Line* (SATISFIABLE | UNSATISFIABLE); public OutputElements getOutputAccess() { return pOutput; } public ParserRule getOutputRule() { return getOutputAccess().getRule(); } //terminal NUMBER: // '0' | '1'..'9' '0'..'9'*; public TerminalRule getNUMBERRule() { return tNUMBER; } //terminal IDENTIFIER: // 'a'..'z' ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*; public TerminalRule getIDENTIFIERRule() { return tIDENTIFIER; } //terminal SATISFIABLE: // 'SATISFIABLE'; public TerminalRule getSATISFIABLERule() { return tSATISFIABLE; } //terminal UNSATISFIABLE: // 'UNSATISFIABLE'; public TerminalRule getUNSATISFIABLERule() { return tUNSATISFIABLE; } //// more parser rules //// a line contains one or more classic literals //Line: // items+=ClassicLiteral+; public LineElements getLineAccess() { return pLine; } public ParserRule getLineRule() { return getLineAccess().getRule(); } //// a classic literal is an atom with an optional negation sign //ClassicLiteral: // neg='-'? atom=Atom; public ClassicLiteralElements getClassicLiteralAccess() { return pClassicLiteral; } public ParserRule getClassicLiteralRule() { return getClassicLiteralAccess().getRule(); } //// an atom is a predicate name with an optional terms expression in parentheses //Atom: // name=PREDICATE_NAME ('(' terms=Terms? ')')?; public AtomElements getAtomAccess() { return pAtom; } public ParserRule getAtomRule() { return getAtomAccess().getRule(); } //PREDICATE_NAME: // IDENTIFIER; public PREDICATE_NAMEElements getPREDICATE_NAMEAccess() { return pPREDICATE_NAME; } public ParserRule getPREDICATE_NAMERule() { return getPREDICATE_NAMEAccess().getRule(); } //// a terms expression is one or more terms separated by commas //Terms: // car=Term (',' cdr+=Term)*; public TermsElements getTermsAccess() { return pTerms; } public ParserRule getTermsRule() { return getTermsAccess().getRule(); } //// a term is a constant symbol, a number with optional sign, or //// a functional symbol with optional terms in parentheses //Term: // cs=CONSTANT_SYMBOL | sign='-'? n=NUMBER | fs=FUNCTIONAL_SYMBOL '(' terms=Terms ')'; public TermElements getTermAccess() { return pTerm; } public ParserRule getTermRule() { return getTermAccess().getRule(); } //CONSTANT_SYMBOL: // IDENTIFIER; public CONSTANT_SYMBOLElements getCONSTANT_SYMBOLAccess() { return pCONSTANT_SYMBOL; } public ParserRule getCONSTANT_SYMBOLRule() { return getCONSTANT_SYMBOLAccess().getRule(); } //FUNCTIONAL_SYMBOL: // IDENTIFIER; public FUNCTIONAL_SYMBOLElements getFUNCTIONAL_SYMBOLAccess() { return pFUNCTIONAL_SYMBOL; } public ParserRule getFUNCTIONAL_SYMBOLRule() { return getFUNCTIONAL_SYMBOLAccess().getRule(); } //terminal ID: // '^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*; public TerminalRule getIDRule() { return gaTerminals.getIDRule(); } //terminal INT returns ecore::EInt: // '0'..'9'+; public TerminalRule getINTRule() { return gaTerminals.getINTRule(); } //terminal STRING: // '"' ('\\' . | !('\\' | '"'))* '"' | // "'" ('\\' . | !('\\' | "'"))* "'"; public TerminalRule getSTRINGRule() { return gaTerminals.getSTRINGRule(); } //terminal ML_COMMENT: // '/ *'->'* /'; public TerminalRule getML_COMMENTRule() { return gaTerminals.getML_COMMENTRule(); } //terminal SL_COMMENT: // '//' !('\n' | '\r')* ('\r'? '\n')?; public TerminalRule getSL_COMMENTRule() { return gaTerminals.getSL_COMMENTRule(); } //terminal WS: // ' ' | '\t' | '\r' | '\n'+; public TerminalRule getWSRule() { return gaTerminals.getWSRule(); } //terminal ANY_OTHER: // .; public TerminalRule getANY_OTHERRule() { return gaTerminals.getANY_OTHERRule(); } }