File: lexer.mll

package info (click to toggle)
ocaml-dune 3.21.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 37,948 kB
  • sloc: ml: 189,514; asm: 28,570; ansic: 15,173; sh: 1,448; lisp: 625; makefile: 160; python: 143; cpp: 48; javascript: 10
file content (20 lines) | stat: -rw-r--r-- 519 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let space = [' ']+

let digit = ['0'-'9']

let letter = ['a'-'z']

let ident = letter+

rule token = parse
    | eof { Parser.Eof }
    | space { token lexbuf }
    | '\n' { Parser.Eof }
    | '+' { Parser.Plus }
    | '*' { Parser.Star }
    | '/' { Parser.Slash }
    | '(' { Parser.Lpar }
    | ')' { Parser.Rpar }
    | digit+ { Parser.Int (int_of_string (Lexing.lexeme lexbuf)) }
    | digit+ '.' digit+ { Parser.Float (float_of_string (Lexing.lexeme lexbuf)) }
    | ident { Parser.Ident (Lexing.lexeme lexbuf) }