Guest User

Untitled

a guest
Jun 4th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. let digit = ['0'-'9']
  2. let id = ['a'-'z'] ['a'-'z' '0'-'9']*
  3. let float='-'?digit+'.'digit*
  4. rule rr_syntax = parse
  5. | ' ' {rr_syntax lexbuf}
  6. | ';'{SEMI}
  7. | '"' {read_string (Buffer.create 10) lexbuf }
  8. | digit+ as inum{
  9. let i=float_of_string inum in
  10. NUMERIC(Num(i))
  11. }
  12. | float as fnum
  13. { let f=float_of_string fnum in
  14. NUMERIC(Num(f))
  15. }
  16. |"function" {FUNCTION}
  17. | id as v{ID(v)}
  18. | '(' {LPAREN}
  19. | ')' {RPAREN}
  20. | '{' {LBRACE}
  21. | '}' {RBRACE}
  22. (* | '+'{PLUS}
  23. | '-'{MINUS}
  24. | '*'{STAR}
  25. | '/'{SLASH}*)
  26. | "<-" {LEFTARROW}
  27. | '=' {EQ}
  28. | ',' {COMMA}
  29. | '[' {LBRACKET}
  30. | ']' {RBRACKET}
  31. (* | ':' {COLON}*)
  32. | eof {EOF}
  33.  
  34. and read_string buf =
  35. parse
  36. | '"' {STRING ((Str((Buffer.contents buf)))) }
  37. | '\\' '/' { Buffer.add_char buf '/'; read_string buf lexbuf }
  38. | '\\' '\\' { Buffer.add_char buf '\\'; read_string buf lexbuf }
  39. | '\\' 'b' { Buffer.add_char buf '\b'; read_string buf lexbuf }
  40. | '\\' 'f' { Buffer.add_char buf '\012'; read_string buf lexbuf }
  41. | '\\' 'n' { Buffer.add_char buf '\n'; read_string buf lexbuf }
  42. | '\\' 'r' { Buffer.add_char buf '\r'; read_string buf lexbuf }
  43. | '\\' 't' { Buffer.add_char buf '\t'; read_string buf lexbuf }
  44. | [^ '"' '\\']+
  45. { Buffer.add_string buf (Lexing.lexeme lexbuf);
  46. read_string buf lexbuf
  47. }
  48. | _ { raise (SyntaxError ("Illegal string character: " ^ Lexing.lexeme lexbuf)) }
  49. | eof { raise (SyntaxError ("String is not terminated")) }
Add Comment
Please, Sign In to add comment