Parrot Parrot Compiler Toolkit #21

Parse grammars in PGE

if                -- "if" keyword
  a == 4          -- an expression
then              -- "then" keyword
  print "Hello";  -- a statement

Our general pattern for an if statement is

"if"  <expression>   "then"  <statement>

As a BNF grammar, we might say

if_stmt ::=
    'if' expression 'then' statement

PGE gives us a handy way to express this pattern as a regex:

rule if_stmt { 'if' <expression> 'then' <statement> }
Copyright © 2009
http://www.pmichaud.com/2009/pres/