1structure AssembleDiskFiles :> AssembleDiskFiles = 2struct 3 4 structure DiskFilesLrVals = 5 DiskFilesLrValsFun(structure Token = LrParser.Token) 6 7 structure DiskFilesLex = 8 DiskFilesLexFun(structure Tokens = DiskFilesLrVals.Tokens) 9 10 11 structure DiskFileParser = 12 Join(structure ParserData = DiskFilesLrVals.ParserData 13 structure Lex = DiskFilesLex 14 structure LrParser = LrParser) 15 16 fun invoke lexstream = let 17 fun print_error (s,i:int,_) = 18 TextIO.output(TextIO.stdErr, Int.toString i ^ ": " ^ s ^ "\n") 19 in 20 #1 (DiskFileParser.parse(15,lexstream,print_error,())) 21 end 22 23 fun raw_read_stream strm = let 24 val lexer = DiskFileParser.makeLexer (fn _ => Portable.input_line strm) 25 val _ = DiskFilesLex.UserDeclarations.pos := 1 26 in 27 invoke lexer 28 end 29 30 fun raw_read_file fname = let 31 val strm = TextIO.openIn fname 32 in 33 raw_read_stream strm before TextIO.closeIn strm 34 end 35 36 37end; 38