Previous Up Next

Module Lexer (Lex)

ocamllex lexical definition for transducers. The keywords are chosen such that the textual syntax resembles the pretty-printer output.


{

open Parser

open Sys

type mylextype = int

exception Eof

}

rule token = parse
   [' ' '\t'] {   token lexbuf  } (∗ white space ∗)
∣ ['\n'] {   Absynt.lc#new_line(); 
                                           token lexbuf  } (∗ white space ∗)
∣ ';' {   SEMICOLON (Absynt.determine_pos(lexbuf))  }
∣ ',' {   COMMA (Absynt.determine_pos(lexbuf))  }
∣ '.' {   DOT (Absynt.determine_pos(lexbuf))  }
∣ '=' {   EQ (Absynt.determine_pos(lexbuf))  }
∣ '(' {   LPAREN (Absynt.determine_pos(lexbuf))  }
∣ ')' {   RPAREN (Absynt.determine_pos(lexbuf))  }
∣ '[' {   LBRACKET (Absynt.determine_pos(lexbuf))  }
∣ ']' {   RBRACKET (Absynt.determine_pos(lexbuf))  }
∣ '{' {   LBRACE (Absynt.determine_pos(lexbuf))  }
∣ '}' {   RBRACE (Absynt.determine_pos(lexbuf))  }
∣ "->" {   ARROW (Absynt.determine_pos(lexbuf))  }
∣ 'q' {   QSTATE (Absynt.determine_pos(lexbuf))  }
∣ '_' {   UNDERSCORE (Absynt.determine_pos(lexbuf))  }
∣ "states" {   STATES (Absynt.determine_pos(lexbuf))  }
∣ "initstates" {   ISTATES (Absynt.determine_pos(lexbuf))  }
∣ "symbols" {   SYMBOLS (Absynt.determine_pos(lexbuf))  }
∣ "rules" {   RULES (Absynt.determine_pos(lexbuf))  }
∣ ['a''z''A''Z''|'] + { IDENT((Absynt.determine_pos(lexbuf)),Lexing.lexeme lexbuf) } 
∣ ['0''9'] + { INT((Absynt.determine_pos(lexbuf)),int_of_string(Lexing.lexeme lexbuf)) }
∣ eof {   EOF  }
   and comment = parse
   eof {   EOF  }
∣  {   comment lexbuf  }


Previous Up Next