让 Grammar::Tracer 在 Perl6 本身上工作的最简单方法是什么?
What's the easiest way to get Grammar::Tracer working on Perl6 itself?
要了解 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. According to the module documentation,只需添加 use Grammar::Tracer
并且在出现 use 语句的范围内定义的任何语法都将被跟踪。
我的问题很简单:如果我使用 "star release",在 Perl6 语法本身上进行跟踪(使用 Grammar::Tracer)的最简单方法是什么?
或者,如果我使用 rakudobrew,跟踪 Perl6 语法本身的最简单方法是什么?
Perl6 用户使用星级版本是 recommended - 希望使用 Grammar::Tracer 更仔细地检查 perl6 如何解析自身是否值得从本地源代码构建?
所以 Rakudo 中的语法足够接近 Perl 6 语法,但它在 NQP 级别 https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp So the magic of Grammar::Tracer wont work here. However, you can use the STD grammar https://github.com/perl6/std/blob/master/STD.pm6 实现以解析一些代码并且应该与 Grammar::Tracer 一起工作,我一直在摆弄试图让它与 Grammar::Highlighter 一起工作。希望对您有所帮助?
要了解 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. According to the module documentation,只需添加 use Grammar::Tracer
并且在出现 use 语句的范围内定义的任何语法都将被跟踪。
我的问题很简单:如果我使用 "star release",在 Perl6 语法本身上进行跟踪(使用 Grammar::Tracer)的最简单方法是什么?
或者,如果我使用 rakudobrew,跟踪 Perl6 语法本身的最简单方法是什么?
Perl6 用户使用星级版本是 recommended - 希望使用 Grammar::Tracer 更仔细地检查 perl6 如何解析自身是否值得从本地源代码构建?
所以 Rakudo 中的语法足够接近 Perl 6 语法,但它在 NQP 级别 https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp So the magic of Grammar::Tracer wont work here. However, you can use the STD grammar https://github.com/perl6/std/blob/master/STD.pm6 实现以解析一些代码并且应该与 Grammar::Tracer 一起工作,我一直在摆弄试图让它与 Grammar::Highlighter 一起工作。希望对您有所帮助?