Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: b2512a4129
Fetching contributors…

Cannot retrieve contributors at this time

executable file 65 lines (44 sloc) 1.672 kb
Bootstrapping MiniPerl6 in Perl5
- Reduce the amount of nodes required to compile MP6::Grammar::Regex
- Implement the Rul::* nodes using MP6, emit MP6 - that would amount to about 5 or 6 nodes
- Implement the required syntax in MP6::Emitter, such that it can emit Perl 5
- Check that the emitted code can compile MP6::Grammar::Regex
- Check that all MP6 files compile and run properly
- Recompile it several times using itself, in order to check the stability of the Bootstrap
- Freeze the project, because it can be useful to bootstrap other VMs
Limitations of the bootstrapping version:
- hash keys are not autoquoted - always use single quotes.
- there is no precedence of operators - always use parenthesis.
- there is no string interpolation - always use single quotes; "\n" doesn't work.
- constructors are called with ::ClassName( 'arg' => 'val', 'arg' => 'val' )
- 'for' loops need to specify '@{}', as in: for ( @$a ) {...}
- all statements need a semicolon
- 'use v5' is not supported
- no type annotations
- no 'state', 'constant'
Limitations of the Token compiler bootstrapping version:
- no quantifiers
- no variable interpolation
'Token' routines:
$grammar.parse( $source, $from_pos ) returns ::Match
Built-in token routines:
- namespace: MiniPerl6::Grammar
- these routines are provided by MP6
comp_unit() - parses a Class or Grammar
parse() - parses a whole source file (several Classes)
Runtime token routines:
space()
digit()
word()
newline()
not_newline()
Runtime subroutines:
join()
chars()
substr()
say()
print()
Optional subroutines:
- these are nice to have, but they are optional:
perl()
yaml()
Jump to Line
Something went wrong with that request. Please try again.