IIRC, the stream parser is in the old caml, but it is removed later since Daniel write it in camlp4 with domain specific optimizations<br><br><div class="gmail_quote">On Mon, Jan 28, 2013 at 4:12 PM, Gerd Stolpmann <span dir="ltr"><<a href="mailto:info@gerd-stolpmann.de" target="_blank">info@gerd-stolpmann.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Am 28.01.2013 13:15:06 schrieb(en) Alain Frisch:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 01/24/2013 05:24 PM, Gerd Stolpmann wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It's used in the tool, but only for stream parsing. I could also<br>
distribute the already-preprocessed file (and maybe I'll do so in the<br>
next release).<br>
<br>
Stream parsing is certainly one of the topics to discuss.<br>
</blockquote>
<br>
I've no idea how widely stream parsing is used.  Has anyone some intuition about this?<br>
<br>
Stream parsers probably fall in the same category as bitstring or sedlex (custom notions of pattern matching).  It seems that stream parsers (which I'm not familiar with) require to be able to write expressions within "left-hand sides", which might require special support.  Or maybe the whole left-hand sides should just be quotations.<br>

<br>
Anyway, for a basic infrastructure tool such as ocamlfind, I'd probably advocate for a "manual" solution which works out of the box with a basic OCaml installation (ocamlyacc or manual top-down parser).  Gerd: does that sound reasonable to you?<br>

</blockquote>
<br></div>
Of course. META is easy enough to parse with any tool.<br>
<br>
But I'd also like to fight for stream parsers a bit. In general, they are a nice way to write top-down parsers. Like for all top-down parsers, the class of acceptable grammars is not very powerful (less than LALR(1)), but you can easily add things that are nearly impossible with bottom-up parsers, like stores or contextuality, and you can locally escape from the parsing discipline entirely. Sometimes it is a perfect match.<br>

<br>
>From an old OCaml manual:<br>
<br>
expr ::= ...<br>
        | [< >]<br>
        | [< stream-component {; stream-component} >]<br>
        | parser [pattern] stream-matching<br>
        | match expr with parser [pattern] stream-matching<br>
<br>
stream-component ::= ’ expr<br>
                   | expr<br>
stream-matching ::= stream-pattern [pattern] -> expr<br>
                    { | stream-pattern [pattern] -> expr}<br>
stream-pattern ::= [< >]<br>
                  | [< stream-pat-comp {; stream-pat-comp [?? expr]} >]<br>
stream-pat-comp ::= ’ pattern [when expr]<br>
                  | pattern = expr<br>
                  | ident<br>
<br>
Doing this with -ppx is certainly a challenge.<br>
<br>
Some ideas:<br>
<br>
 - [< >]: Maybe we should simply add several types of brackets to<br>
   the grammar. Syntax as for list, but reserved for extensions.<br>
<br>
 - 'expr: This is like a tag. Maybe use I(expr) instead, where "I"<br>
   means "item".<br>
<br>
 - pattern = expr: I guess this is what Alain sees as difficulty.<br>
   As quotation it would look strange. What we need here is something<br>
   in the Parsetree that allows us to include expressions into patterns<br>
   (which would look like a "computed pattern"). Maybe `(expr) inside<br>
   patterns. Or another notation...<br>
<br>
Gerd<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Alain<br>
<br>
<br><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
-- <br>
------------------------------<u></u>------------------------------<br>
Gerd Stolpmann, Darmstadt, Germany    <a href="mailto:gerd@gerd-stolpmann.de" target="_blank">gerd@gerd-stolpmann.de</a><br>
Creator of GODI and <a href="http://camlcity.org" target="_blank">camlcity.org</a>.<br>
Contact details:        <a href="http://www.camlcity.org/contact.html" target="_blank">http://www.camlcity.org/<u></u>contact.html</a><br>
Company homepage:       <a href="http://www.gerd-stolpmann.de" target="_blank">http://www.gerd-stolpmann.de</a><br>
------------------------------<u></u>------------------------------</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
wg-camlp4 mailing list<br>
<a href="mailto:wg-camlp4@lists.ocaml.org" target="_blank">wg-camlp4@lists.ocaml.org</a><br>
<a href="http://lists.ocaml.org/listinfo/wg-camlp4" target="_blank">http://lists.ocaml.org/<u></u>listinfo/wg-camlp4</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>-- Regards, Hongbo