Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let digit = ['0'-'9']
- let id = ['a'-'z'] ['a'-'z' '0'-'9']*
- let float='-'?digit+'.'digit*
- rule rr_syntax = parse
- | ' ' {rr_syntax lexbuf}
- | ';'{SEMI}
- | '"' {read_string (Buffer.create 10) lexbuf }
- | digit+ as inum{
- let i=float_of_string inum in
- NUMERIC(Num(i))
- }
- | float as fnum
- { let f=float_of_string fnum in
- NUMERIC(Num(f))
- }
- |"function" {FUNCTION}
- | id as v{ID(v)}
- | '(' {LPAREN}
- | ')' {RPAREN}
- | '{' {LBRACE}
- | '}' {RBRACE}
- (* | '+'{PLUS}
- | '-'{MINUS}
- | '*'{STAR}
- | '/'{SLASH}*)
- | "<-" {LEFTARROW}
- | '=' {EQ}
- | ',' {COMMA}
- | '[' {LBRACKET}
- | ']' {RBRACKET}
- (* | ':' {COLON}*)
- | eof {EOF}
- and read_string buf =
- parse
- | '"' {STRING ((Str((Buffer.contents buf)))) }
- | '\\' '/' { Buffer.add_char buf '/'; read_string buf lexbuf }
- | '\\' '\\' { Buffer.add_char buf '\\'; read_string buf lexbuf }
- | '\\' 'b' { Buffer.add_char buf '\b'; read_string buf lexbuf }
- | '\\' 'f' { Buffer.add_char buf '\012'; read_string buf lexbuf }
- | '\\' 'n' { Buffer.add_char buf '\n'; read_string buf lexbuf }
- | '\\' 'r' { Buffer.add_char buf '\r'; read_string buf lexbuf }
- | '\\' 't' { Buffer.add_char buf '\t'; read_string buf lexbuf }
- | [^ '"' '\\']+
- { Buffer.add_string buf (Lexing.lexeme lexbuf);
- read_string buf lexbuf
- }
- | _ { raise (SyntaxError ("Illegal string character: " ^ Lexing.lexeme lexbuf)) }
- | eof { raise (SyntaxError ("String is not terminated")) }
Add Comment
Please, Sign In to add comment