要了解perl6如何解析您的代码,您可以使用--target
选项:
$ perl6 --target=parse -e '"Hello World".say'
- statementlist: "Hello World".say
- statement: 1 matches
- EXPR: .say
- 0: "Hello World"
- value: "Hello World"
- quote: "Hello World"
- nibble: Hello World
- OPER: .say
- sym: .
- dottyop: say
- methodop: say
- longname: say
- name: say
- identifier: say
- O: <object>
- dotty: .say
- sym: .
- dottyop: say
- methodop: say
- longname: say
- name: say
- identifier: say
- O: <object>
$
Grammar::Tracer
模块描述here要好得多。根据模块documentation,只需添加use Grammar::Tracer
,并且将跟踪在使用语句出现的范围内定义的任何语法。
我的问题很简单:如果我使用的是"star release",那么在Perl6 Grammar本身上进行跟踪(使用Grammar :: Tracer)的最简单方法是什么?
或者,如果我使用rakudobrew,那么在Perl6 Grammar本身上进行跟踪的最简单方法是什么?
perl6用户使用星级版本的recommended - 是否希望更仔细地检查perl6如何使用Grammar :: Tracer解析自己,值得在本地建立源代码?
答案 0 :(得分:4)
所以Rakudo的语法足够接近Perl 6语法,但它在NQP级别实现https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp所以语法:: Tracer的魔力在这里不起作用。但是,您可以使用STD语法https://github.com/perl6/std/blob/master/STD.pm6来解析一些代码,这应该与Grammar :: Tracer一起使用,我一直在努力让它与Grammar :: Highlighter一起工作。希望有帮助吗?