diff options
Diffstat (limited to 'Source/Forro/Lexer.fsl')
-rw-r--r-- | Source/Forro/Lexer.fsl | 120 |
1 files changed, 60 insertions, 60 deletions
diff --git a/Source/Forro/Lexer.fsl b/Source/Forro/Lexer.fsl index 4252af23..5f69df7c 100644 --- a/Source/Forro/Lexer.fsl +++ b/Source/Forro/Lexer.fsl @@ -1,60 +1,60 @@ -{
-module Lexer
-open System
-open Parser
-open Microsoft.FSharp.Text.Lexing
-}
-
-// These are some regular expression definitions
-let digit = ['0'-'9']
-let nondigit = [ 'a'-'z' 'A'-'Z' '_' ]
-let idchar = (nondigit | digit)
-let whitespace = [' ' '\t' ]
-let newline = ('\n' | '\r' '\n')
-
-rule tokenize = parse
-| whitespace { tokenize lexbuf }
-| newline { // lexbuf.EndPos <- lexbuf.EndPos.AsNewLinePos() ;
- tokenize lexbuf }
-// operators
-| "==" { EQ }
-| "!=" { NEQ }
-| "+" { PLUS }
-| "-" { MINUS }
-| "*" { STAR }
-| "<" { LESS }
-| "<=" { ATMOST }
-| "and" { AND }
-| "or" { OR }
-| "not" { NOT }
-| "old" { OLD }
-| "." { DOT }
-// misc
-| "(" { LPAREN }
-| ")" { RPAREN }
-| "{" { LCURLY }
-| "}" { RCURLY }
-| ";" { SEMI }
-| "," { COMMA }
-| ":=" { ASSIGN }
-// keywords
-| "procedure" { PROCEDURE }
-| "requires" { REQUIRES }
-| "ensures" { ENSURES }
-| "do" { DO }
-| "end" { END }
-| "new" { NEW }
-| "if" { IF }
-| "then" { THEN }
-| "else" { ELSE }
-| "while" { WHILE }
-| "invariant" { INVARIANT }
-| "call" { CALL }
-| "assert" { ASSERT }
-// literals
-| ['-']?digit+ { INT32 (Int32.Parse(LexBuffer<char>.LexemeString lexbuf)) }
-| "null" { NULL }
-// identifiers
-| idchar+ { ID (LexBuffer<char>.LexemeString lexbuf) }
-// EOF
-| eof { EOF }
+{ +module Lexer +open System +open Parser +open Microsoft.FSharp.Text.Lexing +} + +// These are some regular expression definitions +let digit = ['0'-'9'] +let nondigit = [ 'a'-'z' 'A'-'Z' '_' ] +let idchar = (nondigit | digit) +let whitespace = [' ' '\t' ] +let newline = ('\n' | '\r' '\n') + +rule tokenize = parse +| whitespace { tokenize lexbuf } +| newline { // lexbuf.EndPos <- lexbuf.EndPos.AsNewLinePos() ; + tokenize lexbuf } +// operators +| "==" { EQ } +| "!=" { NEQ } +| "+" { PLUS } +| "-" { MINUS } +| "*" { STAR } +| "<" { LESS } +| "<=" { ATMOST } +| "and" { AND } +| "or" { OR } +| "not" { NOT } +| "old" { OLD } +| "." { DOT } +// misc +| "(" { LPAREN } +| ")" { RPAREN } +| "{" { LCURLY } +| "}" { RCURLY } +| ";" { SEMI } +| "," { COMMA } +| ":=" { ASSIGN } +// keywords +| "procedure" { PROCEDURE } +| "requires" { REQUIRES } +| "ensures" { ENSURES } +| "do" { DO } +| "end" { END } +| "new" { NEW } +| "if" { IF } +| "then" { THEN } +| "else" { ELSE } +| "while" { WHILE } +| "invariant" { INVARIANT } +| "call" { CALL } +| "assert" { ASSERT } +// literals +| ['-']?digit+ { INT32 (Int32.Parse(LexBuffer<char>.LexemeString lexbuf)) } +| "null" { NULL } +// identifiers +| idchar+ { ID (LexBuffer<char>.LexemeString lexbuf) } +// EOF +| eof { EOF } |