package archetype
Archetype language compiler
Install
Dune Dependency
Authors
Maintainers
Sources
1.1.2.tar.gz
md5=cc3e66ac130df626f0210be8ce68b1b0
sha512=913e561827e5559b8f7f68dc286e257ee484ccacb2fba8e7a4996576107969f7c4bb42f8a759ea082c1a6f0c2874297d52369f0840041177f23c85a2c99053e6
doc/src/archetype/pureLexer.ml.html
Source file pureLexer.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
open Parser open Parser.MenhirInterpreter type ptoken = token * Lexing.position * Lexing.position module Lexer : sig type t val initialize : Lexing.lexbuf -> unit val start : t val next : t -> ptoken * t val get : t -> ptoken val get' : t -> token val current_position : t -> Position.t val skip_until_before : (token -> bool) -> t -> t end = struct let buffer = ref [] let size = ref 0 let more = ref (fun () -> assert false) let initialize lexbuf = buffer := []; size := 0; more := lexer_lexbuf_to_supplier Lexer.token lexbuf type t = int let start = 0 let get pos = List.nth !buffer (!size - pos) let token_of_ptoken (p, _, _) = p let current_position_of_ptoken (_, start, stop) = Position.lex_join start stop let current_position pos = current_position_of_ptoken (get pos) let get' pos = token_of_ptoken (get pos) let next pos = if pos >= !size - 1 then ( buffer := !more () :: !buffer; incr size; ); let pos = pos + 1 in (get pos, pos) let skip_until_before pred pos = let rec aux pos = let token, _, _ = get pos in if token = EOF then pos else if pred token then pos - 1 else aux (snd (next pos)) in aux pos end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>