X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fparser%2FSCLParser.java;h=1679a019ea267c266466369e77a724403b61817e;hp=ac61c901002bf20854505ed3f45419576468210e;hb=a8758de5bc19e5adb3f618d3038743a164f09912;hpb=12d9af17384d960b75d58c3935d2b7b46d93e87b 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 ac61c9010..1679a019e 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 = 324; - private static final int TERMINAL_COUNT = 79; - private static final int NONTERMINAL_COUNT = 49; - private static final int PRODUCT_COUNT = 126; + private static final int STATE_COUNT = 344; + private static final int TERMINAL_COUNT = 82; + private static final int NONTERMINAL_COUNT = 51; + private static final int PRODUCT_COUNT = 132; 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[5508]; - private static final int[] ERROR_TABLE = new int[800]; + private static final short[] ACTION_TABLE = new short[6120]; + private static final int[] ERROR_TABLE = new int[882]; 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[1620]; + private static final short[] GOTO_TABLE = new short[1829]; private static final int[] PRODUCT_LHS = new int[PRODUCT_COUNT]; private static final short STATE_MASK = (short)0x0fff; @@ -79,6 +79,7 @@ public abstract class SCLParser { "SEPARATED_DOT", "ESCAPED_ID", "LAMBDA", + "LAMBDA_MATCH", "LET", "IF", "MATCH", @@ -107,9 +108,11 @@ public abstract class SCLParser { "SUSPEND_STRING", "CONTINUE_STRING", "BINDS", + "IMPLIES", + "THEN_AFTER_WHEN", + "CONSTRAINT", "BY", "QUERY_OP", - "IMPLIES", "FORALL", "COMMENT", "EOL", @@ -154,6 +157,8 @@ public abstract class SCLParser { "symbolWithoutMinus", "listQualifier", "field", + "chrQuery", + "verboseChrQuery", "caseRhs", "guardedExpArrow", "equation", @@ -362,19 +367,19 @@ public abstract class SCLParser { return parse(0); } public Object parseCommands() { - return parse(309); + return parse(329); } public Object parseImport() { - return parse(316); + return parse(336); } public Object parseType() { - return parse(318); + return parse(338); } public Object parseExp() { - return parse(320); + return parse(340); } public Object parseEquationBlock() { - return parse(322); + return parse(342); } @@ -442,184 +447,196 @@ public abstract class SCLParser { case 29: return reduceRuleStatement(); case 30: - return reduceDeclarations(); + return reduceCHRStatement(); case 31: - return reduceVarId(); + return reduceVerboseCHRStatement(); case 32: - return reduceEscapedSymbol(); + return reduceConstraintStatement(); case 33: - return reduceTupleConstructor(); + return reduceDeclarations(); case 34: - return reduceBinary(); + return reduceVarId(); case 35: - return reduceSimpleRhs(); + return reduceEscapedSymbol(); case 36: - return reduceGuardedRhs(); + return reduceTupleConstructor(); case 37: - return reduceConstructor(); + return reduceBinary(); case 38: - return reduceRecordConstructor(); + return reduceSimpleRhs(); case 39: - return reduceContext(); + return reduceGuardedRhs(); case 40: - return reduceFundeps(); + return reduceConstructor(); case 41: - return reduceTypeVar(); + return reduceRecordConstructor(); case 42: - return reduceTupleType(); + return reduceContext(); case 43: - return reduceListType(); + return reduceFundeps(); case 44: - return reduceListTypeConstructor(); + return reduceTypeVar(); case 45: - return reduceTupleTypeConstructor(); + return reduceTupleType(); case 46: - return reduceLambda(); + return reduceListType(); case 47: - return reduceLet(); + return reduceListTypeConstructor(); case 48: - return reduceIf(); + return reduceTupleTypeConstructor(); case 49: - return reduceMatch(); + return reduceLambda(); case 50: - return reduceDo(); + return reduceLambdaMatch(); case 51: - return reduceSelect(); + return reduceLet(); case 52: - return reduceEnforce(); + return reduceIf(); case 53: - return reduceWhen(); + return reduceMatch(); case 54: - return reduceVar(); + return reduceDo(); case 55: - return reduceHashedId(); + return reduceSelect(); case 56: - return reduceBlank(); + return reduceEnforce(); case 57: - return reduceInteger(); + return reduceVar(); case 58: - return reduceFloat(); + return reduceHashedId(); case 59: - return reduceString(); + return reduceBlank(); case 60: - return reduceChar(); + return reduceInteger(); case 61: - return reduceTuple(); + return reduceFloat(); case 62: - return reduceRightSection(); + return reduceString(); case 63: - return reduceLeftSection(); + return reduceChar(); case 64: - return reduceListLiteral(); + return reduceTuple(); case 65: - return reduceRange(); + return reduceViewPattern(); case 66: - return reduceListComprehension(); + return reduceRightSection(); case 67: - return reduceAs(); + return reduceLeftSection(); case 68: - return reduceRecord(); + return reduceListLiteral(); case 69: - return reduceTransformation(); + return reduceRange(); case 70: - return reduceEq(); + return reduceListComprehension(); case 71: - return reduceRuleDeclarations(); + return reduceAs(); case 72: - return reduceImportShowing(); + return reduceRecord(); case 73: - return reduceImportHiding(); + return reduceTransformation(); case 74: - return reduceImportValueItem(); + return reduceEq(); case 75: - return reduceFieldDescription(); + return reduceRuleDeclarations(); case 76: - return reduceStatements(); + return reduceImportShowing(); case 77: - return reduceGuardedExpEq(); + return reduceImportHiding(); case 78: - return reduceFundep(); + return reduceImportValueItem(); case 79: - return reduceQueryRuleDeclaration(); + return reduceFieldDescription(); case 80: - return reduceAnnotation(); + return reduceStatements(); case 81: - return reduceGuardQuery(); + return reduceGuardedExpEq(); case 82: - return reduceEqualsQuery(); + return reduceFundep(); case 83: - return reduceBindQuery(); + return reduceQueryRuleDeclaration(); case 84: - return reduceCompositeQuery(); + return reduceAnnotation(); case 85: - return reduceQueryBlock(); + return reduceGuardQuery(); case 86: - return reduceApply(); + return reduceEqualsQuery(); case 87: - return reduceSymbol(); + return reduceBindQuery(); case 88: - return reduceEscapedId(); + return reduceCompositeQuery(); case 89: - return reduceMinus(); + return reduceQueryBlock(); case 90: - return reduceLess(); + return reduceApply(); case 91: - return reduceGreater(); + return reduceSymbol(); case 92: - return reduceDot(); + return reduceEscapedId(); case 93: - return reduceFieldAccess(); + return reduceMinus(); case 94: - return reduceIdAccessor(); + return reduceLess(); case 95: - return reduceStringAccessor(); + return reduceGreater(); case 96: - return reduceExpAccessor(); + return reduceDot(); case 97: - return reduceCase(); + return reduceFieldAccess(); case 98: - return reduceStringLiteral(); + return reduceIdAccessor(); case 99: - return reduceSymbol(); + return reduceStringAccessor(); case 100: - return reduceEscapedId(); + return reduceExpAccessor(); case 101: - return reduceLess(); + return reduceCase(); case 102: - return reduceGreater(); + return reduceStringLiteral(); case 103: - return reduceDot(); + return reduceSymbol(); case 104: - return reduceGuardQualifier(); + return reduceEscapedId(); case 105: - return reduceLetQualifier(); + return reduceLess(); case 106: - return reduceBindQualifier(); + return reduceGreater(); case 107: - return reduceThenQualifier(); + return reduceDot(); case 108: - return reduceField(); + return reduceGuardQualifier(); case 109: - return reduceFieldShorthand(); + return reduceLetQualifier(); case 110: - return reduceSimpleCaseRhs(); + return reduceBindQualifier(); case 111: - return reduceGuardedCaseRhs(); + return reduceThenQualifier(); case 112: - return reduceGuardedExpArrow(); + return reduceField(); case 113: - return reduceGuardEquation(); + return reduceFieldShorthand(); case 114: - return reduceBasicEquation(); + return reduceCHRQuery(); case 115: - return reduceEffect(); + return reduceVerboseCHRQuery(); case 116: - return reduceJustEtype(); + return reduceSimpleCaseRhs(); case 117: - return reduceForAll(); + return reduceGuardedCaseRhs(); case 118: - return reduceApplyType(); + return reduceGuardedExpArrow(); case 119: + return reduceGuardEquation(); + case 120: + return reduceBasicEquation(); + case 121: + return reduceEffect(); + case 122: + return reduceJustEtype(); + case 123: + return reduceForAll(); + case 124: + return reduceApplyType(); + case 125: return reduceDummy1(); default: @@ -760,6 +777,18 @@ public abstract class SCLParser { * statement ::= exp FOLLOWS queryBlock */ protected abstract Object reduceRuleStatement(); + /** + * statement ::= chrQuery IMPLIES chrQuery + */ + protected abstract Object reduceCHRStatement(); + /** + * statement ::= WHEN verboseChrQuery THEN_AFTER_WHEN verboseChrQuery + */ + protected abstract Object reduceVerboseCHRStatement(); + /** + * statement ::= CONSTRAINT ID atype* + */ + protected abstract Object reduceConstraintStatement(); /** * declarations ::= LBRACE (declaration (SEMICOLON (declaration SEMICOLON)* declaration)?)? RBRACE */ @@ -828,12 +857,16 @@ public abstract class SCLParser { * aexp ::= LAMBDA aexp aexp* ARROW exp */ protected abstract Object reduceLambda(); + /** + * aexp ::= LAMBDA_MATCH LBRACE case (SEMICOLON case)* RBRACE + */ + protected abstract Object reduceLambdaMatch(); /** * aexp ::= LET statements IN exp */ protected abstract Object reduceLet(); /** - * aexp ::= IF exp THEN exp ELSE exp + * aexp ::= IF exp THEN exp (ELSE exp)? */ protected abstract Object reduceIf(); /** @@ -852,10 +885,6 @@ public abstract class SCLParser { * aexp ::= ENFORCE queryBlock */ protected abstract Object reduceEnforce(); - /** - * aexp ::= WHEN queryBlock SEMICOLON exp - */ - protected abstract Object reduceWhen(); /** * aexp ::= var */ @@ -888,6 +917,10 @@ public abstract class SCLParser { * aexp ::= LPAREN (exp (COMMA (exp COMMA)* exp)?)? RPAREN */ protected abstract Object reduceTuple(); + /** + * aexp ::= LPAREN exp ARROW exp RPAREN + */ + protected abstract Object reduceViewPattern(); /** * aexp ::= LPAREN symbolWithoutMinus lexp RPAREN */ @@ -1056,6 +1089,14 @@ public abstract class SCLParser { * field ::= ID */ protected abstract Object reduceFieldShorthand(); + /** + * chrQuery ::= (listQualifier COMMA)* listQualifier + */ + protected abstract Object reduceCHRQuery(); + /** + * verboseChrQuery ::= LBRACE listQualifier (SEMICOLON listQualifier)* RBRACE + */ + protected abstract Object reduceVerboseCHRQuery(); /** * caseRhs ::= ARROW exp (WHERE statements)? */