hamlet/PARSE-sig.ss
(module PARSE-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: PARSE-sig)
       (SIGSigExp:
        (SEQSpec:
         (SEQSpec:
          (INCLUDESpec:
           (WHERETYPESigExp:
            (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: source-type))))
            (TyVarseq:)
            (LongTyCon: source-type)
            (CONTy: (Tyseq:) (LongTyCon: Source.source-type))))
          (EMPTYSpec:))
         (SEQSpec:
          (SEQSpec:
           (INCLUDESpec:
            (WHERETYPESigExp:
             (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: InfEnv-type))))
             (TyVarseq:)
             (LongTyCon: InfEnv-type)
             (CONTy: (Tyseq:) (LongTyCon: Infix.InfEnv-type))))
           (EMPTYSpec:))
          (SEQSpec:
           (SEQSpec:
            (INCLUDESpec:
             (WHERETYPESigExp:
              (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Program-type))))
              (TyVarseq:)
              (LongTyCon: Program-type)
              (CONTy: (Tyseq:) (LongTyCon: GrammarProgram.Program-type))))
            (EMPTYSpec:))
           (VALSpec:
            (ValDesc:
             (VId: parse)
             (ARROWTy:
              (RECORDTy:
               (TyRow:
                (Lab: |1|)
                (CONTy: (Tyseq:) (LongTyCon: InfEnv-type))
                (TyRow:
                 (Lab: |2|)
                 (CONTy: (Tyseq:) (LongTyCon: source-type))
                 (TyRow: (Lab: |3|) (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: string-type))) (LongTyCon: option-type))))))
              (RECORDTy:
               (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: InfEnv-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Program-type)))))))))))))))
    (Program: (STRDECTopDec: (EMPTYStrDec:))))))