Contenido Entero
Contenido Entero , Contenido
Vector < Contenido >
Se desea que el analizador morfológico se haga cargo de las palabras reservadas, los separadores y operadores, las constantes y los identificadores.
Se pide:
(a) (1.5 puntos) Marcar las reglas de las que se va a hacer cargo el analizador morfológico.
(b) (1.5 puntos) Escribir un conjunto de expresiones regulares (puede utilizar la notación flex, en otro caso defina claramente la que va a utilizar) para las siguientes unidades sintácticas:
(0.25 pto.) a) Palabra reservada
(0.25 pto.) b) Operador
(0.25 pto.) c) Separador
(0.25 pto.) d) Identificador
(0.25 pto.) e) Vector
(0.25 pto.) f) Constante
<Contenido Entero
Contenido Entero , Contenido
Vector < Contenido >
2(b)
int lineno=0;
int charno=0;
%}
%option noyywrap
DIGITO [01]
LETRA [aeiou]
BLANCO [" " | \t]
SALTO \n
IDENTIFICADOR ([a-z]|[A-Z])([a-z]|[A-Z]|[0-9])*
NUMERO {DIGITO}+
VECTOR "<"{NUMERO}(","{NUMERO})*">"
CONJUNTO "{"{NUMERO}(","{NUMERO})*"}"
ERROR [a-zA-Z0-9]+|.
%%
begin {printf(" KW %s ", yytext); charno+=yyleng;}
end {printf(" KW %s ", yytext); charno+=yyleng;}
"+" {printf(" O%s ", yytext); charno+=yyleng;}
"-" {printf(" O%s ", yytext); charno+=yyleng;}
"*" {printf(" O%s ", yytext); charno+=yyleng;}
"," {printf(" S%s ", yytext); charno+=yyleng;}
";" {printf(" S%s ", yytext); charno+=yyleng;}
{IDENTIFICADOR} {printf(" ID %s ", yytext); charno+=yyleng;}
{NUMERO} {printf(" NUM %s ", yytext); charno+=yyleng;}
{VECTOR} {printf(" VECTOR %s ", yytext); charno+=yyleng;}
{CONJUNTO} {printf(" CONJUNTO %s ", yytext); charno+=yyleng;}
{BLANCO}+ {charno+=yyleng;}
{SALTO} {lineno++; charno=0;}
{ERROR} {printf(" ERROR MORFOLÓGICO: %s ", yytext); charno+=yyleng;}
%%
int main()
{
yylex();
}
|
<num> |
<atom> |
<var> |
, |
( |
) |
$ |
<predlist> |
<pred> |
<term> |
S0 |
|
d3 |
|
|
|
|
|
1 |
10 |
|
S1 |
|
|
|
d2 |
|
|
acc |
|
|
|
S2 |
|
d3 |
|
|
|
|
|
|
4 |
|
S3 |
|
|
|
|
d5 |
|
|
|
|
|
S4 |
|
|
|
r2 |
|
|
r2 |
|
|
|
S5 |
d6 |
|
d7 |
|
|
|
|
|
|
8 |
S6 |
|
|
|
|
|
r4 |
|
|
|
|
S7 |
|
|
|
|
|
r5 |
|
|
|
|
S8 |
|
|
|
|
|
d9 |
|
|
|
|
S9 |
|
|
|
r3 |
|
|
r3 |
|
|
|
S10 |
|
|
|
r1 |
|
|
r1 |
|
|
|
3(c) La gramática es una gramática SLR(1) porque no hay conflictos desplazamiento/reducción o reducción/reducción cuando se utiliza el método SLR(1) de construcción de la tabla de análisis.
O
La gramática no es una gramática SLR(1), pero es una gramática LR(0), porque
no hay filas que contienen desplazamiento y reducción.
PRACTICAS DE MULTIPROCESADORES PRIMAVERA 2008 PARALELIZACIÓN CON
PRACTICAS DE MULTIPROCESADORES PRIMAVERA 2007 INTRODUCCIÓN A LA PARALELIZACIÓN
PROCESADORES DE LENGUAJES EXAMEN PARCIAL 2832006 APELLIDOS NOMBRE
Tags: procesadores, nombre, 2832006, lenguajes, parcial, examen, apellidos