HEX
Server: Apache/2.2.22
System: Linux server1.blueharbor.com 3.10.0-1160.90.1.vz7.200.7 #1 SMP Wed Jul 12 12:00:44 MSK 2023 x86_64
User: locglobe (1004)
PHP: 5.6.37
Disabled: NONE
Upload Files
File: //usr/share/doc/perl-Parse-RecDescent-1.967009/demo/demo_template.pl
#!/usr/bin/perl -sw

use Parse::RecDescent;

$grammar = q {
		list: 	  <leftop: <matchrule:$arg{rule}> /$arg{sep}/ <matchrule:$arg{rule}> >

		function: 'func' ident '(' list[rule=>'param',sep=>';'] ')'
				{{ name=>$item{ident}, param=>$item{list} }}

		param:	  list[rule=>'ident',sep=>','] ':' typename
				{{ vars=>$item{list}, type=>$item{typename} }}

		ident:	  /\w+/

		typename: /\w+/
	     };

unless( $parser = new Parse::RecDescent( $grammar ))
{
    die "bad grammar; bailing\n";
}

while (defined($input = <DATA>))
{
	use Data::Dumper;
	print Data::Dumper->Dump([$parser->function( $input )]);
}

__DATA__
func f (a,b,c:int; d:float; e,f:string)
func g (x:int)
func h (y;x)