X-Git-Url: http://git.joshuawise.com/snipe.git/blobdiff_plain/12aa4087bee3e70f170d7457794921de4e385227:/parse/l1.lex..0a24e44d4e9f82f8d3d83de8e58c83c8cf2868b6:/parse/l2.lex diff --git a/parse/l1.lex b/parse/l2.lex similarity index 66% rename from parse/l1.lex rename to parse/l2.lex index a80f936..9caa8e1 100644 --- a/parse/l1.lex +++ b/parse/l2.lex @@ -1,7 +1,9 @@ -(* L1 Compiler +(* L2 Compiler * Lexer * Author: Kaustuv Chaudhuri * Modified: Frank Pfenning + * Modified: Chris Lu + * Modified: Joshua Wise *) structure A = Ast @@ -49,7 +51,7 @@ in end %% -%header (functor L1LexFn(structure Tokens : L1_TOKENS)); +%header (functor L2LexFn(structure Tokens : L2_TOKENS)); %full %s COMMENT COMMENT_LINE; @@ -76,14 +78,40 @@ ws = [\ \t\012]; "*=" => (Tokens.STAREQ (yypos, yypos + size yytext)); "/=" => (Tokens.SLASHEQ (yypos, yypos + size yytext)); "%=" => (Tokens.PERCENTEQ (yypos, yypos + size yytext)); + "<<=" => (Tokens.LSHEQ (yypos, yypos + size yytext)); + ">>=" => (Tokens.RSHEQ (yypos, yypos + size yytext)); + "&=" => (Tokens.BITANDEQ (yypos, yypos + size yytext)); + "^=" => (Tokens.BITXOREQ (yypos, yypos + size yytext)); + "|=" => (Tokens.BITOREQ (yypos, yypos + size yytext)); "+" => (Tokens.PLUS (yypos, yypos + size yytext)); "-" => (Tokens.MINUS (yypos, yypos + size yytext)); + "!" => (Tokens.BANG (yypos, yypos + size yytext)); "*" => (Tokens.STAR (yypos, yypos + size yytext)); "/" => (Tokens.SLASH (yypos, yypos + size yytext)); "%" => (Tokens.PERCENT (yypos, yypos + size yytext)); + "<<" => (Tokens.LSH (yypos, yypos + size yytext)); + ">>" => (Tokens.RSH (yypos, yypos + size yytext)); + "||" => (Tokens.LOGOR (yypos, yypos + size yytext)); + "&&" => (Tokens.LOGAND (yypos, yypos + size yytext)); + "&" => (Tokens.BITAND (yypos, yypos + size yytext)); + "^" => (Tokens.BITXOR (yypos, yypos + size yytext)); + "|" => (Tokens.BITOR (yypos, yypos + size yytext)); + "~" => (Tokens.BITNOT (yypos, yypos + size yytext)); + "==" => (Tokens.EQ (yypos, yypos + size yytext)); + "!=" => (Tokens.NEQ (yypos, yypos + size yytext)); + "<" => (Tokens.LT (yypos, yypos + size yytext)); + "<=" => (Tokens.LE (yypos, yypos + size yytext)); + ">=" => (Tokens.GE (yypos, yypos + size yytext)); + ">" => (Tokens.GT (yypos, yypos + size yytext)); "return" => (Tokens.RETURN (yypos, yypos + size yytext)); + "if" => (Tokens.IF (yypos, yypos + size yytext)); + "while" => (Tokens.WHILE (yypos, yypos + size yytext)); + "for" => (Tokens.FOR (yypos, yypos + size yytext)); + "continue" => (Tokens.CONTINUE (yypos, yypos + size yytext)); + "break" => (Tokens.BREAK (yypos, yypos + size yytext)); + "else" => (Tokens.ELSE (yypos, yypos + size yytext)); {decnum} => (number (yytext, yypos));