function_call: identifier '(' arg(s?) ')' identifier: /[a-z]\w*/i #### #! /usr/local/bin/perl -ws use Parse::RecDescent; my $parse = Parse::RecDescent->new(<<'EndGrammar'); function_call: identifier '(' arg(s) ')' identifier: /[a-z]\w*/i arg: 'arg' EndGrammar while () { print $parse->function_call($_); } __DATA__ a(1)