

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' );

