Advertisement
Guest User

Ramon Snir

a guest
Jun 4th, 2010
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. {
  2. open System
  3. open System.Text
  4. open Microsoft.FSharp.Text.Lexing
  5. }
  6.  
  7. let digit = ['0'-'9']
  8. let alpha = ['a'-'z' 'A'-'Z']
  9. let whitespace = [' ' '\t']
  10. let nonwhitespace = ^[' ' '\t']
  11. let newline = ('\n' | '\r' '\n')
  12.  
  13. rule tokenize = parse
  14. | whitespace { tokenize lexbuf }
  15. | newline { lexbuf.EndPos <- lexbuf.EndPos.NextLine; tokenize lexbuf }
  16. | ['-']?digit+['.']?digit* { Digits <| Double.Parse(Encoding.UTF8.GetString(lexbuf.Lexeme)) }
  17. | '(' { LeftParen }
  18. | ')' { RightParen }
  19. | '\'' { Apostrophe }
  20. | ',' { Comma }
  21. | nonwhitespace+ { let s = Encoding.UTF8.GetString(lexbuf.Lexeme) in Text <| s.Substring(1, s.Length - 2) }
  22. | '"'[^'"']*'"' { let s = Encoding.UTF8.GetString(lexbuf.Lexeme) in Text <| s.Substring(1, s.Length - 2) }
  23. | eof { Eof }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement