

Escriba usando Parse::Eyapp
un analizador sintáctico PL::Simple para la siguiente gramática:
| 0 |  p  
 | 
| 1 |  p  
 | 
| 2 |  ds 
 | 
| 3 |  ds 
 | 
| 4 |  d  
 | 
| 5 |  d  
 | 
| 6 |  ss 
 | 
| 7 |  ss 
 | 
| 8 |  s  
 | 
| 9 |  s  
 | 
| 10 |  s 
 | 
| 11 |  e 
 | 
| 12 |  e 
 | 
| 13 |  e 
 | 
| 14 |  t 
 | 
| 15 |  t 
 | 
| 16 |  t 
 | 
| 17 |  f 
 | 
| 18 |  f 
 | 
| 19 |  f 
 | 
| 20 |  f 
 | 
| 21 |  f 
 | 
| 22 |  il 
 | 
| 23 |  il 
 | 
| 24 |  el 
 | 
| 25 |  el 
 | 
| 26 |  nel 
 | 
| 27 |  nel 
 | 
El terminal ID corresponde a identificador y NUM a un número entero sin signo. 
El terminal STR a cadenas de dobles comillas.
El terminal FUNCTIONID viene dado por la expresión regular min|max|concat.
Declare dichos terminales en la cabecera usando la directiva %token (lea la documentación de 
Parse::Eyapp). Una directiva como:
%token ID FUNCTIONID NUMdeclara los terminales pero no les da prioridad.
C.
a < b, a == b, etc.).
Observe que tales expresiones tiene menor prioridad que los operadores aditivos:
a = b < c + 2 es interpretada como a = b < (c + 2) 
PL/Simple.pod.
MANIFEST. Ubiquelos en un directorio
de informes.

