<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Nov 3, 2013 at 12:46 PM, Robert Schadek <span dir="ltr"><<a href="mailto:realburner@gmx.de" target="_blank">realburner@gmx.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF"><div class="im">
    <div>On 11/03/2013 09:13 AM, Philippe Sigaud
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>Oh, for D it works (it's even the biggest grammar I
              know), but it's too slow to be of practical interest. But
              that just means the generated parser is not top-notch,
              which is reasonable: I'm not a parsing pro, just a guy
              doing this during his free time :)</div>
            <div><br>
            </div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div dir="ltr">
                <div class="gmail_extra">Other promising options are
                  using lemon, a LALR(1) parser generator.</div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>My current plan is to write different engines, and
              letting either the user select them at compile-time, or to
              have the parser decide which one to use, depending on the
              grammar. I'm pretty sure the 'Type 3' parts of a grammar
              (regular expressions) could be bone by using std.regex,
              for example.</div>
            <div><br>
            </div>
            <div>I guess I'll have to write a CT-compatible LALR(1)
              engine...</div>
            <div> </div>
          </div>
        </div>
      </div>
    </blockquote></div>
    D does not fit into LALR(1), you need glr. <br></div></blockquote><div><br></div><div>how about dparser (nothing to do with D btw): <a href="http://dparser.sourceforge.net/">http://dparser.sourceforge.net/</a></div><div>
the grammar for C looks quite compact and clean: <a href="http://dparser.sourceforge.net/d/tests/ansic.test.g">http://dparser.sourceforge.net/d/tests/ansic.test.g</a></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
    <br>
    Another idea would be to make the engine a template argument, and
    than combine multiple parser!(engines). And even allow hand written
    stuff. This way you could use ll(1) for the ll(1) parts and the
    crazy hand written black magic for the hard parts.<br></div></blockquote><div><br></div><div>Sure, but that'd be a 2nd priority after having at least one (partially) automatically generated parser for D.</div></div>
<br></div></div>