X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fparser%2FSCLParser.java;h=735974868ec8d4ae851d4490661b95eccf93bdd1;hb=527940f032d9dd8ebd4c7bd202356115f1715120;hp=6c8ee5be9c0de160fd7123f0027c9dc5a9ff18d4;hpb=649890ad306df48440a97893d7d53fb8a6386a4e;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 6c8ee5be9..735974868 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 = 344; - private static final int TERMINAL_COUNT = 82; + private static final int STATE_COUNT = 345; + private static final int TERMINAL_COUNT = 83; 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[6120]; - private static final int[] ERROR_TABLE = new int[882]; + private static final short[] ACTION_TABLE = new short[6360]; + private static final int[] ERROR_TABLE = new int[895]; 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[1829]; + private static final short[] GOTO_TABLE = new short[1711]; private static final int[] PRODUCT_LHS = new int[PRODUCT_COUNT]; private static final short STATE_MASK = (short)0x0fff; @@ -38,6 +38,7 @@ public abstract class SCLParser { "SEMICOLON", "LBRACE", "RBRACE", + "MODULE", "COMMA", "HASTYPE", "DATA", @@ -71,7 +72,6 @@ public abstract class SCLParser { "HIDING", "ARROW", "COLON", - "WITH", "MINUS", "SYMBOL", "LESS", @@ -102,6 +102,7 @@ public abstract class SCLParser { "IN", "THEN", "ELSE", + "WITH", "RBRACKET", "DOTDOT", "AT", @@ -130,6 +131,7 @@ public abstract class SCLParser { "command", "statement", "declarations", + "field", "var", "bexp", "rhs", @@ -147,16 +149,15 @@ public abstract class SCLParser { "fundep", "ruleDeclaration", "query", - "queryBlock", "lexp", "symbol", "faexp", "accessor", "case", + "queryBlock", "stringLiteral", "symbolWithoutMinus", "listQualifier", - "field", "chrQuery", "verboseChrQuery", "caseRhs", @@ -392,19 +393,19 @@ public abstract class SCLParser { return parse(0); } public Object parseCommands() { - return parse(329); + return parse(330); } public Object parseImport() { - return parse(336); + return parse(337); } public Object parseType() { - return parse(338); + return parse(339); } public Object parseExp() { - return parse(340); + return parse(341); } public Object parseEquationBlock() { - return parse(342); + return parse(343); } @@ -424,9 +425,9 @@ public abstract class SCLParser { case 5: return reduceLocalTypeAnnotation(); case 6: - return reduceEntityTypeAnnotation(); - case 7: return reduceEquationBlock(); + case 7: + return reduceModuleHeader(); case 8: return reduceTypeAnnotation(); case 9: @@ -480,165 +481,165 @@ public abstract class SCLParser { case 33: return reduceDeclarations(); case 34: - return reduceVarId(); + return reduceField(); case 35: - return reduceEscapedSymbol(); + return reduceFieldShorthand(); case 36: - return reduceTupleConstructor(); + return reduceVarId(); case 37: - return reduceBinary(); + return reduceEscapedSymbol(); case 38: - return reduceSimpleRhs(); + return reduceTupleConstructor(); case 39: - return reduceGuardedRhs(); + return reduceBinary(); case 40: - return reduceConstructor(); + return reduceSimpleRhs(); case 41: - return reduceRecordConstructor(); + return reduceGuardedRhs(); case 42: - return reduceContext(); + return reduceConstructor(); case 43: - return reduceFundeps(); + return reduceRecordConstructor(); case 44: - return reduceTypeVar(); + return reduceContext(); case 45: - return reduceTupleType(); + return reduceFundeps(); case 46: - return reduceListType(); + return reduceTypeVar(); case 47: - return reduceListTypeConstructor(); + return reduceTupleType(); case 48: - return reduceTupleTypeConstructor(); + return reduceListType(); case 49: - return reduceLambda(); + return reduceListTypeConstructor(); case 50: - return reduceLambdaMatch(); + return reduceTupleTypeConstructor(); case 51: - return reduceLet(); + return reduceLambda(); case 52: - return reduceIf(); + return reduceLambdaMatch(); case 53: - return reduceMatch(); + return reduceLet(); case 54: - return reduceDo(); + return reduceIf(); case 55: - return reduceSelect(); + return reduceMatch(); case 56: - return reduceEnforce(); + return reduceDo(); case 57: - return reduceVar(); + return reduceSelect(); case 58: - return reduceHashedId(); + return reduceEnforce(); case 59: - return reduceBlank(); + return reduceVar(); case 60: - return reduceInteger(); + return reduceHashedId(); case 61: - return reduceFloat(); + return reduceBlank(); case 62: - return reduceString(); + return reduceInteger(); case 63: - return reduceChar(); + return reduceFloat(); case 64: - return reduceTuple(); + return reduceString(); case 65: - return reduceViewPattern(); + return reduceChar(); case 66: - return reduceRightSection(); + return reduceTuple(); case 67: - return reduceLeftSection(); + return reduceViewPattern(); case 68: - return reduceListLiteral(); + return reduceRightSection(); case 69: - return reduceRange(); + return reduceLeftSection(); case 70: - return reduceListComprehension(); + return reduceListLiteral(); case 71: - return reduceAs(); + return reduceRange(); case 72: - return reduceRecord(); + return reduceListComprehension(); case 73: - return reduceTransformation(); + return reduceAs(); case 74: - return reduceEq(); + return reduceRecord(); case 75: - return reduceRuleDeclarations(); + return reduceTransformation(); case 76: - return reduceImportShowing(); + return reduceEq(); case 77: - return reduceImportHiding(); + return reduceRuleDeclarations(); case 78: - return reduceImportValueItem(); + return reduceImportShowing(); case 79: - return reduceFieldDescription(); + return reduceImportHiding(); case 80: - return reduceStatements(); + return reduceImportValueItem(); case 81: - return reduceGuardedExpEq(); + return reduceFieldDescription(); case 82: - return reduceFundep(); + return reduceStatements(); case 83: - return reduceQueryRuleDeclaration(); + return reduceGuardedExpEq(); case 84: - return reduceAnnotation(); + return reduceFundep(); case 85: - return reduceGuardQuery(); + return reduceQueryRuleDeclaration(); case 86: - return reduceEqualsQuery(); + return reduceAnnotation(); case 87: - return reduceBindQuery(); + return reduceGuardQuery(); case 88: - return reduceCompositeQuery(); + return reduceEqualsQuery(); case 89: - return reduceQueryBlock(); + return reduceBindQuery(); case 90: - return reduceApply(); + return reduceCompositeQuery(); case 91: - return reduceSymbol(); + return reduceApply(); case 92: - return reduceEscapedId(); + return reduceSymbol(); case 93: - return reduceMinus(); + return reduceEscapedId(); case 94: - return reduceLess(); + return reduceMinus(); case 95: - return reduceGreater(); + return reduceLess(); case 96: - return reduceDot(); + return reduceGreater(); case 97: - return reduceFieldAccess(); + return reduceDot(); case 98: - return reduceIdAccessor(); + return reduceFieldAccess(); case 99: - return reduceStringAccessor(); + return reduceIdAccessor(); case 100: - return reduceExpAccessor(); + return reduceStringAccessor(); case 101: - return reduceCase(); + return reduceExpAccessor(); case 102: - return reduceStringLiteral(); + return reduceCase(); case 103: - return reduceSymbol(); + return reduceQueryBlock(); case 104: - return reduceEscapedId(); + return reduceStringLiteral(); case 105: - return reduceLess(); + return reduceSymbol(); case 106: - return reduceGreater(); + return reduceEscapedId(); case 107: - return reduceDot(); + return reduceLess(); case 108: - return reduceGuardQualifier(); + return reduceGreater(); case 109: - return reduceLetQualifier(); + return reduceDot(); case 110: - return reduceBindQualifier(); + return reduceGuardQualifier(); case 111: - return reduceThenQualifier(); + return reduceLetQualifier(); case 112: - return reduceField(); + return reduceBindQualifier(); case 113: - return reduceFieldShorthand(); + return reduceThenQualifier(); case 114: return reduceCHRQuery(); case 115: @@ -706,14 +707,14 @@ 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)*)? */ protected abstract Object reduceEquationBlock(); + /** + * declaration ::= MODULE LBRACE (field (COMMA field)*)? RBRACE + */ + protected abstract Object reduceModuleHeader(); /** * declaration ::= (var COMMA)* var HASTYPE type */ @@ -818,6 +819,14 @@ public abstract class SCLParser { * declarations ::= LBRACE (declaration (SEMICOLON (declaration SEMICOLON)* declaration)?)? RBRACE */ protected abstract Object reduceDeclarations(); + /** + * field ::= ID EQUALS exp + */ + protected abstract Object reduceField(); + /** + * field ::= ID + */ + protected abstract Object reduceFieldShorthand(); /** * var ::= ID */ @@ -1034,10 +1043,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* */ @@ -1086,6 +1091,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 */ @@ -1106,14 +1115,6 @@ public abstract class SCLParser { * listQualifier ::= THEN exp (BY exp)? */ protected abstract Object reduceThenQualifier(); - /** - * field ::= ID EQUALS exp - */ - protected abstract Object reduceField(); - /** - * field ::= ID - */ - protected abstract Object reduceFieldShorthand(); /** * chrQuery ::= (listQualifier COMMA)* listQualifier */