<div dir="ltr"><div><div><div><div><div><div><div>Hi,<br><br></div>I don't think the spec allows this. Could you share the page number with me?<br></div><div><br>Our compiler only allows applying a given table once.<br></div>So doing this:<br></div>apply(table1);<br></div>apply(table2);<br></div>apply(table1);<br></div>in a control flow is forbidden by the p4lang frontend (for now).<br><br></div><div>Some cases which should be ok are handled incorrectly by the compiler. For example:<br></div><div>if(<i>some_condition</i>) {<br></div><div>  apply(table1);<br></div><div>  apply(table2);<br></div><div>}<br></div><div>else {<br></div><div>  apply(table1);<br></div><div>  apply(table3);<br></div><div>}<br><br></div><div>However most of the times, these cases can easily be rewritten in a form that will be accepted by the compiler. In our example:<br>apply(table1);<br>if(<i>some_condition</i>) {<br><div>  apply(table2);<br></div><div>}<br></div><div>else {<br></div><div>  apply(table3);<br></div>}<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 13, 2015 at 11:59 AM, Peter Newman <span dir="ltr"><<a href="mailto:petenewm@cisco.com" target="_blank">petenewm@cisco.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Antonin,<br>
      <br>
      Thanks. I guess it is time to update my tool set.<br>
      <br>
      At the risk of sharing my ignorance with the entire community I
      also get the following compiler error:<br>
      <br>
      ERROR: Table 'layer2_forwarding' is invoked multiple times.<br>
      <br>
      The spec specifically states that I can invoke the same table
      multiple times as long as it is the same identical table. Is this
      another old compiler version problem? I'm invoking the compiler
      with the command: 'p4-validate'.<span class="HOEnZb"><font color="#888888"><br>
      <br>
      --Peter</font></span><div><div class="h5"><br>
      <br>
      On 8/13/2015 11:43 AM, Antonin Bas wrote:<br>
    </div></div></div><div><div class="h5">
    <blockquote type="cite">
      
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>Hi Peter,<br>
                  <br>
                </div>
                Thanks for reporting this bug, I just fixed it (some
                missing rule in the parser code). The relevant commit is
                this one: <a href="https://github.com/p4lang/p4-hlir/commit/3d6b69511b32daebdc5eb980dec8b56fbefea455" target="_blank">https://github.com/p4lang/p4-hlir/commit/3d6b69511b32daebdc5eb980dec8b56fbefea455</a><br>
                <br>
              </div>
              Feel free to just pick up this commit, although I
              recommend pulling the latest code if you are using an old
              version. We have made a bunch of fixes since last April.<br>
              <br>
            </div>
            Also, don't hesitate to report bugs like this directly in
            Github.<br>
            <br>
          </div>
          Thanks again,<br>
          <br>
        </div>
        Antonin<br>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Thu, Aug 13, 2015 at 11:20 AM, Peter
          Newman <span dir="ltr"><<a href="mailto:petenewm@cisco.com" target="_blank">petenewm@cisco.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Antonin,<br>
            <br>
            I'm trying to express a test for a multicast IPv4 address:<br>
            <br>
            if ((ipv4.dstAddr & 0xf0000000) == 0xe0000000) {<br>
                /* do something with multicast pkt */<br>
            }<br>
            <br>
            I receive the following error from the compiler:<br>
            <br>
            parse error in file xxx.p4 at line 144 : Syntax error while
            parsing at token ) (RPAREN)<br>
            parse error in file xxx.p4 at line 144 : Invalid boolean
            expression<br>
            2 errors during parsing<br>
            <br>
            If I remove the parenthesis the compiler accepts the
            expression but the operator precedence would be incorrect.<br>
            <br>
            I am using the original public version of the compiler (so
            my apologies if this has already been fixed).<br>
            <br>
            According to the BNF in the spec (version 1.0.2) I believe
            this to be a valid expression (other than the requirement to
            use \& for bitwise AND which I take to be a typo).<span><font color="#888888"><br>
                <br>
                --Peter<br>
                <br>
              </font></span></blockquote>
        </div>
        <br>
        <br clear="all">
        <br>
        -- <br>
        <div>
          <div dir="ltr">Antonin<br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>