hamlet/PARSER-sig.ss
(module PARSER-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: PARSER-sig)
       (SIGSigExp:
        (SEQSpec:
         (STRUCTURESpec: (StrDesc: (StrId: Token-struct) (IDSigExp: (SigId: TOKEN-sig))))
         (SEQSpec:
          (STRUCTURESpec: (StrDesc: (StrId: Stream-struct) (IDSigExp: (SigId: STREAM-sig))))
          (SEQSpec:
           (EXCEPTIONSpec: (ExDesc: (VId: ParseError)))
           (SEQSpec:
            (TYPESpec: (TypDec: (TyVarseq:) (TyCon: pos-type)))
            (SEQSpec:
             (TYPESpec: (TypDec: (TyVarseq:) (TyCon: result-type)))
             (SEQSpec:
              (TYPESpec: (TypDec: (TyVarseq:) (TyCon: arg-type)))
              (SEQSpec:
               (TYPESpec: (TypDec: (TyVarseq:) (TyCon: svalue-type)))
               (SEQSpec:
                (VALSpec:
                 (ValDesc:
                  (VId: makeLexer)
                  (ARROWTy:
                   (PARTy: (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: int-type)) (CONTy: (Tyseq:) (LongTyCon: string-type))))
                   (CONTy:
                    (Tyseq:
                     (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: svalue-type)) (CONTy: (Tyseq:) (LongTyCon: pos-type))) (LongTyCon: Token.token-type)))
                    (LongTyCon: Stream.stream-type)))))
                (SEQSpec:
                 (VALSpec:
                  (ValDesc:
                   (VId: parse)
                   (ARROWTy:
                    (RECORDTy:
                     (TyRow:
                      (Lab: |1|)
                      (CONTy: (Tyseq:) (LongTyCon: int-type))
                      (TyRow:
                       (Lab: |2|)
                       (PARTy:
                        (CONTy:
                         (Tyseq:
                          (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: svalue-type)) (CONTy: (Tyseq:) (LongTyCon: pos-type))) (LongTyCon: Token.token-type)))
                         (LongTyCon: Stream.stream-type)))
                       (TyRow:
                        (Lab: |3|)
                        (PARTy:
                         (ARROWTy:
                          (RECORDTy:
                           (TyRow:
                            (Lab: |1|)
                            (CONTy: (Tyseq:) (LongTyCon: string-type))
                            (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: pos-type)) (TyRow: (Lab: |3|) (CONTy: (Tyseq:) (LongTyCon: pos-type))))))
                          (CONTy: (Tyseq:) (LongTyCon: unit-type))))
                        (TyRow: (Lab: |4|) (CONTy: (Tyseq:) (LongTyCon: arg-type)))))))
                    (RECORDTy:
                     (TyRow:
                      (Lab: |1|)
                      (CONTy: (Tyseq:) (LongTyCon: result-type))
                      (TyRow:
                       (Lab: |2|)
                       (CONTy:
                        (Tyseq:
                         (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: svalue-type)) (CONTy: (Tyseq:) (LongTyCon: pos-type))) (LongTyCon: Token.token-type)))
                        (LongTyCon: Stream.stream-type))))))))
                 (VALSpec:
                  (ValDesc:
                   (VId: sameToken)
                   (ARROWTy:
                    (RECORDTy:
                     (TyRow:
                      (Lab: |1|)
                      (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: svalue-type)) (CONTy: (Tyseq:) (LongTyCon: pos-type))) (LongTyCon: Token.token-type))
                      (TyRow:
                       (Lab: |2|)
                       (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: svalue-type)) (CONTy: (Tyseq:) (LongTyCon: pos-type))) (LongTyCon: Token.token-type)))))
                    (CONTy: (Tyseq:) (LongTyCon: bool-type)))))))))))))))))))))