Add commented benchmark from Daniel Spiewak's scala parser.
Implement nullable? for terminal(ish) parsers.
Implement non-recursive cases for Parser#nullable?.
Factor out a right-recursion function from specs.
Factor out a right-recursion function from specs.
Rename nullable? to unfixed-nullable? in anticipation of adding fixed-points.
Add a fixedpoint argument to Parser#unfixed-nullable?.
Implement nullable? predicate for recursive parsers.
Tweak weighting of literals in atomic-parser-generator.
Use compound-parsers in nullability checks.
Add an implementation of unfixed-nullable? for Delay instances.
Use nullability predicate to avoid unneeded allocations in
Concatenation. Has about a 26% speedup when parsing tiny tiny JSON
documents.
Avoid returning redundant results, and better conform to the spec by not including value-p (which includes object-p/array-p) as an alternate for json-p.
Add tracer macro.
Use clojure.core/memoize to memoize json-test/rep calls, as it is not called frequently.
Push whitespace consumption as close to terminals and on the right by convention, as the previous approach lead to some ambgiuity problems (eg: 196608 parse trees from a 242 byte JSON file, all the same).
Set *warn-on-reflection* for hygene.
Memoize core/nullable?
Lazify Delay#uncached-derive-null for good measure.
Add criterium.