]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLLexer.flex
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / parser / SCLLexer.flex
index ecae4e5a54a36b288e0bc6cfff737aec8f16cc8e..b064a07aea9fb0a47e01c2010c2d6e50d47a56cc 100644 (file)
@@ -40,7 +40,7 @@ letter          = [a-zA-Z_]
 digit           = [0-9]
 hexDigit        = [0-9a-fA-F]
 id_char         = {letter} | {digit} | "'"
 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}* "."
 symbol_char     = {ord_symbol_char} | "#"
 
 prefix          = {letter} {id_char}* "."
@@ -116,6 +116,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
 //  relation        { return sym(SCLTerminals.RELATION); }
   as              { return sym(SCLTerminals.AS); }
   by              { return sym(SCLTerminals.BY); }
 //  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); }
   {queryOp}       { return sym(SCLTerminals.QUERY_OP); }
   "@"             { return sym(SCLTerminals.AT); }
   "{"             { return sym(SCLTerminals.LBRACE); }
@@ -143,7 +144,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
   {separatedDot}  { return sym(SCLTerminals.SEPARATED_DOT, "."); }
   "."             { return sym(SCLTerminals.ATTACHED_DOT, "."); }
   "-"             { return sym(SCLTerminals.MINUS, "-"); }
   {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); }
   "<"             { return sym(SCLTerminals.LESS, "<"); }
   ">"             { return sym(SCLTerminals.GREATER, ">"); }
   ";"             { return sym(SCLTerminals.SEMICOLON); }
@@ -151,6 +152,7 @@ char_literal    = "'" ([^'\\\ufffd] | "\\" [^\ufffd]) "'"
   "="             { return sym(SCLTerminals.EQUALS); }
   "::"            { return sym(SCLTerminals.HASTYPE); }
   ":"             { return sym(SCLTerminals.COLON); }
   "="             { 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); }
   "\\"            { 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); }