模組函式 (TT : TableFormat.TABLES)
  (IT : sig
          type 'a 終端符號
          type 'a 非終端符號
          type 'a 符號 =
              T : 'a 終端符號 -> 'a 符號
            | N : 'a 非終端符號 -> 'a 符號
          type xsymbol = X : 'a 符號 -> xsymbol
          type 'a lr1狀態 = int
          val 終端符號 : int -> xsymbol
          val 非終端符號 : int -> xsymbol
          val rhs : PackedIntArray.t * PackedIntArray.t
          val lr0_核心 : PackedIntArray.t
          val lr0_項目 : PackedIntArray.t * PackedIntArray.t
          val lr0_進入 : PackedIntArray.t
          val 可為空值 : string
          val first : int * string
        end)
  (ET : sig
          type 狀態
          val 編號 : 狀態 -> int
          type 語彙單元
          type 終端符號 = int
          type 非終端符號 = int
          type 語意值 = Obj.t
          val 語彙單元轉終端符號 : 語彙單元 -> 終端符號
          val 語彙單元轉值 : 語彙單元 -> 語意值
          val 錯誤終端符號 : 終端符號
          val 錯誤值 : 語意值
          val 對每個終端符號執行 : (終端符號 -> '-> 'a) -> '-> 'a
          type 產生式
          val 產生式索引 : 產生式 -> int
          val 尋找產生式 : int -> 產生式
          val 預設歸約 
            狀態 ->
            ('env -> 產生式 -> 'answer) ->
            ('env -> 'answer) -> 'env -> 'answer
          val 動作 
            狀態 ->
            終端符號 ->
            語意值 ->
            ('env -> bool -> 終端符號 -> 語意值 -> 狀態 -> 'answer) ->
            ('env -> 產生式 -> 'answer) ->
            ('env -> 'answer) -> 'env -> 'answer
          val goto_nt : 狀態 -> 非終端符號 -> 狀態
          val goto_prod : 狀態 -> 產生式 -> 狀態
          val maybe_goto_nt : 狀態 -> 非終端符號 -> 狀態 選項
          val 是開始符號 : 產生式 -> bool
          exception 錯誤
          type 語意動作 =
              (狀態, 語意值, 語彙單元) EngineTypes.env ->
              (狀態, 語意值) EngineTypes.stack
          val 語意動作 : 產生式 -> 語意動作
          val 可能歸約 : 狀態 -> 產生式 -> bool
          val 日誌記錄 : bool
          模組 Log 
            sig
              val 狀態 : 狀態 -> unit
              val 移位 : 終端符號 -> 狀態 -> unit
              val 歸約或接受 : 產生式 -> unit
              val 前瞻語彙單元 
                終端符號 -> Lexing.position -> Lexing.position -> unit
              val 啟動錯誤處理 : unit -> unit
              val 恢復錯誤處理 : unit -> unit
              val 處理錯誤 : 狀態 -> unit
            end
        end)
  (E : sig
         type 'a 環境 =
             (ET.狀態, ET.語意值, ET.語彙單元)
             CamlinternalMenhirLib.EngineTypes.env
       end)
  ->
  sig
    type 'a 符號 =
        T : 'IT.終端符號 -> 'a 符號
      | N : 'IT.非終端符號 -> 'a 符號
    type xsymbol = X : 'a 符號 -> xsymbol
    type 項目 = int * int
    val 比較終端符號 : 'IT.終端符號 -> 'IT.終端符號 -> int
    val 比較非終端符號 : 'IT.非終端符號 -> 'IT.非終端符號 -> int
    val 比較符號 : xsymbol -> xsymbol -> int
    val 比較產生式 : int -> int -> int
    val 比較項目 : 項目 -> 項目 -> int
    val 進入符號 : 'IT.lr1狀態 -> 'a 符號
    val 項目 : 'IT.lr1狀態 -> 項目 list
    val lhs : int -> xsymbol
    val rhs : int -> xsymbol list
    val 可為空值 : 'IT.非終端符號 -> bool
    val first : 'IT.非終端符號 -> 'IT.終端符號 -> bool
    val xfirst : xsymbol -> 'IT.終端符號 -> bool
    val 對每個終端符號執行 : (xsymbol -> '-> 'a) -> '-> 'a
    val 對每個終端符號執行,但錯誤除外 : (xsymbol -> '-> 'a) -> '-> 'a
    val 提供 
      'a 符號 ->
      IncrementalEngine.position ->
      '-> IncrementalEngine.position -> 'E.環境 -> 'E.環境
  end