我有一个解析器,它使用 Ocamlyacc 和 lex 解析 std 输入。如何触发 OCaml 中字符串的开始解析规则?
1 回答
2
没有看到您的代码,很难回答,但假设您的启动规则被调用start
,并且您生成的解析器模块被调用Parser.ml
并且您生成的词法分析器模块被调用Lexer.ml
,您应该执行以下操作:
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)
于 2017-12-12T15:24:05.153 回答