X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fparser%2FSCL.grammar;h=6bcffa14789b96542b16cccf2a5bbf8d7163f0c7;hb=649890ad306df48440a97893d7d53fb8a6386a4e;hp=500cf3b20d5a148ed92ad0775ce0d0f487c54c7f;hpb=7a7c389f2ffddb4e4170098e4f5facca1fa8b633;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCL.grammar b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCL.grammar index 500cf3b20..6bcffa147 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCL.grammar +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCL.grammar @@ -129,7 +129,7 @@ bexp ; lexp - = faexp+ # Apply, shift ID, shift LAMBDA, + = faexp+ # Apply, shift ID, shift LAMBDA, shift LAMBDA_MATCH, shift LET, shift INTEGER, shift BEGIN_STRING, shift IF, shift MATCH, shift DO, shift MDO, shift ENFORCE, shift BLANK, @@ -152,15 +152,16 @@ accessor aexp = LAMBDA aexp+ ARROW exp # Lambda, shift HASTYPE + | LAMBDA_MATCH LBRACE case (SEMICOLON case)* RBRACE # LambdaMatch, shift HASTYPE | LET statements IN exp # Let, shift HASTYPE - | IF exp THEN exp ELSE exp # If, shift HASTYPE + | IF exp THEN exp (ELSE exp)? # If, shift HASTYPE, shift ELSE | MATCH exp WITH LBRACE case (SEMICOLON case)* RBRACE # Match | (DO | MDO) statements # Do | (SELECT | SELECT_FIRST | SELECT_DISTINCT) exp WHERE queryBlock # Select | ENFORCE queryBlock # Enforce - | WHEN queryBlock SEMICOLON exp # When + //| WHEN queryBlock SEMICOLON exp # When | var # Var | ATTACHED_HASH ID # HashedId | BLANK # Blank @@ -169,6 +170,7 @@ aexp | stringLiteral # String | CHAR # Char | LPAREN (exp (COMMA exp)*)? RPAREN # Tuple + | LPAREN exp ARROW exp RPAREN # ViewPattern | LPAREN symbolWithoutMinus lexp RPAREN # RightSection | LPAREN lexp symbol RPAREN # LeftSection | LBRACKET (exp (COMMA exp)*)? RBRACKET # ListLiteral @@ -195,6 +197,17 @@ statement | exp rhs # LetStatement | exp BINDS exp # BindStatement | exp FOLLOWS queryBlock # RuleStatement + | chrQuery IMPLIES chrQuery # CHRStatement + | WHEN verboseChrQuery THEN_AFTER_WHEN verboseChrQuery # VerboseCHRStatement + | CONSTRAINT ID atype* # ConstraintStatement + ; + +chrQuery + = listQualifier (COMMA listQualifier)* # CHRQuery + ; + +verboseChrQuery + = LBRACE listQualifier (SEMICOLON listQualifier)* RBRACE # VerboseCHRQuery ; listQualifier @@ -310,4 +323,5 @@ symbolWithoutMinus /****************************************************************************** * Auxiliary tokens */ -dummy = COMMENT EOL ; \ No newline at end of file +dummy = COMMENT EOL # Dummy + ; \ No newline at end of file