hamlet/PPProgram-struct.ss
(module PPProgram-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: PPProgram-struct)
       (COLONStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (DECStrDec: (OPENDec: (LongStrId: GrammarProgram-struct)))
          (SEQStrDec:
           (DECStrDec: (OPENDec: (LongStrId: PPGrammar-struct)))
           (DECStrDec:
            (VALDec:
             (TyVarseq:)
             (RECValBind:
              (PLAINValBind:
               (ATPat: (IDAtPat: (LongVId: ppProgram)))
               (FNExp:
                (Match:
                 (Mrule:
                  (ATPat:
                   (PARAtPat:
                    (ATPat:
                     (RECORDAtPat:
                      (FIELDPatRow:
                       (Lab: |1|)
                       (ATPat: (IDAtPat: (LongVId: out)))
                       (FIELDPatRow:
                        (Lab: |2|)
                        (ATPat: (IDAtPat: (LongVId: i)))
                        (FIELDPatRow:
                         (Lab: |3|)
                         (ATPat:
                          (PARAtPat:
                           (CONPat:
                            (LongVId: Program)
                            (RECORDAtPat:
                             (FIELDPatRow:
                              (Lab: |1|)
                              (ATPat: (IDAtPat: (LongVId: I)))
                              (FIELDPatRow:
                               (Lab: |2|)
                               (ATPat: (IDAtPat: (LongVId: topdec)))
                               (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: program_opt)))))))))))))))))
                  (ATExp:
                   (PARAtExp:
                    (APPExp:
                     (ATExp: (IDAtExp: (LongVId: ppElem)))
                     (RECORDAtExp:
                      (ExpRow:
                       (Lab: |1|)
                       (ATExp: (IDAtExp: (LongVId: out)))
                       (ExpRow:
                        (Lab: |2|)
                        (ATExp: (IDAtExp: (LongVId: i)))
                        (ExpRow:
                         (Lab: |3|)
                         (ATExp: (SCONAtExp: (STRINGSCon: "Program")))
                         (ExpRow:
                          (Lab: |4|)
                          (ATExp: (IDAtExp: (LongVId: I)))
                          (ExpRow:
                           (Lab: |5|)
                           (ATExp:
                            (PARAtExp:
                             (APPExp:
                              (ATExp: (IDAtExp: (LongVId: ::)))
                              (RECORDAtExp:
                               (ExpRow:
                                (Lab: |1|)
                                (ATExp:
                                 (PARAtExp:
                                  (APPExp:
                                   (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: sub))) (IDAtExp: (LongVId: PPModule.ppTopDec)))))
                                   (IDAtExp: (LongVId: topdec)))))
                                (ExpRow:
                                 (Lab: |2|)
                                 (APPExp:
                                  (ATExp: (IDAtExp: (LongVId: ::)))
                                  (RECORDAtExp:
                                   (ExpRow:
                                    (Lab: |1|)
                                    (ATExp:
                                     (PARAtExp:
                                      (APPExp:
                                       (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: subo))) (IDAtExp: (LongVId: ppProgram)))))
                                       (IDAtExp: (LongVId: program_opt)))))
                                    (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: nil))))))))))))))))))))))))))))))))
        (IDSigExp: (SigId: PP_PROGRAM-sig)))))))))