1 (* Modified by Vesa Karvonen on
2007-12-18.
2 * Create line directives
in output
.
4 (* ML
-Yacc Parser
Generator (c
) 1989 Andrew W
. Appel
, David R
. Tarditi
*)
6 functor ParseGenParserFun(structure Header
: HEADER
7 structure Parser
: ARG_PARSER
8 where type pos
= Header
.pos
9 sharing type Parser
.result
= Header
.parseResult
10 sharing type Parser
.arg
= Header
.inputSource
=
12 ) : PARSE_GEN_PARSER
=
15 structure Header
= Header
16 val parse
= fn file
=>
18 val in_str
= TextIO.openIn file
19 val source
= Header
.newSource(file
,in_str
,TextIO.stdOut
)
20 val error
= fn (s
: string,p
:Header
.pos
,_
) =>
21 Header
.error source p s
22 val stream
= Parser
.makeLexer (fn i
=> (TextIO.inputN(in_str
,i
)))
24 val (result
,_
) = (#line Header
.pos
:= 1; #start Header
.pos
:= 0;
26 Parser
.parse(15,stream
,error
,source
))
27 in (TextIO.closeIn in_str
; (result
,source
))