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/cm/bootstrap/build-initdg.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/bootstrap/build-initdg.sml

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

revision 358, Mon Jun 28 13:59:11 1999 UTC revision 364, Fri Jul 2 07:33:12 1999 UTC
# Line 18  Line 18 
18            core: DependencyGraph.sbnode,            core: DependencyGraph.sbnode,
19            pervasive: DependencyGraph.sbnode,            pervasive: DependencyGraph.sbnode,
20            primitives: (string * DependencyGraph.sbnode) list,            primitives: (string * DependencyGraph.sbnode) list,
21            binpaths: string list } option            binpaths: (string * bool) list } option
22  end  end
23    
24  structure BuildInitDG :> BUILD_INIT_DG = struct  structure BuildInitDG :> BUILD_INIT_DG = struct
# Line 59  Line 59 
59                       else SOME (String.tokens sep line, newpos)                       else SOME (String.tokens sep line, newpos)
60              end              end
61    
62              fun loop (split, m, bnl, pos) =              fun loop (split, m, bnl, pos, lst) =
63                  case lineIn pos of                  case lineIn pos of
64                      NONE => (error (pos, pos) "unexpected end of file"; NONE)                      NONE => (error (pos, pos) "unexpected end of file"; NONE)
65                    | SOME (line, newpos) => let                    | SOME (line, newpos) => let
# Line 96  Line 96 
96                              val n = DG.SNODE { smlinfo = i,                              val n = DG.SNODE { smlinfo = i,
97                                                localimports = li,                                                localimports = li,
98                                                globalimports = gi }                                                globalimports = gi }
                             val bnl' =  
                                 case bnl of  
                                     NONE => NONE  
                                   | SOME l => SOME (SmlInfo.binname i :: l)  
99                          in                          in
100                              loop (split,                              loop (split,
101                                    StringMap.insert (m, name, DG.SB_SNODE n),                                    StringMap.insert (m, name, DG.SB_SNODE n),
102                                    bnl', newpos)                                    (SmlInfo.binname i, lst) :: bnl,
103                                      newpos,
104                                      lst)
105                          end                          end
106                      in                      in
107                          case line of                          case line of
108                              [] => loop (split, m, bnl, newpos)                              [] => loop (split, m, bnl, newpos, lst)
109                            | ["split"] => loop (true, m, bnl, newpos)                            | ["split"] => loop (true, m, bnl, newpos, lst)
110                            | ["nosplit"] => loop (false, m, bnl, newpos)                            | ["nosplit"] => loop (false, m, bnl, newpos, lst)
111                            | ["start"] => loop (split, m, SOME [], newpos)                            | ["start"] => loop (split, m, bnl, newpos, true)
112                            | ("bind" :: name :: file :: args)  =>                            | ("bind" :: name :: file :: args)  =>
113                                  node (name, file, args)                                  node (name, file, args)
114                            | ("return" :: core :: rts :: pervasive :: prims) =>                            | ("return" :: core :: rts :: pervasive :: prims) =>
# Line 119  Line 117 
117                                         pervasive = look pervasive,                                         pervasive = look pervasive,
118                                         primitives =                                         primitives =
119                                                map (fn n => (n, look n)) prims,                                                map (fn n => (n, look n)) prims,
120                                         binpaths = rev (getOpt (bnl, [])) }                                         binpaths = rev bnl }
121                            | _ => (error "malformed line"; NONE)                            | _ => (error "malformed line"; NONE)
122                      end                      end
123          in          in
124              loop (false, StringMap.empty, NONE, 1)              loop (false, StringMap.empty, [], 1, false)
125          end          end
126            fun openIt () = TextIO.openIn (SrcPath.osstring specgroup)
127      in      in
128          SafeIO.perform { openIt = fn () => SrcPath.openTextIn specgroup,          SafeIO.perform { openIt = openIt,
129                           closeIt = TextIO.closeIn,                           closeIt = TextIO.closeIn,
130                           work = work,                           work = work,
131                           cleanup = fn () => () }                           cleanup = fn () => () }

Legend:
Removed from v.358  
changed lines
  Added in v.364

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