提问者:小点点

可以用Raku编写NQP的优先级解析器


我正在尝试弄清楚如何在Raku中重写NQP的Precedence Parser:

优先解析器在这里实现:https://github.com/Raku/nqp/blob/master/src/HLL/Grammar.nqp#L384NQP应该是Raku的子集,但语法部分似乎是专门的。

如果我想改写Raku中EXPR()中的优先级解析器,要使用的Raku语法原语是什么?即cursor_start_cur()翻译成什么?Raku语法中是否有光标?如何设置Raku Match对象的pos$termcurr. MATCH()会翻译成什么,等等…

我不是在寻找编写Precedence Parser的不同方法,而是想知道它是否可以在Raku中以与NQP相同的方式完成。


共1个答案

匿名用户

jnthn在IRC中写道:

rule EXPR { <termish> [<infix> <termish>]* } 
token termish { <prefix>* <term> <postfix>* }

然后在一个action方法中做了优先级排序。

从书中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实现了相同的结构。