<div dir="ltr">David,<div><br></div><div>Roughly, yes. I usually recommend Neotoma for smallish grammars, where regexps are insufficient but a full tokenizer/parser is overkill. I haven't spent loads of time optimizing it for memory usage and complexity, so deeply recursive grammars or ones with lots of rules tend to be slower than yecc. On the other hand, Neotoma generates parsers which are comparatively readable and, where possible, will use binary-sharing on the input. There's more about Neotoma usage on the wiki[1].</div>
<div><br></div><div>Neotoma is currently in use in myproto[2], cuttlefish[3], and rivus[4], to name a few.</div><div><br></div><div>[1] <a href="https://github.com/seancribbs/neotoma/wiki">https://github.com/seancribbs/neotoma/wiki</a></div>
<div>[2] <a href="https://github.com/altenwald/myproto" target="_blank">https://github.com/altenwald/myproto</a></div>
<div>[3] <a href="https://github.com/basho/cuttlefish" target="_blank">https://github.com/basho/cuttlefish</a></div><div>[4] <a href="https://github.com/vascokk/rivus_cep">https://github.com/vascokk/rivus_cep</a></div><div>
<br></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 6, 2014 at 1:15 PM, David Mercer <span dir="ltr"><<a href="mailto:dmercer@gmail.com" target="_blank">dmercer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">This is as an alternative to <i>yecc,</i> yes? <i>Yecc</i> if you want to specify your grammar in BNF, <i>neotoma</i> for PEG? Any advantages of one over the other?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Cheers,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">DBM<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:erlang-questions-bounces@erlang.org" target="_blank">erlang-questions-bounces@erlang.org</a> [mailto:<a href="mailto:erlang-questions-bounces@erlang.org" target="_blank">erlang-questions-bounces@erlang.org</a>] <b>On Behalf Of </b>Sean Cribbs<br>
<b>Sent:</b> Monday, January 06, 2014 11:22<br><b>To:</b> Erlang Questions<br><b>Subject:</b> Re: [erlang-questions] [ANN] Neotoma 1.7.0<u></u><u></u></span></p></div></div><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p>
<div><p class="MsoNormal">Woops, GMail sent my message before I was ready. Here's the link for [1] <a href="https://github.com/seancribbs/neotoma/tree/1.7.0#neotoma" target="_blank">https://github.com/seancribbs/neotoma/tree/1.7.0#neotoma</a><u></u><u></u></p>
<div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Cheers,<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Sean Cribbs<u></u><u></u></p></div></div>
<div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><p class="MsoNormal">On Mon, Jan 6, 2014 at 11:21 AM, Sean Cribbs <<a href="mailto:seancribbs@gmail.com" target="_blank">seancribbs@gmail.com</a>> wrote:<u></u><u></u></p>
<div><p class="MsoNormal">Hi Erlangers,<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I'm happy to announce a long-awaited version bump to Neotoma[1]. <u></u><u></u></p>
</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">The main feature of this release is the removal of several dialyzer type warnings in generated parsers: namely, unused parser-combinators are elided via macros. Thanks to Kostis Sagonas and Anthony Ramine for help in diagnosing these errors. <u></u><u></u></p>
</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Breaking Changes:<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">If your parser uses the included line/1 or column/1 functions, you will need to define the 'line' or 'column' macros, respectively, at compile time or in your global code block. Future releases might inspect inline code blocks for usage of these functions and include them for you, but that is not present in this release.<u></u><u></u></p>
</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">The 'neotoma_peg' module has been moved to the test/ directory as it was only used for testing the combinators. I'm sorry if anyone was using this module outside Neotoma.<u></u><u></u></p>
</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></div></blockquote></div><br></div>