Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/Tools/FakeSMLAst/ast-rewrite.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/Tools/FakeSMLAst/ast-rewrite.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 774, Wed Jan 10 12:50:56 2001 UTC revision 775, Fri Jan 12 01:17:51 2001 UTC
# Line 5  Line 5 
5  struct  struct
6    
7     structure Ast = Ast     structure Ast = Ast
8       structure Error = MDLError
9    
10     type 'a rewriter = ('a -> 'a) -> ('a -> 'a)     type 'a rewriter = ('a -> 'a) -> ('a -> 'a)
11    
# Line 44  Line 45 
45                     | LAMBDAexp c => LAMBDAexp(map clause c)                     | LAMBDAexp c => LAMBDAexp(map clause c)
46                     | LETexp(d,e) => LETexp(map decl d,map exp e)                     | LETexp(d,e) => LETexp(map decl d,map exp e)
47                     | TYPEDexp(e,t) => TYPEDexp(exp e,ty t)                     | TYPEDexp(e,t) => TYPEDexp(exp e,ty t)
48                     | MARKexp(l,e) => MARKexp(l,exp e)                     | MARKexp(l,e) => (Error.setLoc l; MARKexp(l,exp e))
49                     | LOCexp(id,e,region) => LOCexp(id,exp e,region)                     | LOCexp(id,e,region) => LOCexp(id,exp e,region)
50                     | BITSLICEexp(e,slices) => BITSLICEexp(exp e,slices)                     | BITSLICEexp(e,slices) => BITSLICEexp(exp e,slices)
51                     | TYPEexp t => TYPEexp(ty t)                     | TYPEexp t => TYPEexp(ty t)
52                       | CONTexp(e,x) => CONTexp(exp e,x)
53                     | e => e                     | e => e
54          in  rwExp exp e end          in  rwExp exp e end
55    
# Line 64  Line 66 
66              | SEQdecl ds => SEQdecl(map decl ds)              | SEQdecl ds => SEQdecl(map decl ds)
67              | STRUCTUREdecl(id,ds,s,se) =>              | STRUCTUREdecl(id,ds,s,se) =>
68                   STRUCTUREdecl(id,map decl ds,s, sexp se)                   STRUCTUREdecl(id,map decl ds,s, sexp se)
69                | FUNCTORdecl(id,ds,s,se) =>
70                     FUNCTORdecl(id, map decl ds,s, sexp se)
71                | INCLUDESIGdecl s => INCLUDESIGdecl(sigexp s)
72              | SIGNATUREdecl(id,s) => SIGNATUREdecl(id, sigexp s)              | SIGNATUREdecl(id,s) => SIGNATUREdecl(id, sigexp s)
73              | STRUCTURESIGdecl(id,s) => STRUCTURESIGdecl(id, sigexp s)              | STRUCTURESIGdecl(id,s) => STRUCTURESIGdecl(id, sigexp s)
74              | OPENdecl ids => OPENdecl ids              | OPENdecl ids => OPENdecl ids
75              | FUNCTORARGdecl(id,se) => FUNCTORARGdecl(id, sigexp se)              | FUNCTORARGdecl(id,se) => FUNCTORARGdecl(id, sigexp se)
76              | MARKdecl(l,d) => MARKdecl(l,decl d)              | EXCEPTIONdecl ebs => EXCEPTIONdecl(map ebind ebs)
77                | MARKdecl(l,d) => (Error.setLoc l; MARKdecl(l,decl d))
78              | d => d              | d => d
79          in rwDecl decl d end          in rwDecl decl d end
80    
81            and ebind(b as EXCEPTIONbind(id,NONE)) = b
82              | ebind(EXCEPTIONbind(id,SOME t)) = EXCEPTIONbind(id,SOME(ty t))
83              | ebind(b as EXCEPTIONEQbind _) = b
84    
85          and sigexp se =          and sigexp se =
86              let val se = case se of              let val se = case se of
87                    IDsig _ => se                    IDsig _ => se
# Line 84  Line 94 
94    
95          and sexp se =          and sexp se =
96              let val se = case se of              let val se = case se of
97                    APPsexp(a,se) => APPsexp(a,sexp se)                    APPsexp(a,se) => APPsexp(sexp a,sexp se)
98                  | DECLsexp ds => DECLsexp(map decl ds)                  | DECLsexp ds => DECLsexp(map decl ds)
99                  | CONSTRAINEDsexp(s, si) => CONSTRAINEDsexp(sexp s,sigexp si)                  | CONSTRAINEDsexp(s, si) => CONSTRAINEDsexp(sexp s,sigexp si)
100                  | IDsexp _ => se                  | IDsexp _ => se
# Line 119  Line 129 
129                  | CONSpat(id,NONE) => p                  | CONSpat(id,NONE) => p
130                  | CONSpat(id,SOME p) => CONSpat(id,SOME(pat p))                  | CONSpat(id,SOME p) => CONSpat(id,SOME(pat p))
131                  | ORpat ps => ORpat(map pat ps)                  | ORpat ps => ORpat(map pat ps)
132                    | ANDpat ps => ANDpat(map pat ps)
133                    | NOTpat p => NOTpat(pat p)
134                    | WHEREpat(p,e) => WHEREpat(pat p,exp e)
135                    | NESTEDpat(p,e,p') => NESTEDpat(pat p,exp e,pat p')
136              in rwPat pat p end              in rwPat pat p end
137    
138          and fbind(FUNbind(id,c)) = FUNbind(id,map clause c)          and fbind(FUNbind(id,c)) = FUNbind(id,map clause c)

Legend:
Removed from v.774  
changed lines
  Added in v.775

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0