]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParser.java
(refs #7250) Support for record syntax for CHR relations
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / parser / SCLParser.java
index 527c66f5dc0b86e78988c8cf83b5e3e23970078a..fc2242dce632d482d95170a31f9bafe86d8a1eb3 100644 (file)
@@ -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 = 353;
+    private static final int STATE_COUNT = 358;
     private static final int TERMINAL_COUNT = 84;
-    private static final int NONTERMINAL_COUNT = 51;
-    private static final int PRODUCT_COUNT = 134;
+    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[6588];
-    private static final int[] ERROR_TABLE = new int[927];
+    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[1620];
+    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;
@@ -161,6 +161,7 @@ public abstract class SCLParser {
         "listQualifier",
         "chrQuery",
         "verboseChrQuery",
+        "constraintSpec",
         "caseRhs",
         "guardedExpArrow",
         "equation",
@@ -394,19 +395,19 @@ public abstract class SCLParser {
         return parse(0);
     }
     public Object parseCommands() {
-        return parse(337);
+        return parse(342);
     }
     public Object parseImport() {
-        return parse(345);
+        return parse(350);
     }
     public Object parseType() {
-        return parse(347);
+        return parse(352);
     }
     public Object parseExp() {
-        return parse(349);
+        return parse(354);
     }
     public Object parseEquationBlock() {
-        return parse(351);
+        return parse(356);
     }
 
 
@@ -650,24 +651,26 @@ public abstract class SCLParser {
         case 117:
             return reduceVerboseCHRQuery();
         case 118:
-            return reduceSimpleCaseRhs();
+            return reduceConstraintSpec();
         case 119:
-            return reduceGuardedCaseRhs();
+            return reduceSimpleCaseRhs();
         case 120:
-            return reduceGuardedExpArrow();
+            return reduceGuardedCaseRhs();
         case 121:
-            return reduceGuardEquation();
+            return reduceGuardedExpArrow();
         case 122:
-            return reduceBasicEquation();
+            return reduceGuardEquation();
         case 123:
-            return reduceEffect();
+            return reduceBasicEquation();
         case 124:
-            return reduceJustEtype();
+            return reduceEffect();
         case 125:
-            return reduceForAll();
+            return reduceJustEtype();
         case 126:
-            return reduceApplyType();
+            return reduceForAll();
         case 127:
+            return reduceApplyType();
+        case 128:
             return reduceDummy();
 
         default:
@@ -821,7 +824,7 @@ public abstract class SCLParser {
      */
     protected abstract Object reduceVerboseCHRStatement();
     /**
-     * statement ::= CONSTRAINT ID atype*
+     * statement ::= CONSTRAINT constructor (WHERE constraintSpec)?
      */
     protected abstract Object reduceConstraintStatement();
     /**
@@ -1136,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)?
      */