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
"SEPARATED_DOT",\r
"ESCAPED_ID",\r
"LAMBDA",\r
+ "LAMBDA_MATCH",\r
"LET",\r
"IF",\r
"MATCH",\r
"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
"symbolWithoutMinus",\r
"listQualifier",\r
"field",\r
+ "chrQuery",\r
+ "verboseChrQuery",\r
"caseRhs",\r
"guardedExpArrow",\r
"equation",\r
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
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
* 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
* 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
* 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
* 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
* 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