模組 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

請參閱 Parsing.symbol_start

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 會關閉此偵錯追蹤。回傳的布林值是追蹤旗標的先前狀態。