如何使用ocamlyacc解析OCaml中的内存字符串(String类型)?

时间:2017-12-12 12:58:28

标签: ocaml ocamlyacc

我有一个解析器,它使用Ocamlyacc和lex解析std输入。如何在OCaml中的字符串上触发启动解析规则?

1 个答案:

答案 0 :(得分:2)

在没有看到您的代码的情况下,很难回答,但假设您的启动规则被称为Parser.ml,并且您生成的解析器模块被称为Lexer.ml并且您生成的词法分析器模块被称为{{ 1}},你应该做类似的事情:

let parse_from_string s =
  let lex = Lexing.from_string s in
    try
      Lexing.(lex.lex_curr_p <- {lex.lex_curr_p with pos_cnum = 0});
      Parser.start Lexer.token lex
    with
    | Failure s ->
        Printf.eprintf "Error near %s\n\n"
        (string_of_position lex.lex_start_p)