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/parse/parse.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/parse/parse.sml

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

revision 274, Fri May 14 05:23:02 1999 UTC revision 277, Mon May 17 09:13:26 1999 UTC
# Line 30  Line 30 
30          val currentDir = AbsPath.dir group          val currentDir = AbsPath.dir group
31          val context = AbsPath.relativeContext (AbsPath.dir group)          val context = AbsPath.relativeContext (AbsPath.dir group)
32          val filename = AbsPath.name group          val filename = AbsPath.name group
33            val _ = Say.vsay (concat ["[scanning ", filename, "]\n"])
34          val stream = TextIO.openIn filename          val stream = TextIO.openIn filename
35          val errcons =          val errcons =
36              { linewidth = !P.linewidth, flush = P.flush, consumer = P.say }              { linewidth = !P.linewidth, flush = P.flush, consumer = P.say }
37          val source = S.newSource (filename, 1, stream, false, errcons)          val source = S.newSource (filename, 1, stream, false, errcons)
38          val sourceMap = #sourceMap source          val sourceMap = #sourceMap source
39          fun error region m =          fun error' region m b = EM.error source region EM.COMPLAIN m b
40              EM.error source region EM.COMPLAIN m EM.nullErrorBody          fun error region m = error' region m EM.nullErrorBody
41    
42          (* recParse returns a group (not an option)          (* recParse returns a group (not an option)
43           * and re-raises LrParser.ParseError.           * and re-raises LrParser.ParseError.
# Line 48  Line 49 
49                  NONE => (#anyErrors source := true; CMSemant.emptyGroup)                  NONE => (#anyErrors source := true; CMSemant.emptyGroup)
50                | SOME res => res                | SOME res => res
51    
52          fun doMember (p, p1, p2, c) =          fun doMember (p, p1, p2, c, e) =
53              CMSemant.member (recParse (p1, p2)) { sourcepath = p,              CMSemant.member (recParse (p1, p2))
54                                { sourcepath = p,
55                                                    group = group,                                                    group = group,
56                                                    class = c }                                class = c,
57                                  error = e }
58    
59          (* checking for cycles among groups and printing them nicely *)          (* checking for cycles among groups and printing them nicely *)
60          val _ = let          val _ = let
# Line 150  Line 153 
153          val (parseResult, _) =          val (parseResult, _) =
154              CMParse.parse (lookAhead, tokenStream,              CMParse.parse (lookAhead, tokenStream,
155                             fn (s,p1,p2) => error (p1, p2) s,                             fn (s,p1,p2) => error (p1, p2) s,
156                             (context, error, recParse, doMember))                             (context, error', error, recParse, doMember))
157      in      in
158          TextIO.closeIn stream;          TextIO.closeIn stream;
159          if !(#anyErrors source) then NONE          if !(#anyErrors source) then NONE

Legend:
Removed from v.274  
changed lines
  Added in v.277

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