Adding support for sum expressions.
[repair.git] / Repair / RepairCompiler / MCC / Lexer.lex
index 8c8d5d0598b0b864e801ffb7c723393a706434cf..0664e0be013c324f7196b6bc574a3925ed23aab2 100755 (executable)
@@ -29,19 +29,20 @@ CHAR=(\\\"|\\\'|\\\\|\\t|\\n|[\x20-\x21\x23-\x26\x28-\x5B\x5D-\x7E])
 %%
 
 <YYINITIAL> {WHITESPACE}               {}
-<YYINITIAL> \n                         { LineCount.addLineBreak(yychar+1); } 
+<YYINITIAL> \n                         { LineCount.addLineBreak(yychar+1); }
 
-<YYINITIAL> "{"                                { return tok(Sym.OPENBRACE, yytext()); } 
-<YYINITIAL> "}"                                { return tok(Sym.CLOSEBRACE, yytext()); } 
-<YYINITIAL> "("                                { return tok(Sym.OPENPAREN, yytext()); } 
-<YYINITIAL> ")"                                { return tok(Sym.CLOSEPAREN, yytext()); } 
-<YYINITIAL> "["                                { return tok(Sym.OPENBRACKET, yytext()); } 
-<YYINITIAL> "]"                                { return tok(Sym.CLOSEBRACKET, yytext()); } 
+<YYINITIAL> "{"                                { return tok(Sym.OPENBRACE, yytext()); }
+<YYINITIAL> "}"                                { return tok(Sym.CLOSEBRACE, yytext()); }
+<YYINITIAL> "("                                { return tok(Sym.OPENPAREN, yytext()); }
+<YYINITIAL> ")"                                { return tok(Sym.CLOSEPAREN, yytext()); }
+<YYINITIAL> "["                                { return tok(Sym.OPENBRACKET, yytext()); }
+<YYINITIAL> "]"                                { return tok(Sym.CLOSEBRACKET, yytext()); }
 
 <YYINITIAL> "+"                                { return tok(Sym.ADD, yytext()); }
 <YYINITIAL> "-"                                { return tok(Sym.SUB, yytext()); }
 <YYINITIAL> "*"                                { return tok(Sym.MULT, yytext()); }
 <YYINITIAL> "/"                                { return tok(Sym.DIV, yytext()); }
+<YYINITIAL> sum                                { return tok(Sym.SUM, yytext()); }
 
 
 <YYINITIAL> "<"                                { return tok(Sym.LT, yytext()); }
@@ -56,11 +57,11 @@ CHAR=(\\\"|\\\'|\\\\|\\t|\\n|[\x20-\x21\x23-\x26\x28-\x5B\x5D-\x7E])
 <YYINITIAL> in\?                        { return tok(Sym.INTEST, yytext()); }
 <YYINITIAL> in                          { return tok(Sym.IN, yytext()); }
 
-<YYINITIAL> ","                                { return tok(Sym.COMMA, yytext()); } 
+<YYINITIAL> ","                                { return tok(Sym.COMMA, yytext()); }
 <YYINITIAL> sizeof                      { return tok(Sym.SIZEOF, yytext()); }
 
-<YYINITIAL> ".~"                       { return tok(Sym.DOTINV, yytext()); } 
-<YYINITIAL> "."                                { return tok(Sym.DOT, yytext()); } 
+<YYINITIAL> ".~"                       { return tok(Sym.DOTINV, yytext()); }
+<YYINITIAL> "."                                { return tok(Sym.DOT, yytext()); }
 
 <YYINITIAL> "and"                      { return tok(Sym.AND, yytext()); }
 <YYINITIAL> "or"                       { return tok(Sym.OR, yytext()); }
@@ -69,6 +70,7 @@ CHAR=(\\\"|\\\'|\\\\|\\t|\\n|[\x20-\x21\x23-\x26\x28-\x5B\x5D-\x7E])
 <YYINITIAL> param                      { return tok(Sym.PARAM, yytext()); }
 <YYINITIAL> "=>"                       { return tok(Sym.IMPLIES, yytext()); }
 <YYINITIAL> true                       { return tok(Sym.TRUE, yytext()); }
+<YYINITIAL> false                      { return tok(Sym.FALSE, yytext()); }
 <YYINITIAL> isvalid                    { return tok(Sym.ISVALID, yytext()); }
 <YYINITIAL> for                                { return tok(Sym.FOR, yytext()); }
 <YYINITIAL> to                         { return tok(Sym.TO, yytext()); }
@@ -81,6 +83,7 @@ CHAR=(\\\"|\\\'|\\\\|\\t|\\n|[\x20-\x21\x23-\x26\x28-\x5B\x5D-\x7E])
 <YYINITIAL> byte                        { return tok(Sym.BYTE, yytext()); }
 
 <YYINITIAL> subtype                    { return tok(Sym.SUBTYPE, yytext()); }
+<YYINITIAL> subclass                   { return tok(Sym.SUBCLASS, yytext()); }
 <YYINITIAL> of                                 { return tok(Sym.OF, yytext()); }
 
 <YYINITIAL> ";"                                { return tok(Sym.SEMICOLON, yytext()); }
@@ -99,6 +102,7 @@ CHAR=(\\\"|\\\'|\\\\|\\t|\\n|[\x20-\x21\x23-\x26\x28-\x5B\x5D-\x7E])
 <YYINITIAL> cast                       { return tok(Sym.CAST, yytext()); }
 <YYINITIAL> short                      { return tok(Sym.SHORT, yytext()); }
 <YYINITIAL> null                       { return tok(Sym.NULL, yytext()); }
+<YYINITIAL> NULL                       { return tok(Sym.NULL, yytext()); }
 <YYINITIAL> crash                      { return tok(Sym.CRASH, yytext()); }
 
 <YYINITIAL> {ALPHA}({ALPHA}|{DIGIT})*  { return tok(Sym.ID, yytext()); }