# List3_tree_d_sem.yp %semantic token 'c' 'd' %tree %{ use Data::Dumper; %} %% S: 'c'+ 'd'+ { print Dumper($_[1]); print Dumper($_[2]); } ; %% sub _Error { print "Syntax error.\n"; } sub _Lexer { my($parser)=shift; ${$parser->input()} or $parser->input(scalar()); for (${$parser->input}) { s/^[ \t\n]+//; s/^(.)//s and return($1,$1); return('',undef); } } sub Run { my($self)=shift; $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error, # yybuildingtree => 1, #, yydebug => 0x1F ); }