@@ -79,9 +79,14 @@ module ParserMonad =
7979 type ParserMonad < 'a > =
8080 ParserMonad of ( MidiData -> State -> Result < 'a * State , ParseError > )
8181
82- let inline logf format =
82+ let nullOut = new StreamWriter( Stream.Null) :> TextWriter
83+ let mutable debug = false
84+ let logf format = //format: Printf.TextWriterFormat<'a>) =
85+ if debug then
86+ printfn format
87+ else
88+ fprintfn nullOut format
8389
84- printfn format
8590 let inline private apply1 ( parser : ParserMonad < 'a >)
8691 ( midiData : byte [])
8792 ( state : State ) : Result < 'a * State , ParseError > =
@@ -90,7 +95,7 @@ module ParserMonad =
9095 let result = fn midiData state
9196 match result with
9297 | Ok ( r, state) ->
93- logf " parse ok: %50s %O " ( sprintf " %A " r) state
98+ logf " parse ok: %50s %O " ( sprintf " %O " r) state
9499 #if DEBUG_ LASTPARSE
95100 let state = { state with LastParse = r }
96101 #endif
@@ -293,15 +298,18 @@ module ParserMonad =
293298 let mutable error = Ok ( Unchecked.defaultof<_>, lastState)
294299 let mutable i = LanguagePrimitives.GenericZero
295300 let mutable errorOccured = false
301+ logf " bound repeat %i " n
296302 while i < n && not errorOccured do
297- i <- i + LanguagePrimitives.GenericOne
303+ logf " bound repeat %i /%i " i n
304+
298305 match apply1 p data lastState with
299306 | Ok ( item, state) ->
300307 lastState <- state
301308 result.[ int i] <- item
302309 | ( Error e) ->
303310 error <- Error e
304311 errorOccured <- true
312+ i <- i + LanguagePrimitives.GenericOne
305313 if errorOccured then
306314 error
307315 else
0 commit comments