packages feed

cpsa-3.6.2: src/ocaml/scanner.mll

{
open Reader
open Lexing

let parse_error pos =
  parse_err pos "Bad token"
}
let special = ['*' '/' '<' '=' '>' '!' '?' ':' '$' '%' '_' '&' '~' '^']
let start = ['a' - 'z' 'A' - 'Z'] | special
let part = start | ['-' '+' '0' - '9']
rule token = parse
    [' ' '\t']				{ token lexbuf }
  | '\n'				{ new_line lexbuf; token lexbuf }
  | ';' [^ '\n']*			{ token lexbuf }
  | start part* as s			{ SYM(s) }
  | ['-' '+']? ['0'-'9']+ as n		{ NUM(int_of_string n) }
  | '"' ([^ '\\' '"']* as s) '"'	{ STR(s) }
  | '('					{ LPAR }
  | ')'					{ RPAR }
  | eof					{ EOF }
  | _					{ parse_error (lexeme_start_p lexbuf) }