Aby zorientować się jak perl6 analizuje kod można użyć opcji --target
:Jaki jest najłatwiejszy sposób na uzyskanie Grammar :: Tracer pracującego nad samym Perl6?
$ 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>
$
Znacznie lepiej jest moduł Grammar::Tracer
opisane here. Zgodnie z modułem documentation, po prostu dodaje się use Grammar::Tracer
i dowolną gramatykę zdefiniowaną w zakresie, w którym pojawia się instrukcja użycia.
Moje pytanie brzmi po prostu tak: Jeśli używam "star release", jaki jest najłatwiejszy sposób śledzenia (za pomocą Grammar :: Tracer) w samej Gramacie Perl6?
Ewentualnie, jeśli używam rakudobrew, jaki jest najłatwiejszy sposób śledzenia samej gramatyki Perl6?
To jest recommended, że użytkownicy perl6 używają wersji gwiezdnych - czy chcielibyśmy dokładniej przyjrzeć się, jak perl6 sam się parsuje, używając Grammar :: Tracer, zamiast tego warto budować z lokalnego źródła?
Pomaga - a ja dałem +1, by użyć STD - ale pozostawia to otwartą możliwość odbudowania perl6, tak, że używa STD. – Marty
Więc nie chcesz śledzić Perl 6, ale śledzenie Rakudos parsować krok, jak to robi? --target = parsowanie jest zasadniczo takie, jeśli spojrzysz na pierwszy link gramatyczny, który dałem i twoje wyjście. Możesz użyć Grammar.parse() ze STD, aby parsować jakiś kod poza etapem kompilacji - który możesz śledzić - ale to niekoniecznie odzwierciedla to, co robi Rakudo. Jeśli przejdziesz na kanał IRC# perl6 na serwerze freenode, mogą mieć lepsze sugestie. –