我正在努力弄清楚如何重写NQP的“Raku”中的“优先分析”:
优先分析在这里实现:https://github.com/Raku/nqp/blob/master/src/HLL/Grammar.nqp#L384 NQP应该是Raku的一个子集,但是语法部分似乎是专门化的。
如果我想用Raku在EXPR()中重写Precedence Parser,那么Raku语法原语将使用什么?也就是说,cursor_start_cur()会翻译成什么?Raku语法中有cursor吗?如何设置Raku Match对象的pos?$termcur.MATCH()会翻译成什么等等..。
我并不是在寻找不同的方法来编写一个优先分析程序,而是想知道它是否可以在Raku中以与NQP相同的方式完成。
发布于 2020-07-21 19:49:23
jnthn在IRC上写道:
rule EXPR { <termish> [<infix> <termish>]* }
token termish { <prefix>* <term> <postfix>* }然后在操作方法中执行优先级排序。
书中的https://github.com/Apress/perl-6-regexes-and-grammars/blob/master/chapter-13-case-studies/operator-precedence-parser-class.p6有一个实现相同结构的示例https://www.apress.com/us/book/9781484232279。
https://stackoverflow.com/questions/62982232
复制相似问题