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