We have received the following grant application "RPerl Medium-Magic Grammar". Please leave feedback in the comments field by September 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at perl-foundation.org. As we have four proposals on RPerl this time, please use RPerl User Documentation proposal if your comment is about RPerl in general and not specific to this proposal.
RPerl Medium-Magic Grammar
RPerl currently supports a low-magic subset of the Perl 5 programming language.
I request funds to implement an updated RPerl grammar for a medium-magic subset of Perl 5, which will have significantly fewer restrictions than the current low-magic RPerl grammar.
Benefits to the Perl Community
A medium-magic grammar will allow many normal Perl programs to benefit from the speed of RPerl, and is the next step toward a high-magic version of RPerl in the future, which will eventually be an optimized, fully-compatible drop-in replacement for the current Perl 5 core.
1. GrammarMedium.eyp EBNF grammar file 2. A description of the medium-magic RPerl grammar 3. New unit test cases using the same mechanism as existing tests
The low-magic RPerl grammar already exists:
A large number of test files already exist for the low-magic RPerl grammar:
The above test files are tested for compliance with the low-magic RPerl grammar by being parsed via the following test driver:
The medium-magic RPerl grammar will involve significant updates to all 3 of the above components.
This grant proposal covers the grammar built using the CPAN distribution named Parse::Eyapp, which includes both lexical analysis (lexer AKA tokenizer) and syntax analysis (parser), the output of which is an RPerl abstract syntax tree (AST).
After the work of this grant proposal is completed, then the next steps are to begin implementing the C++ code generator and other semantic actions, in order to transform the AST into optimized, high-speed executable code.
1a. Copy low-magic Grammar.eyp to GrammarMedium.eyp 1b. Update lexical token types 1c. Update CompileUnit productions 1d. Update Program productions 1e. Update Module productions 1f. Update Subroutine productions 1g. Update Class productions 1h. Update Method productions 1i. Update Operator productions 1j. Update Loop productions 1k. Update Conditional productions 1l. Update Variable productions 1m. Update Array productions 1n. Update Hash productions
2a. Describe lexical token types 2b. Describe all grammar rules and productions
3a. Create new unit test files in Test/ for all updates in step 1 above 3b. Create 1 new test driver script in t/ to handle all unit test files
Work may begin at any time, and will take about 60 to 90 days.
A medium-magic version of RPerl will be officially released by the RPerl team.
I am working directly with Will Braswell, the RPerl head programmer.
I have experience writing EBNF grammar code for the Perl 5 language in my recent work with Doxygen and Marpa.
I am a professional Perl 5 programmer.
I currently maintain 5 CPAN distributions: