让Grammar :: Tracer在Perl6上运行的最简单方法是什么?

Mar*_*rty 6 grammar perl6

要了解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>
$
Run Code Online (Sandbox Code Playgroud)

这里Grammar::Tracer描述的模块要好得多.根据模块文档,可以简单地添加,并且将跟踪在使用语句出现的范围内定义的任何语法.use Grammar::Tracer

我的问题很简单:如果我使用的是 "明星发布",那么在Perl6语法本身上进行跟踪(使用Grammar :: Tracer)的最简单方法是什么?

或者,如果我使用rakudobrew,那么在Perl6语法本身上进行跟踪的最简单方法是什么?

它的建议是perl6用户使用星发布-将一个愿望更加紧密perl6如何分析自身检查,使用语法::示踪,值得从源代码构建在本地而不是?

Mat*_*tes 4

所以 Rakudo 中的语法足够接近 Perl 6 语法,但它是在 NQP 级别实现的https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp所以语法的魔力::追踪器在这里不起作用。但是,您可以使用 STD 语法https://github.com/perl6/std/blob/master/STD.pm6来解析一些代码,并且应该与 Grammar::Tracer 一起使用,我一直在尝试获取它与 Grammar::Highlighter 一起使用。希望有帮助吗?