I have now developed a spec compliant NTriples parser . NTriples is a very easy format to parse as each statement is on one line, and is just a simple triple. So for parsing something this simple nomo is perhaps overkill. But it does have the advantage of allowing me to quickly explore nomo.
I now have a test suite that shows that I can feed the parser chunks of data , proving that it is asynchronous. But even though the input is asynchronous, I am not sure the result is. The call to parser.result seems to be final as it sends an EOF. So currently I am accumulating a lot of results in a buffer. It would be a lot more efficient if I could pass the results as they are parsed along to another process to store them in a database or reserialise them in another format to send to another agent perhaps.
Is this possible?
Also along the same lines, I am not quite sure how much backtracking state nomo keeps. Is it possible to reduce the backtracking? (if this is a problem) I think NTriples needs no look ahaead, and the next parser I am working on only needs a few char look ahead.
 https://github.com/betehess/pimp-my-rdf/blob/db2c59ff9768e14af19a887b321101b878c33f22/n-triples-parser/src/main/scala/Parser.scala  https://github.com/betehess/pimp-my-rdf/blob/db2c59ff9768e14af19a887b321101b878c33f22/n-triples-parser-test-suite/src/main/scala/ParserTest.scala