hamlet/LR_TABLE-sig.ss
(module LR_TABLE-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: LR_TABLE-sig)
       (SIGSigExp:
        (SEQSpec:
         (DATATYPESpec:
          (DatDesc:
           (TyVarseq: (TyVar: |'a|) (TyVar: |'b|))
           (TyCon: pairlist-type)
           (ConDesc:
            (VId: EMPTY)
            (ConDesc:
             (VId: PAIR)
             (RECORDTy:
              (TyRow:
               (Lab: |1|)
               (VARTy: (TyVar: |'a|))
               (TyRow:
                (Lab: |2|)
                (VARTy: (TyVar: |'b|))
                (TyRow: (Lab: |3|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'b|))) (LongTyCon: pairlist-type))))))))))
         (SEQSpec:
          (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: state-type) (ConDesc: (VId: STATE) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
          (SEQSpec:
           (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: term-type) (ConDesc: (VId: T) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
           (SEQSpec:
            (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: nonterm-type) (ConDesc: (VId: NT) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
            (SEQSpec:
             (DATATYPESpec:
              (DatDesc:
               (TyVarseq:)
               (TyCon: action-type)
               (ConDesc:
                (VId: SHIFT)
                (CONTy: (Tyseq:) (LongTyCon: state-type))
                (ConDesc: (VId: REDUCE) (CONTy: (Tyseq:) (LongTyCon: int-type)) (ConDesc: (VId: ACCEPT) (ConDesc: (VId: ERROR)))))))
             (SEQSpec:
              (TYPESpec: (TypDec: (TyVarseq:) (TyCon: table-type)))
              (SEQSpec:
               (VALSpec: (ValDesc: (VId: numStates) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: table-type)) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
               (SEQSpec:
                (VALSpec: (ValDesc: (VId: numRules) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: table-type)) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
                (SEQSpec:
                 (VALSpec:
                  (ValDesc:
                   (VId: describeActions)
                   (ARROWTy:
                    (CONTy: (Tyseq:) (LongTyCon: table-type))
                    (ARROWTy:
                     (CONTy: (Tyseq:) (LongTyCon: state-type))
                     (RECORDTy:
                      (TyRow:
                       (Lab: |1|)
                       (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: term-type)) (CONTy: (Tyseq:) (LongTyCon: action-type))) (LongTyCon: pairlist-type))
                       (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: action-type)))))))))
                 (SEQSpec:
                  (VALSpec:
                   (ValDesc:
                    (VId: describeGoto)
                    (ARROWTy:
                     (CONTy: (Tyseq:) (LongTyCon: table-type))
                     (ARROWTy:
                      (CONTy: (Tyseq:) (LongTyCon: state-type))
                      (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: nonterm-type)) (CONTy: (Tyseq:) (LongTyCon: state-type))) (LongTyCon: pairlist-type))))))
                  (SEQSpec:
                   (VALSpec:
                    (ValDesc:
                     (VId: action)
                     (ARROWTy:
                      (CONTy: (Tyseq:) (LongTyCon: table-type))
                      (ARROWTy:
                       (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: state-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: term-type)))))
                       (CONTy: (Tyseq:) (LongTyCon: action-type))))))
                   (SEQSpec:
                    (VALSpec:
                     (ValDesc:
                      (VId: goto)
                      (ARROWTy:
                       (CONTy: (Tyseq:) (LongTyCon: table-type))
                       (ARROWTy:
                        (RECORDTy:
                         (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: state-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: nonterm-type)))))
                        (CONTy: (Tyseq:) (LongTyCon: state-type))))))
                    (SEQSpec:
                     (VALSpec: (ValDesc: (VId: initialState) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: table-type)) (CONTy: (Tyseq:) (LongTyCon: state-type)))))
                     (SEQSpec:
                      (EXCEPTIONSpec:
                       (ExDesc:
                        (VId: Goto)
                        (RECORDTy:
                         (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: state-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: nonterm-type)))))))
                      (VALSpec:
                       (ValDesc:
                        (VId: mkLrTable)
                        (ARROWTy:
                         (RECORDTy:
                          (TyRow:
                           (Lab: actions)
                           (CONTy:
                            (Tyseq:
                             (PARTy:
                              (RECORDTy:
                               (TyRow:
                                (Lab: |1|)
                                (CONTy:
                                 (Tyseq: (CONTy: (Tyseq:) (LongTyCon: term-type)) (CONTy: (Tyseq:) (LongTyCon: action-type)))
                                 (LongTyCon: pairlist-type))
                                (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: action-type)))))))
                            (LongTyCon: array-type))
                           (TyRow:
                            (Lab: gotos)
                            (CONTy:
                             (Tyseq:
                              (CONTy:
                               (Tyseq: (CONTy: (Tyseq:) (LongTyCon: nonterm-type)) (CONTy: (Tyseq:) (LongTyCon: state-type)))
                               (LongTyCon: pairlist-type)))
                             (LongTyCon: array-type))
                            (TyRow:
                             (Lab: numStates)
                             (CONTy: (Tyseq:) (LongTyCon: int-type))
                             (TyRow:
                              (Lab: numRules)
                              (CONTy: (Tyseq:) (LongTyCon: int-type))
                              (TyRow: (Lab: initialState) (CONTy: (Tyseq:) (LongTyCon: state-type))))))))
                         (CONTy: (Tyseq:) (LongTyCon: table-type))))))))))))))))))))))))))