这是我的 y 文件的示例。
| rval '<' rval
| rval '<' '<' rval
| rval '>' rval
| rval '>' '>' rval
| rval LSHIFT rval
| rval RSHIFT rval
我想让 << 和 >> 像 << 和 >> 一样工作。我认为他们会很困难,但发现“上下文相关的优先级” http://www.gnu.org/software/bison/manual/html_node/Contextual-Precedence.html
但是它似乎不起作用。写作 | rval '<' '<' rval %prec LSHIFT
似乎什么都不做。我试着把它放在这里 * = "%prec LSHIFT" 除了我一次只有一个
| * rval * '<' * '<' * rval *
每个插槽似乎都不起作用。我没有注意到任何警告,除非我在规则中有多个 %prec LSHIFT。
如何让野牛将 > > 和 << 视为 >> 和 <<。注意:我不能在词法分析器中制作 rshift >\s*> 因为这会干扰其他事情