               input = input.tl
             input.idx--
           return matchFailed(m, input.idx)
+        console.log "special error" + f
         throw f
 
     @match: (obj, rule, args, matchFailed) ->

          @_apply("char")
        @_applyWithArgs("seq", y)

    initialize: ->

    # match and matchAll are a grammar's "public interface"

          ans.push(x.call(this))
        catch f
          if f != @fail
            console.log "many error"
            console.log f
            throw f
          @input = origInput
          break
