Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROYECTO DE LENGUAJES Y
COMPILADORES
ANALIZADOR SINTACTICO
UNIVERSIDAD NACIONAL
ALUMNOS :
Figueredo Girao, Giancarlos 14200085
Fernandez Jimenez, Leonardo 14200132
FACULTAD : Ing. de Sistemas e Informática
TABLA DE CONTENIDO
ESTRUCTURA DE UN PROGRAMA
INICIO
CONS_INICIO
<constantes>
CONS_FIN
CLASE <identificador>{
<atributos>
<métodos>
}
CLASE <identificador2> {
<atributos>
<métodos>
}
.
.
PRINCIPAL {
<atributos>
<objetos>
<main>
<métodos>
}
FIN
Ejemplo:
INICIO
Clase CLIENTE
Clase CUENTA
PRINCIPAL
FIN
LEER (sumando);
4. INSTRUCCIONES
ESCRIBIR <identificador>;
5. IDENTIFICADORES
<tipo_de_dato> <identificador>;
6. CONSTANTES
Se declararan al iniciar al programa si es que estas serán necesarias para dicho
programa. Tendrán la palabra reservada CONS_INICIO seguido de un identificador, y
por último el valor que se le asignara, y un CONS_FIN para cerrar esta parte.
CONS_INICIO
: Declaración de constantes:
CONS_ FIN
EJM:
CONS_INICIO
Pi 3.1415;
n 5;
CONS_FIN
7. TIPOS DE DATOS
A.- DATOS NUMÉRICOS
a) Enteros.
Se considera entero cualquier valor numérico sin parte decimal independientemente de su
rango. Para declaración de un tipo de dato entero se utilizara la palabra reservada
ENTERO.
ENTERO edad;
b) Reales.
Se considera real cualquier valor numérico con parte decimal, independiente de su rango
o precisión. Para la declaración de un tipo de dato real se utiliza la palabra reservada
REAL.
REAL sueldo;
8. OPERADORES
a. Operadores aritméticos
* Multiplicación x*y;
/ División x/y;
div División entera x div y;
mod Modulo x m y;
% Porcentaje z%w
^ Exponencial x^y;
Ejemplos:
b. Operadores de relación
c. Operadores Lógicos
Los operadores lógicos nos permiten manipulas valore booleanos verdad falso.
Ejemplo:
A B A|B !A A?B
verdad Falso verdad falso falso
verdad verdad verdad falso verdad
Falso Falso falso verdad falso
Falso verdad verdad verdad falso
Para trabajar con clases inicializaremos con la palabra reservada CLASE seguido del
identificador, luego el símbolo de apertura “{“y en esta parte escribimos el contenido que
será Atributos, Constructor, Métodos.
CLASE <identificador> {
<atributos>
<constructor>
<métodos> }
EJM:
CLASE Persona {
ENTERO edad;
REAL sueldo;
ENTERO num_hijos;
:constructor:
:métodos:
Los constructores tienen el mismo nombre que la clase, no retornan ningún valor y
no pueden ser heredados.
12.1 PROCEDIMIENTOS
Los procedimientos son subprogramas que se encargan de realizar sentencias, sin
devolver ningún valor.
Lo primero aquí es usar la palabra “PROCED” para especificar q usaremos un
subprograma de tipo procedimiento
EJM:
PROCED Suma_numeros ( ENTERO a) {
ENTERO b, suma;
EN b PON 10;
EN suma PON a+ b ;
}
12.2 OPERACIÓN
Son un tipo de subprogramas que tienen como cualidad, el retorno de un valor.
RETORNAR <identificador>;
}
EJM:
OBJ <Nombre_de_Clase><Nombre_del_Objeto>(<argumentos>);
EJM:
Sea la clase Persona, crearemos una objeto alumno:
OBJ Persona alumno ( );
<Nombre_del_Objeto> . <método_del_objeto>;
Ejemplo:
Así, del ejemplo anterior; llamaremos a un método del objeto Alumno, en este caso
tendremos el método Mostrar_Direccion.
alumno . Mostrar_Direccion(dirección);
CUANDO(<condicion> ){
instrucción 1
instrucción 2
……
instrucción n
}
CONTRARIO{
instrucción A
instrucción B
}
Ejemplo:
REAL n1,n2,n3;
Leer (n1,n2,n3);
CUANDO REAL p = (n1 + n2 + n3/3) > 10.5{
escribir (“ aprobado”);
}CONTRARIO {
escribir (“desaprobado”);
}
13.2 RECORRE
Es un equivalente a la sentencia “para”.
RECORRER (0 ;10 ;i + 1){ <--0:inicio de recorrido; 10:fin de recorrido; + 1:
crecimiento de i; i:índice>
---
}.
GRAMÁTICA
G= ( Vn, Vt, S, P )
<cuer
po> <const
ant
es><l
i
st_cl
ases><pr
inci
pal
>
<const
ant
es> CONS_I
NICI
O <l
i
st_const
>CONS_FI
N
<l
i
st_const
> I
D<numer
o>;<l
i
st_const
>/λ
<l
i
st_cl
ases> <cl
ase><l
i
st_cl
ases>/λ
<cl
ase> CLASEI
D{<at
ri
but
os> <cons
truct
or><l
i
st_met
odos
>}
<at
ri
but
os> [<l
i
st_at
ri
b>]
<l
i
st_at
ri
b> <v
ari
ant
e>;<l
i
st_at
ri
b>/λ
<v
ari
ant
e> <t
i
po> <l
i
sta_nomb>/<v
ect
or>
<l
i
sta_nomb> I
D<v
ari
os_nomb>
<v
ari
os_nomb> ,
ID<v
ari
os_nomb>/λ
<const
ruct
or> TAPI
D(<ar
gument
os>){<l
i
st_as
ignac
iones>}
<ar
gument
os> <t
i
po>I
D<l
i
st_ar
gument
os>/λ
<l
i
st_ar
gument
os> ,<ar
gument
os>/λ
<l
i
st_asi
gnaci
ones> <asi
gnaci
on><l
i
st_as
ignaci
ones>/λ
<asi
gnaci
on> ENI
DPON<exp>;
<exp> I
D/<numer
o>/<bol
eana>/CALC<oper
aci
ón>
<oper
aci
ón> <oper
asi
> <oper
>
<oper
> <oper
ador
><oper
asi
><oper
>/λ
<oper
asi
> I
D/(
<oper
aci
on>)/<numer
o>
<oper
ador
> <op_mat
emat
i
co>/
<op_l
ogi
co>
<op_mat
emat
i
co> +/-/*///% /^/di
v/mod
<op_l
ogi
co> |/?
<compar
ador
> =/</>
<l
i
st_met
odos> <met
odo> <l
i
st_met
odos>/λ
<met
odo> <pr
ocedi
mient
o>/
<oper
ati
on>
<pr
ocedi
mient
o> PROCED I
D(<ar
gument
os>){<l
i
st_desar
rol
l
o>}
<l
i
st_desar
rol
l
o> <desar
rol
l
o><v
ari
os_desar
rol
l
os>
<v
ari
os_desar
rol
l
os> <desar
rol
l
o><v
ari
os_desar
rol
l
os>/λ
<desar
rol
l
o> <asi
gnaci
on>/<f
unci
ones>/
<ll
amada>
<l
l D.
amada> CALLI I
D(<ar
gument
os>)
;
<oper
ati
on> TI
ON<t
i
po>I
D(<ar
gument
os>){
<li
st
_desar
rol
l
o>
RETORNAR I
D;}
<pr
inci
pal
> PRI
NCI
PAL{<at
ri
but
os><obj
etos><mai
n>
<l
i
st_mét
odos>}
<mai
n> MAI
N{<l
i
st_desar
rol
l
o>}
<obj
etos> OBJ<i
den_cl
ase> I
D (<ar
gument
os>);<obj
etos>/λ
<t
i
po> ENTERO /REAL/BOLEAN /CAR/
STRI
NG
<f
unci
ones> <l
ect
ura>/<most
rar
>/<condi
ci
onal
>/<r
ecor
rer
>
<l
ect
ura> LEER(I
D);
<most
rar
> ESCRI
BIRI
D;
<condi
ci > CUANDO (
onal <condi
ci
on>){
<desar
rol
l
o>}<condi
ci
onal
i
>
<condi
ci > CONTRARI
onal
i O{<desar
rol
l
o>}
/λ
<r
ecor
rer
> RECORRER(
<numer
o>,<numer
o>,
<oper
aci
ón>)
{
<desar
rol
l
o>}
<v
ect
or> VEC<t
i
po>I
D[I
NT];
<condi
ci
on> <bol
eani
co>/
<cond_numer
>/<negat
i
vo>
<negat
i
vo> <op_l
ogne><bol
eani
co>
<op_l
ogne> ¡
<bol
eani
co> BULI
D=<bol
eana><concat
e_l
og>
> <mul
<cond_numer t
i><compar
ador
><mul
t
i><concat
enar
>
<concat
enar
> <op_l
ogi
co><cond_numer
>/λ
<mul
t
i> <numer
o>/I
D
<numer
o> I
NT/
DEC
<i
den_cl
ase> I
D
<bol
eana> TRUE/
FALSE
}
.
ANALIZADOR LEXICO
PANTALLA DE INTRODUCCION :
CREACION DE VECTORES
TABLA DE SIMBOLOS