Welcome to pugs/src/perl6. This is the home of STD.pm6, the canonical Perl 6 grammar, which is written in Perl 6 (of course). It is also the home of viv, a retargettable Perl 6 metacompiler which can translate STD.pm6 into Perl 5 (and eventually other things). The metacompiler relies on STD.pm6 to parse itself, requiring a stored bootstrap version of the compiled STD.pm. This is also the home of Cursor, the canonical implementation of the Perl 6 rules engine; it co-evolves with viv and executes the actual rules. This is also the home of a collection of minor tools used in the development of STD.pm6 and viv.
You'll need the following Perl bits to run stuff:
* Perl 5.10.0 or later in PATH
* YAML::XS (e.g. sudo apt-get install libyaml-libyaml-perl)
* Moose (e.g. sudo apt-get install libmoose-perl)
* File::ShareDir
You can get started by using the Makefile command, make. This will convert the Perl 6 grammar into a Perl 5 module, STD. STD has a fairly simple API; just call parse as a class method with the source you want to parse as a parameter, and look at the result. Another module, Actions, is provided which converts STD's output into a more object-oriented form; see viv's source for an example of the latter's use. (Both methods have more options when you need them.)
make
STD
parse
Actions
viv
The following tools are provided which leverage the power of STD:
* tryfile parses a file of Perl 6 code and reports 'ok' or 'FAILED', plus the time taken and memory used.
tryfile
* std does the same, but also tests Actions.
std
* redspans parses a file, reporting what rules matched which tokens.
redspans
* reds appears to be an older, non-working version of redspans.
reds
* teststd uses STD to check the syntax of the Perl 6 Specification Tests.
teststd
* tloop is an interactive STD syntax checker.
tloop
* vill is a prototype STD-based LLVM-based Perl 6 JIT compiler.
vill
* viv is a retargettable metacompiler for the static subset of Perl 6.
* std_hilite/STD_syntax_highlight is a syntax highlighter with multiple output formats.
std_hilite/STD_syntax_highlight
See the headers of the respective programs for more details, and don't hesitate to ask around as quite a bit of this is underdocumented.
To regenerate perl 5 files from perl 6 STD.pm6, STD_P5.pm6, and Cursor.pm6 changes:
To do that, but without running the self test (bootstrap):
make fast
To remake only one file:
make STD.pmc
To update the first stage, allowing new STD.pm6 or Cursor.pm6 features to be used while building future versions of STD.pm6 or Cursor.pm6:
make reboot
To remove all generated files:
make clean
To test the ability to parse the Perl 6 test suite (this is a very effective regression test, but slow - 20-75 minutes; also, it runs in a snapshot of the current directory, so you can continue hacking):
make snaptest
To install Benchmark::Perl::Formance::Cargo, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Benchmark::Perl::Formance::Cargo
CPAN shell
perl -MCPAN -e shell install Benchmark::Perl::Formance::Cargo
For more information on module installation, please visit the detailed CPAN module installation guide.