start = g:greg {return "
"+g+"
";}
greg = p:preg _ g:greg _ / preg _
preg
= nonterminal seta terminal nonterminal
/ nonterminal seta terminal
/ nonterminal seta "%"
grammar = p:production _ g:grammar _
{return p+"
"+g } / production _
production = pre: nonterminal seta pos: char*
seta="->" {return "->";}
nonterminal = capital
terminal = letter
word = char+ {return text();}
char = letter / capital
capital = [A-Z]
letter = [a-z]
_ "whitespace"
= [ \t\n\r]*