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