X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fparser%2FSCLParser.java;h=fc2242dce632d482d95170a31f9bafe86d8a1eb3;hb=bf5f7cda1b9b64484cc6e53499e38d6785744aec;hp=362bc51420da61eccbac64be9e5165a84bf88cf9;hpb=74de2d9be56f36e925a0a5818f4b11a766812cff;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParser.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParser.java index 362bc5142..fc2242dce 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParser.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParser.java @@ -13,18 +13,18 @@ public abstract class SCLParser { public static final boolean TRACE = false; private static final int INITIAL_CAPACITY = 16; - private static final int STATE_COUNT = 349; - private static final int TERMINAL_COUNT = 83; - private static final int NONTERMINAL_COUNT = 51; - private static final int PRODUCT_COUNT = 133; + private static final int STATE_COUNT = 358; + private static final int TERMINAL_COUNT = 84; + private static final int NONTERMINAL_COUNT = 52; + private static final int PRODUCT_COUNT = 135; private static final int[] ACTION_ROW_ID = new int[STATE_COUNT]; private static final int[] ACTION_COLUMN_ID = new int[TERMINAL_COUNT]; - private static final short[] ACTION_TABLE = new short[6396]; - private static final int[] ERROR_TABLE = new int[906]; + private static final short[] ACTION_TABLE = new short[6944]; + private static final int[] ERROR_TABLE = new int[940]; private static final int[] GOTO_ROW_ID = new int[STATE_COUNT]; private static final int[] GOTO_COLUMN_ID = new int[NONTERMINAL_COUNT]; - private static final short[] GOTO_TABLE = new short[1652]; + private static final short[] GOTO_TABLE = new short[1708]; private static final int[] PRODUCT_LHS = new int[PRODUCT_COUNT]; private static final short STATE_MASK = (short)0x0fff; @@ -64,6 +64,7 @@ public abstract class SCLParser { "EXTENDS", "MAPPING_RELATION", "FOLLOWS", + "RULESET", "IMPORT", "INCLUDE", "AS", @@ -72,7 +73,6 @@ public abstract class SCLParser { "HIDING", "ARROW", "COLON", - "WITH", "MINUS", "SYMBOL", "LESS", @@ -103,6 +103,7 @@ public abstract class SCLParser { "IN", "THEN", "ELSE", + "WITH", "RBRACKET", "DOTDOT", "AT", @@ -141,25 +142,26 @@ public abstract class SCLParser { "atype", "aexp", "ruleDeclarations", + "statements", "importSpec", "importItem", "fieldDeclaration", - "statements", "guardedExpEq", "fundep", "ruleDeclaration", "query", - "queryBlock", "lexp", "symbol", "faexp", "accessor", "case", + "queryBlock", "stringLiteral", "symbolWithoutMinus", "listQualifier", "chrQuery", "verboseChrQuery", + "constraintSpec", "caseRhs", "guardedExpArrow", "equation", @@ -393,19 +395,19 @@ public abstract class SCLParser { return parse(0); } public Object parseCommands() { - return parse(334); + return parse(342); } public Object parseImport() { - return parse(341); + return parse(350); } public Object parseType() { - return parse(343); + return parse(352); } public Object parseExp() { - return parse(345); + return parse(354); } public Object parseEquationBlock() { - return parse(347); + return parse(356); } @@ -425,43 +427,43 @@ public abstract class SCLParser { case 5: return reduceLocalTypeAnnotation(); case 6: - return reduceEntityTypeAnnotation(); - case 7: return reduceEquationBlock(); - case 8: + case 7: return reduceModuleHeader(); - case 9: + case 8: return reduceTypeAnnotation(); - case 10: + case 9: return reduceValueDefinition(); - case 11: + case 10: return reduceDataDefinition(); - case 12: + case 11: return reduceTypeDefinition(); - case 13: + case 12: return reduceClassDefinition(); - case 14: + case 13: return reduceInstanceDefinition(); - case 15: + case 14: return reduceDerivingInstanceDefinition(); - case 16: + case 15: return reduceDocumentationString(); - case 17: + case 16: return reduceAnnotation(); - case 18: + case 17: return reducePrecedenceDefinition(); - case 19: + case 18: return reduceJustImport(); - case 20: + case 19: return reduceImportJava(); - case 21: + case 20: return reduceEffectDefinition(); - case 22: + case 21: return reduceRuleDefinition(); - case 23: + case 22: return reduceMappingRelationDefinition(); - case 24: + case 23: return reduceRelationDefinition(); + case 24: + return reduceRulesetDefinition(); case 25: return reduceStatementCommand(); case 26: @@ -481,123 +483,123 @@ public abstract class SCLParser { case 33: return reduceConstraintStatement(); case 34: - return reduceDeclarations(); + return reduceLocalInclude(); case 35: - return reduceField(); + return reduceDeclarations(); case 36: - return reduceFieldShorthand(); + return reduceField(); case 37: - return reduceVarId(); + return reduceFieldShorthand(); case 38: - return reduceEscapedSymbol(); + return reduceVarId(); case 39: - return reduceTupleConstructor(); + return reduceEscapedSymbol(); case 40: - return reduceBinary(); + return reduceTupleConstructor(); case 41: - return reduceSimpleRhs(); + return reduceBinary(); case 42: - return reduceGuardedRhs(); + return reduceSimpleRhs(); case 43: - return reduceConstructor(); + return reduceGuardedRhs(); case 44: - return reduceRecordConstructor(); + return reduceConstructor(); case 45: - return reduceContext(); + return reduceRecordConstructor(); case 46: - return reduceFundeps(); + return reduceContext(); case 47: - return reduceTypeVar(); + return reduceFundeps(); case 48: - return reduceTupleType(); + return reduceTypeVar(); case 49: - return reduceListType(); + return reduceTupleType(); case 50: - return reduceListTypeConstructor(); + return reduceListType(); case 51: - return reduceTupleTypeConstructor(); + return reduceListTypeConstructor(); case 52: - return reduceLambda(); + return reduceTupleTypeConstructor(); case 53: - return reduceLambdaMatch(); + return reduceLambda(); case 54: - return reduceLet(); + return reduceLambdaMatch(); case 55: - return reduceIf(); + return reduceLet(); case 56: - return reduceMatch(); + return reduceIf(); case 57: - return reduceDo(); + return reduceMatch(); case 58: - return reduceSelect(); + return reduceDo(); case 59: - return reduceEnforce(); + return reduceSelect(); case 60: - return reduceVar(); + return reduceEnforce(); case 61: - return reduceHashedId(); + return reduceVar(); case 62: - return reduceBlank(); + return reduceHashedId(); case 63: - return reduceInteger(); + return reduceBlank(); case 64: - return reduceFloat(); + return reduceInteger(); case 65: - return reduceString(); + return reduceFloat(); case 66: - return reduceChar(); + return reduceString(); case 67: - return reduceTuple(); + return reduceChar(); case 68: - return reduceViewPattern(); + return reduceTuple(); case 69: - return reduceRightSection(); + return reduceViewPattern(); case 70: - return reduceLeftSection(); + return reduceRightSection(); case 71: - return reduceListLiteral(); + return reduceLeftSection(); case 72: - return reduceRange(); + return reduceListLiteral(); case 73: - return reduceListComprehension(); + return reduceRange(); case 74: - return reduceAs(); + return reduceListComprehension(); case 75: - return reduceRecord(); + return reduceAs(); case 76: - return reduceTransformation(); + return reduceRecord(); case 77: - return reduceEq(); + return reduceTransformation(); case 78: - return reduceRuleDeclarations(); + return reduceEq(); case 79: - return reduceImportShowing(); + return reduceRuleDeclarations(); case 80: - return reduceImportHiding(); + return reduceStatements(); case 81: - return reduceImportValueItem(); + return reduceImportShowing(); case 82: - return reduceFieldDescription(); + return reduceImportHiding(); case 83: - return reduceStatements(); + return reduceImportValueItem(); case 84: - return reduceGuardedExpEq(); + return reduceFieldDescription(); case 85: - return reduceFundep(); + return reduceGuardedExpEq(); case 86: - return reduceQueryRuleDeclaration(); + return reduceFundep(); case 87: - return reduceAnnotation(); + return reduceQueryRuleDeclaration(); case 88: - return reduceGuardQuery(); + return reduceAnnotation(); case 89: - return reduceEqualsQuery(); + return reduceGuardQuery(); case 90: - return reduceBindQuery(); + return reduceEqualsQuery(); case 91: - return reduceCompositeQuery(); + return reduceBindQuery(); case 92: - return reduceQueryBlock(); + return reduceCompositeQuery(); case 93: return reduceApply(); case 94: @@ -623,48 +625,52 @@ public abstract class SCLParser { case 104: return reduceCase(); case 105: - return reduceStringLiteral(); + return reduceQueryBlock(); case 106: - return reduceSymbol(); + return reduceStringLiteral(); case 107: - return reduceEscapedId(); + return reduceSymbol(); case 108: - return reduceLess(); + return reduceEscapedId(); case 109: - return reduceGreater(); + return reduceLess(); case 110: - return reduceDot(); + return reduceGreater(); case 111: - return reduceGuardQualifier(); + return reduceDot(); case 112: - return reduceLetQualifier(); + return reduceGuardQualifier(); case 113: - return reduceBindQualifier(); + return reduceLetQualifier(); case 114: - return reduceThenQualifier(); + return reduceBindQualifier(); case 115: - return reduceCHRQuery(); + return reduceThenQualifier(); case 116: - return reduceVerboseCHRQuery(); + return reduceCHRQuery(); case 117: - return reduceSimpleCaseRhs(); + return reduceVerboseCHRQuery(); case 118: - return reduceGuardedCaseRhs(); + return reduceConstraintSpec(); case 119: - return reduceGuardedExpArrow(); + return reduceSimpleCaseRhs(); case 120: - return reduceGuardEquation(); + return reduceGuardedCaseRhs(); case 121: - return reduceBasicEquation(); + return reduceGuardedExpArrow(); case 122: - return reduceEffect(); + return reduceGuardEquation(); case 123: - return reduceJustEtype(); + return reduceBasicEquation(); case 124: - return reduceForAll(); + return reduceEffect(); case 125: - return reduceApplyType(); + return reduceJustEtype(); case 126: + return reduceForAll(); + case 127: + return reduceApplyType(); + case 128: return reduceDummy(); default: @@ -709,10 +715,6 @@ public abstract class SCLParser { * exp ::= bexp (HASTYPE type)? */ protected abstract Object reduceLocalTypeAnnotation(); - /** - * exp ::= bexp COLON ID (queryBlock | WITH queryBlock?)? - */ - protected abstract Object reduceEntityTypeAnnotation(); /** * equationBlock ::= (equation (SEMICOLON equation)*)? */ @@ -785,6 +787,10 @@ public abstract class SCLParser { * declaration ::= bexp FOLLOWS ruleDeclarations */ protected abstract Object reduceRelationDefinition(); + /** + * declaration ::= RULESET ID WHERE statements + */ + protected abstract Object reduceRulesetDefinition(); /** * command ::= statement */ @@ -818,9 +824,13 @@ public abstract class SCLParser { */ protected abstract Object reduceVerboseCHRStatement(); /** - * statement ::= CONSTRAINT ID atype* + * statement ::= CONSTRAINT constructor (WHERE constraintSpec)? */ protected abstract Object reduceConstraintStatement(); + /** + * statement ::= INCLUDE ID aexp + */ + protected abstract Object reduceLocalInclude(); /** * declarations ::= LBRACE (declaration (SEMICOLON (declaration SEMICOLON)* declaration)?)? RBRACE */ @@ -1001,6 +1011,10 @@ public abstract class SCLParser { * ruleDeclarations ::= LBRACE (ruleDeclaration (SEMICOLON (ruleDeclaration SEMICOLON)* ruleDeclaration)?)? RBRACE */ protected abstract Object reduceRuleDeclarations(); + /** + * statements ::= LBRACE (statement (SEMICOLON (statement SEMICOLON)* statement)?)? RBRACE + */ + protected abstract Object reduceStatements(); /** * importSpec ::= LPAREN (importItem (COMMA (importItem COMMA)* importItem)?)? RPAREN */ @@ -1017,10 +1031,6 @@ public abstract class SCLParser { * fieldDeclaration ::= ID HASTYPE type */ protected abstract Object reduceFieldDescription(); - /** - * statements ::= LBRACE (statement (SEMICOLON (statement SEMICOLON)* statement)?)? RBRACE - */ - protected abstract Object reduceStatements(); /** * guardedExpEq ::= BAR exp (COMMA exp)* EQUALS exp */ @@ -1049,10 +1059,6 @@ public abstract class SCLParser { * query ::= QUERY_OP queryBlock */ protected abstract Object reduceCompositeQuery(); - /** - * queryBlock ::= LBRACE (query (SEMICOLON (query SEMICOLON)* query)?)? RBRACE - */ - protected abstract Object reduceQueryBlock(); /** * lexp ::= faexp faexp* */ @@ -1101,6 +1107,10 @@ public abstract class SCLParser { * case ::= exp caseRhs */ protected abstract Object reduceCase(); + /** + * queryBlock ::= LBRACE (query (SEMICOLON (query SEMICOLON)* query)?)? RBRACE + */ + protected abstract Object reduceQueryBlock(); /** * stringLiteral ::= BEGIN_STRING (SUSPEND_STRING exp CONTINUE_STRING)* END_STRING */ @@ -1129,6 +1139,10 @@ public abstract class SCLParser { * verboseChrQuery ::= LBRACE listQualifier (SEMICOLON listQualifier)* RBRACE */ protected abstract Object reduceVerboseCHRQuery(); + /** + * constraintSpec ::= LBRACE exp (SEMICOLON exp)* RBRACE + */ + protected abstract Object reduceConstraintSpec(); /** * caseRhs ::= ARROW exp (WHERE statements)? */