package sqlgg

  1. Overview
  2. Docs
SQL Guided (code) Generator

Install

Dune Dependency

Authors

Maintainers

Sources

sqlgg-20231201.tar.gz
md5=0841965b140612b9b1fb066cc21f88cb
sha256=7fbee5972b8fa0488bf31bb482101c93c328f67ceef3e95af165d554736d78fe
sha512=5d14e03e02f62c72c57cc574fd9f637e99118556a739af16d71e8813a8cbd8c330e48d69b9577ef2e9d0227aee9d85664cb4907f479927b7431e0475d954fa1a

doc/src/sqlgg.lib/parser_utils.ml.html

Source file parser_utils.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
(* Simple wrapper tying together parser and lexer *)

module type Parser_type =
sig
  type token
  type result
  val input : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> result
  val rule : Lexing.lexbuf -> token
end

exception Error of exn * (int * int * string * string)

module Make(T : Parser_type) =
struct
  let parse_buf_exn lexbuf =
    try
      T.input T.rule lexbuf
    with exn ->
      begin
        let curr = lexbuf.Lexing.lex_curr_p in
        let line = curr.Lexing.pos_lnum in
        let cnum = curr.Lexing.pos_cnum - curr.Lexing.pos_bol in
        let tok = Lexing.lexeme lexbuf in
        let tail = Sql_lexer.ruleTail "" lexbuf in
				raise (Error (exn,(line,cnum,tok,tail)))
      end

  let parse_buf lexbuf = try Some (parse_buf_exn lexbuf) with _ -> None

  let parse_stdin () = parse_buf (Lexing.from_channel stdin)
  let parse_string str = (*Error.log "Parsing : %s" str; *)
                         parse_buf (Lexing.from_string str)

  let parse_file filename =
    let contents = try Std.input_file filename with _ -> "" in
    parse_string contents

end
OCaml

Innovation. Community. Security.