Guest User

Untitled

a guest
Oct 23rd, 2021
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.61 KB | None | 0 0
  1. module Tokens : sig
  2.   type t
  3.   [@@deriving show]
  4.  
  5.   type reversed
  6.   [@@deriving show]
  7.  
  8.   val empty : reversed
  9.   val prepend : Token.t -> reversed -> reversed
  10.   val reverse : reversed -> t
  11.   val to_list : t -> Token.t list
  12. end = Raw_tokens
  13.  
  14. let lex_string (x : string) : Tokens.t =
  15.   let rec lex_loop lexbuf acc =
  16.     let current = Raw_lexer.read lexbuf in
  17.     match current with
  18.     | EOF -> acc
  19.     | _ -> lex_loop lexbuf (Tokens.prepend current acc)
  20.   in
  21.   let initial_lexbuf = Lexing.from_string x in
  22.   let reversed_tokens = lex_loop initial_lexbuf Tokens.empty in
  23.   Tokens.reverse reversed_tokens
Advertisement
Add Comment
Please, Sign In to add comment