如何使用ocamlyacc在OCaml中解析内存中的字符串(字符串类型)?
我有一个解析器,它使用Ocamlyacc和lex解析std输入。如何在OCaml中触发字符串的开始解析规则?如果没有看到您的代码,很难回答,但假设您的开始规则名为如何使用ocamlyacc在OCaml中解析内存中的字符串(字符串类型)?,ocaml,ocamlyacc,Ocaml,Ocamlyacc,我有一个解析器,它使用Ocamlyacc和lex解析std输入。如何在OCaml中触发字符串的开始解析规则?如果没有看到您的代码,很难回答,但假设您的开始规则名为start,生成的解析器模块名为parser.ml,您生成的lexer模块名为lexer.ml,您应该执行以下操作: let parse_from_string s = let lex = Lexing.from_string s in try Lexing.(lex.lex_curr_p <- {lex.
start
,生成的解析器模块名为parser.ml
,您生成的lexer模块名为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)
让我们从\u字符串解析\u=
让lex=Lexing.from_字符串s in
尝试
Lexing.(lex.lex\u curr\p
Printf.eprintf“靠近%s的错误\n\n”
(位置lex.lex\u start\p的字符串)
您的代码是什么样子的?在标准输入上调用lexer的部分?