X-Git-Url: http://git.hcoop.net/bpt/mlt.git/blobdiff_plain/8291a2b90d90a19fe92cd2ee8d71b62efad58ba3..142d9e8ce25dfddfab9fe0da40a28a3756482dbe:/src/mlt.lex diff --git a/src/mlt.lex b/src/mlt.lex index c64ea0c..62c8cc0 100644 --- a/src/mlt.lex +++ b/src/mlt.lex @@ -68,14 +68,17 @@ id = ([A-Za-z_][A-Za-z0-9_]*)|([:]+); intconst = [0-9]+; realconst = [0-9]+\.[0-9]*; ws = [\ \t\012]; -bo = [^<]+; +bo = [^<\n]+; %% -\n => (if isLinCom () then (linComEnd (); YYBEGIN INITIAL) else (); + \n => (if isLinCom () then (linComEnd (); YYBEGIN INITIAL) else (); lineNum := !lineNum + 1; linePos := yypos :: ! linePos; continue ()); + \n => (lineNum := !lineNum + 1; + linePos := yypos :: ! linePos; + Tokens.HTML (yytext, yypos, yypos + size yytext)); {ws}+ => (Tokens.HTML (" ", yypos, yypos + size yytext); lex ()); @@ -144,9 +147,12 @@ bo = [^<]+; "@" => (Tokens.AT (yypos, yypos + size yytext)); "if" => (Tokens.IF (yypos, yypos + 2)); + "iff" => (Tokens.IFF (yypos, yypos + 3)); "then" => (Tokens.THEN (yypos, yypos + 4)); "else" => (Tokens.ELSE (yypos, yypos + 4)); + "elseif" => (Tokens.ELSEIF (yypos, yypos + 6)); "foreach" => (Tokens.FOREACH (yypos, yypos + 7)); + "for" => (Tokens.FOR (yypos, yypos + 3)); "in" => (Tokens.IN (yypos, yypos + 2)); "case" => (Tokens.CASE (yypos, yypos + 4)); "as" => (Tokens.AS (yypos, yypos + 2)); @@ -166,8 +172,11 @@ bo = [^<]+; "do" => (Tokens.DO (yypos, yypos + 2)); "end" => (Tokens.END (yypos, yypos + 3)); "raise" => (Tokens.RAISE (yypos, yypos + 5)); + "let" => (Tokens.LET (yypos, yypos + 3)); + "in" => (Tokens.IN (yypos, yypos + 2)); "::" => (Tokens.CONS (yypos, yypos + 2)); + "o" => (Tokens.O (yypos, yypos + 1)); {id} => (Tokens.IDENT (yytext, yypos, yypos + size yytext)); {intconst} => (case Int.fromString yytext of SOME x => Tokens.INT (x, yypos, yypos + size yytext)