NAME
pir.pg - A PIR grammar for PGE.
TODO:
1. fix Heredocs parsing 2. Test and fix things
Local declarations
Local declarations can be done using .local
in normal context. TODO: how to declare locals in a macro? this needs to be fixed.
Const definition
Const definitions, a check is done for the constant type and the type of the constant value.
Macro body
In order to be able to parse macro identifiers, before the macro body is parsed, some rules are redefined. After parsing the macro body, they are restored.
Macro_target
In a macro, a target can also be a macro_id
Newlines
match the set of a newline and possible indention space 1 or more times this is necessary to be able to skip fully white lines (with some spaces/tabs in it). However, therefore it is also necessary to put the comments skipping here as well.
Keywords
PIR directives, PASM instructions and the Parrot datatypes (int, string, num, pmc) are keywords, and must not be used as identifiers.
PIR directives
TODO: put this in <%pir_directive> PIR directives