模块 Parsing

module Parsing: sig .. end

ocamlyacc 生成的解析器的运行时库。


val symbol_start : unit -> int

symbol_startParsing.symbol_end 仅可在语法规则的动作部分中调用。它们返回与规则左侧匹配的字符串的偏移量:symbol_start() 返回第一个字符的偏移量;symbol_end() 返回最后一个字符之后的偏移量。文件中的第一个字符位于偏移量 0 处。

val symbol_end : unit -> int
val rhs_start : int -> int

Parsing.symbol_startParsing.symbol_end 相同,但返回与规则右侧第 n 个项目匹配的字符串的偏移量,其中 nrhs_startrhs_end 的整数参数。对于最左侧的项目,n 为 1。

val rhs_end : int -> int

参见 Parsing.rhs_start

val symbol_start_pos : unit -> Lexing.position

symbol_start 相同,但返回 position 而不是偏移量。

val symbol_end_pos : unit -> Lexing.position

symbol_end 相同,但返回 position 而不是偏移量。

val rhs_start_pos : int -> Lexing.position

rhs_start 相同,但返回 position 而不是偏移量。

val rhs_end_pos : int -> Lexing.position

rhs_end 相同,但返回 position 而不是偏移量。

val clear_parser : unit -> unit

清空解析器栈。在解析函数返回后立即调用它,以删除解析器栈中指向在解析期间由语义动作构建的所有结构的指针。这是可选的,但可以降低程序的内存需求。

exception Parse_error

当解析器遇到语法错误时引发。也可以从语法规则的动作部分引发,以启动错误恢复。

val set_trace : bool -> bool

控制 ocamlyacc 生成的解析器的调试支持。在 Parsing.set_trace true 之后,执行解析器的下推自动机将在标准输出上打印其操作的跟踪(读取令牌、移位状态、按规则归约)。Parsing.set_trace false 关闭此调试跟踪。返回的布尔值是跟踪标志的前一个状态。