%lexer {
m{\G([ \t\n]*(\#.*)?\s*)}gc and $self->tokenline($1 =~ tr/\n//);
m{\G([A-Za-z][A-Za-z0-9_]*)}gc and return ('ID', $1);
m{\G(.)}gc and return ($1, $1);
}
%namingscheme { \&give_rhs_name }
%tree
%%
def: param_spec return_spec ','
;
param_spec:
type
| name_list ':' type
;
return_spec:
type
| name ':' type
| ID BOGUS
;
type: ID
;
name: ID
;
name_list:
name
| name ',' name_list
;
%%