]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLLexer.flex
(refs #7250) Added new grammar rules for modular CHR rules
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / parser / SCLLexer.flex
index ecae4e5a54a36b288e0bc6cfff737aec8f16cc8e..e673b294b94b5e8170e6960778a0176b1c37dcb9 100644 (file)
@@ -40,7 +40,7 @@ letter          = [a-zA-Z_]
 digit           = [0-9]
 hexDigit        = [0-9a-fA-F]
 id_char         = {letter} | {digit} | "'"
-ord_symbol_char = [!$%&*+\/<=>?@\\\^|\-:~]
+ord_symbol_char = [!$%&*+\/<=>@\\\^|\-:~]
 symbol_char     = {ord_symbol_char} | "#"
 
 prefix          = {letter} {id_char}* "."
@@ -84,6 +84,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
   else            { return sym(SCLTerminals.ELSE); }
   where           { return sym(SCLTerminals.WHERE); }
   when            { return sym(SCLTerminals.WHEN); }
+  ruleset         { return sym(SCLTerminals.RULESET); }
   rule            { return sym(SCLTerminals.RULE); }
   abstract{whitespace}rule { return sym(SCLTerminals.ABSTRACT_RULE); }
   extends         { return sym(SCLTerminals.EXTENDS); }
@@ -116,6 +117,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
 //  relation        { return sym(SCLTerminals.RELATION); }
   as              { return sym(SCLTerminals.AS); }
   by              { return sym(SCLTerminals.BY); }
+  constraint      { return sym(SCLTerminals.CONSTRAINT); }
   {queryOp}       { return sym(SCLTerminals.QUERY_OP); }
   "@"             { return sym(SCLTerminals.AT); }
   "{"             { return sym(SCLTerminals.LBRACE); }
@@ -143,7 +145,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
   {separatedDot}  { return sym(SCLTerminals.SEPARATED_DOT, "."); }
   "."             { return sym(SCLTerminals.ATTACHED_DOT, "."); }
   "-"             { return sym(SCLTerminals.MINUS, "-"); }
-//  "<" existentialVar ">" { yybegin(XML); return sym(SCLTerminals.XML_BEGIN); }
+//  "<" {existentialVar} ">" { yybegin(XML); return sym(SCLTerminals.XML_BEGIN); }
   "<"             { return sym(SCLTerminals.LESS, "<"); }
   ">"             { return sym(SCLTerminals.GREATER, ">"); }
   ";"             { return sym(SCLTerminals.SEMICOLON); }
@@ -151,6 +153,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
   "="             { return sym(SCLTerminals.EQUALS); }
   "::"            { return sym(SCLTerminals.HASTYPE); }
   ":"             { return sym(SCLTerminals.COLON); }
+  "\\" " "* match { return sym(SCLTerminals.LAMBDA_MATCH); }
   "\\"            { return sym(SCLTerminals.LAMBDA); }
   "\"\"\""        { string.setLength(0); stringStart=yychar; yybegin(LONG_STRING); return sym(SCLTerminals.BEGIN_STRING); }
   "\""            { string.setLength(0); stringStart=yychar; yybegin(STRING); return sym(SCLTerminals.BEGIN_STRING); }