On Mon, Sep 10, 2018 at 12:34:00PM +0200, Phil Sutter wrote: > Hi, > > On Fri, Aug 24, 2018 at 01:26:57PM +0200, Phil Sutter wrote: > > Of all possible TCP flags, 'ecn' is special since it is recognized by > > lex as a keyword (there is a a field in IPv4 and IPv6 headers with the > > same name). Therefore it is listed in keyword_expr, but that was > > sufficient for RHS only. The following statement reproduces the issue: > > > > | tcp flags & (syn | ecn) == (syn | ecn) > > > > The solution is to limit binop expressions to accept an RHS expression > > on RHS ("real" LHS expressions don't make much sense there anyway), > > which then allows keyword_expr to occur there. In order to maintain the > > recursive behaviour if braces are present, allow primary_rhs_expr to > > consist of a basic_rhs_expr enclosed in braces. This in turn requires > > for braced RHS part in relational_expr to be dropped, otherwise bison > > complains about shift/reduce conflict. > > Any thoughts on this patch? Let me get here, I would like we don't have to live with this restriction on where to use the parens.