hamlet/Join-functor.ss
(module Join-functor (planet chongkai/sml)
  (#%module-begin
   (Program:
    (FUNDECTopDec:
     (FunDec:
      (FunBind:
       (FunId: Join-functor)
       (StrId: _id28-struct)
       (SIGSigExp:
        (SHARINGTYPESpec:
         (SHARINGTYPESpec:
          (SHARINGTYPESpec:
           (SHARINGTYPESpec:
            (SHARINGTYPESpec:
             (SHARINGTYPESpec:
              (SHARINGTYPESpec:
               (SHARINGTYPESpec:
                (SEQSpec:
                 (STRUCTURESpec: (StrDesc: (StrId: ParserData-struct) (IDSigExp: (SigId: PARSER_DATA-sig))))
                 (SEQSpec:
                  (STRUCTURESpec: (StrDesc: (StrId: Lex-struct) (IDSigExp: (SigId: LEXER-sig))))
                  (STRUCTURESpec: (StrDesc: (StrId: LrParser-struct) (IDSigExp: (SigId: LR_PARSER-sig))))))
                (LongTyCon: ParserData.LrTable.state-type)
                (LongTyCon: LrParser.LrTable.state-type))
               (LongTyCon: ParserData.LrTable.term-type)
               (LongTyCon: LrParser.LrTable.term-type))
              (LongTyCon: ParserData.LrTable.nonterm-type)
              (LongTyCon: LrParser.LrTable.nonterm-type))
             (LongTyCon: ParserData.LrTable.table-type)
             (LongTyCon: LrParser.LrTable.table-type))
            (LongTyCon: ParserData.Token.token-type)
            (LongTyCon: LrParser.Token.token-type))
           (LongTyCon: Lex.UserDeclarations.svalue-type)
           (LongTyCon: ParserData.svalue-type))
          (LongTyCon: Lex.UserDeclarations.pos-type)
          (LongTyCon: ParserData.pos-type))
         (LongTyCon: Lex.UserDeclarations.token-type)
         (LongTyCon: ParserData.Token.token-type)))
       (LETStrExp:
        (DECStrDec: (OPENDec: (LongStrId: _id28-struct)))
        (COLONStrExp:
         (STRUCTStrExp:
          (SEQStrDec:
           (STRUCTUREStrDec: (StrBind: (StrId: Token-struct) (IDStrExp: (LongStrId: ParserData.Token-struct))))
           (SEQStrDec:
            (STRUCTUREStrDec: (StrBind: (StrId: Stream-struct) (IDStrExp: (LongStrId: LrParser.Stream-struct))))
            (SEQStrDec:
             (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: ParseError) (LongVId: LrParser.ParseError))))
             (SEQStrDec:
              (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: arg-type) (CONTy: (Tyseq:) (LongTyCon: ParserData.arg-type)))))
              (SEQStrDec:
               (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: pos-type) (CONTy: (Tyseq:) (LongTyCon: ParserData.pos-type)))))
               (SEQStrDec:
                (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: result-type) (CONTy: (Tyseq:) (LongTyCon: ParserData.result-type)))))
                (SEQStrDec:
                 (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: svalue-type) (CONTy: (Tyseq:) (LongTyCon: ParserData.svalue-type)))))
                 (SEQStrDec:
                  (DECStrDec:
                   (VALDec:
                    (TyVarseq:)
                    (PLAINValBind:
                     (ATPat: (IDAtPat: (LongVId: makeLexer)))
                     (ATExp:
                      (PARAtExp:
                       (APPExp:
                        (ATExp: (IDAtExp: (LongVId: o)))
                        (RECORDAtExp:
                         (ExpRow:
                          (Lab: |1|)
                          (ATExp: (IDAtExp: (LongVId: LrParser.Stream.streamify)))
                          (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: Lex.makeLexer))))))))))))
                  (SEQStrDec:
                   (DECStrDec:
                    (VALDec:
                     (TyVarseq:)
                     (PLAINValBind:
                      (ATPat: (IDAtPat: (LongVId: parse)))
                      (FNExp:
                       (Match:
                        (Mrule:
                         (ATPat:
                          (RECORDAtPat:
                           (FIELDPatRow:
                            (Lab: |1|)
                            (ATPat: (IDAtPat: (LongVId: lookahead)))
                            (FIELDPatRow:
                             (Lab: |2|)
                             (ATPat: (IDAtPat: (LongVId: lexer)))
                             (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: error))) (FIELDPatRow: (Lab: |4|) (ATPat: (IDAtPat: (LongVId: arg)))))))))
                         (ATExp:
                          (PARAtExp:
                           (APPExp:
                            (ATExp:
                             (PARAtExp:
                              (FNExp:
                               (Match:
                                (Mrule:
                                 (ATPat:
                                  (RECORDAtPat:
                                   (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: a))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: b)))))))
                                 (ATExp:
                                  (RECORDAtExp:
                                   (ExpRow:
                                    (Lab: |1|)
                                    (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ParserData.Actions.extract))) (IDAtExp: (LongVId: a)))))
                                    (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: b))))))))))))
                            (PARAtExp:
                             (ATExp:
                              (PARAtExp:
                               (APPExp:
                                (ATExp: (IDAtExp: (LongVId: LrParser.parse)))
                                (RECORDAtExp:
                                 (ExpRow:
                                  (Lab: table)
                                  (ATExp: (IDAtExp: (LongVId: ParserData.table)))
                                  (ExpRow:
                                   (Lab: lexer)
                                   (ATExp: (IDAtExp: (LongVId: lexer)))
                                   (ExpRow:
                                    (Lab: lookahead)
                                    (ATExp: (IDAtExp: (LongVId: lookahead)))
                                    (ExpRow:
                                     (Lab: saction)
                                     (ATExp: (IDAtExp: (LongVId: ParserData.Actions.actions)))
                                     (ExpRow:
                                      (Lab: arg)
                                      (ATExp: (IDAtExp: (LongVId: arg)))
                                      (ExpRow:
                                       (Lab: void)
                                       (ATExp: (IDAtExp: (LongVId: ParserData.Actions.void)))
                                       (ExpRow:
                                        (Lab: ec)
                                        (ATExp:
                                         (RECORDAtExp:
                                          (ExpRow:
                                           (Lab: is_keyword)
                                           (ATExp: (IDAtExp: (LongVId: ParserData.EC.is_keyword)))
                                           (ExpRow:
                                            (Lab: noShift)
                                            (ATExp: (IDAtExp: (LongVId: ParserData.EC.noShift)))
                                            (ExpRow:
                                             (Lab: preferred_change)
                                             (ATExp: (IDAtExp: (LongVId: ParserData.EC.preferred_change)))
                                             (ExpRow:
                                              (Lab: errtermvalue)
                                              (ATExp: (IDAtExp: (LongVId: ParserData.EC.errtermvalue)))
                                              (ExpRow:
                                               (Lab: error)
                                               (ATExp: (IDAtExp: (LongVId: error)))
                                               (ExpRow:
                                                (Lab: showTerminal)
                                                (ATExp: (IDAtExp: (LongVId: ParserData.EC.showTerminal)))
                                                (ExpRow: (Lab: terms) (ATExp: (IDAtExp: (LongVId: ParserData.EC.terms)))))))))))))))))))))))))))))))))
                   (DECStrDec:
                    (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: sameToken))) (ATExp: (IDAtExp: (LongVId: Token.sameToken))))))))))))))))
         (IDSigExp: (SigId: PARSER-sig))))))))))