我正在尝试弄清楚如何在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相同的方式完成。
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实现了相同的结构。