Yapp
.
Driver.pm
de Yapp
un método YYLhs
que devuelva el identificador
de la variable sintáctica en el lado izquierdo de la regla
de producción por la que se está reduciendo.
_Parse
) para que guarde como un atributo
el identificador de dicho noterminal.
Sigue un ejemplo de como programar haciendo uso de esta y la anterior extensión:
%right '=' %left '-' '+' %left '*' '/' %left NEG %autoaction { my $n = $#_; bless [@_[1..$n]], $_[0]->YYLhs } %% input: | input line ; line: '\n' { } | exp '\n' { [ $_[1] ] } | error '\n' { } ; exp: NUM | VAR | VAR '=' exp | exp '+' exp | exp '-' exp | exp '*' exp | exp '/' exp | '-' exp %prec NEG | '(' exp ')' { [ $_[2] ] } ; %% ...Veamos la ejecución correspondiente al ejemplo anterior:
$ ./uselhs2.pl 2+3*4 $VAR1 = bless( [ bless( [], 'input' ), [ bless( [ bless( [ '2' ], 'exp' ), '+', bless( [ bless( [ '3' ], 'exp' ), '*', bless( [ '4' ], 'exp' ) ], 'exp' ) ], 'exp' ) ] ], 'input' );