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]*