Informe final de lenguajes PDF

Title Informe final de lenguajes
Course Lenguajes y Compiladores
Institution Universidad Nacional Mayor de San Marcos
Pages 23
File Size 890 KB
File Type PDF
Total Downloads 7
Total Views 123

Summary

PROYECTO DE LENGUAJES Y COMPILADORES ANALIZADOR SINTACTICO UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Decana De CURSO : LENGUAJES Y COMPILADORES TEMA : ANALIZADOR SINTACTICO PROFESOR : Ruiz de la Cruz Melo, Carlos ALUMNOS : Figueredo Girao, Giancarlos Fernandez Jimenez, Leonardo 14200...


Description

PROYECTO DE LENGUAJES Y COMPILADORES

ANALIZADOR SINTACTICO

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, Decana De América)

CURSO: LENGUAJES Y COMPILADORES TEMA

: ANALIZADOR SINTACTICO

PROFESOR

: Ruiz de la Cruz Melo, Carlos

ALUMNOS : 

Figueredo Girao, Giancarlos

14200085



Fernandez Jimenez, Leonardo 14200132

FACULTAD

: Ing. de Sistemas e Informática

E.A.P

:

Ingieneria de Sistemas

PERIODO ACADEMICO:

2018-I

TABLA DE CONTENIDO

ELEMENTOS DEL LENGUAJE 1. DELIMITADORES DE APERTURA Y CERRADURA 2. DELIMITADOR DE FIN DE SENTENCIA 3. IDENTIFICADORES 4. CONSTANTES 5. TIPO DE DATOS 6. OPERADORES 7. CLASE 8. DECLARACION DE CONSTRUCTOR 9. SUBPROGRAMAS O METODOS 10.SENTENCIAS DE CONTROL 11.LECTURA Y ESCRITURA 12. ANALIZADOR LEXICO 13. ANALIZADOR SINTACTICO

DESCRIPCION DEL LENGUAJE  El lenguaje el cual crearemos se utilizara como guía el pseudocódigo y java, además también crearemos nuestra propia estructura del programa, expresiones, etc. A continuación haremos una breve descripción de nuestro lenguaje. ESTRUCTURA DE UN PROGRAMA

INICIO CONS_INICIO

CONS_FIN CLASE {

} CLASE {

} . . PRINCIPAL {



} FIN

Los caracteres permitidos son los siguientes:  Alfabéticos: a,b,c,d,e,f,g,h,i,j,k,l,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z  A,B,C,D,E,F,G,H,I,J,K,L,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z  Numéricos: 0,1,2,3,4,5,6,7,8,9 con sus respectivas combinación.  Símbolos: +, -, *, / , %, =, , ,, ;, ., ?, ¡ , |, {,},etc

1. DELIMITADORES DE APERTURA Y CERRADURA Se utilizara las palabras INICIO, FIN para apertura y fin del programa

INICIO ---inicio de programa: ---atributos ---clases ---principal FIN

---fin de programa:

Ejemplo: INICIO Clase CLIENTE Clase CUENTA PRINCIPAL FIN

También haremos uso de delimitadores de inicio y fin de clase/principal “{ } “

2. DELIMITADOR DE FIN DE SENTENCIA Al final de cada sentencia de comandos esta será remarcada con un “; “.

LEER (sumando);

3. ESTRUCTURA DEL PROGRAMA PRINCIPAL Programa principal: PRINCIPAL {

: Declaración de:

--- Atributos --- Objetos --- Main --- Métodos } :FIN:

4. INSTRUCCIONES



Asignación: Para realizar la asignación, se utilizarán los signos

terminales “EN…PON”, con esto se le asignará a cada identificador (variables, constantes) en la mayoría de casos. Ejemplo: EN (variable) PON (valor); EN sueldo PON 430; EN (variable) PON (expresión); EN bono PON a+b;



Lectura / Escritura Por Pantalla: En cuanto a la lectura de datos y/o

expresiones que ingresará el usuario se utilizará LEER; mientras que para que muestre el programa al usuario, ya sean las instrucciones se utilizará ESCRIBIR. EJM:

LEER ();

ESCRIBIR ;

5. IDENTIFICADORES Es el nombre que le vamos a dar a nuestras variables, clase o método. Se puede formar con cualquier carácter alfa numérico: dígitos (0-9) debiendo empezar siempre por un carácter alfabético. Los identificadores son sensibles a las mayúsculas y no deben pasar de 50caracteres. El tipo de dato solo se usan con las palabras reservadas.

;

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 n

3.1415; 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; B.- DATOS LÓGICOS Se utiliza la palabra reservada BULEAN en su declaración. Contiene verdadero y falso. C.-DATOS DE TIPO CADENA Se utiliza la palabra reservada STRING en su declaración. Almacena una concatenación de caracteres. D.- DATOS DE TIPO CARÁCTER



Variables Alfabéticas: Letras del alfabeto mayúsculas y minúsculas.



Variables Numéricas: Números 0-9 y sus variaciones.

CAR: almacena un dato de tipo alfanuméricos, además de símbolos especiales.

8. OPERADORES a. Operadores aritméticos Los operadores aritméticos que usaremos son los siguientes: Operador

Nombre

Ejemplo

+

Resta Suma

x-y; x+y;

* / div mod

Multiplicación División División entera Modulo

x*y; x/y; x div y; x m y;

% ^

Porcentaje Exponencial

z%w x^y;

Ejemplos:

a*b/c mod d

//multiplicación, división, modulo

b. Operadores de relación Operador = < >

Nombre Igual a Menor que Mayor que

Ejemplo x==y; xy;

c. Operadores Lógicos Los operadores lógicos nos permiten manipulas valore booleanos verdad falso. Operador ? | ¡

Nombre Y lógico O lógico Negación

Ejemplo Si (x&y) Si(x|y) ¡y

Ejemplo: A verdad verdad Falso Falso

10.

B Falso verdad Falso verdad

A|B verdad verdad falso verdad

!A falso falso verdad verdad

DECLARACION DE UNA CLASE

A?B falso verdad falso 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 {

}

EJM: CLASE Persona { ENTERO edad; REAL sueldo; ENTERO num_hijos; :constructor: :métodos: }

11.

DECLARACIÓN DE UN CONSTRUCTOR

Los constructores tienen el mismo nombre que la clase, no retornan ningún valor y no pueden ser heredados.

TAP (argumento1, argumento 2) { … }

12.

SUBPROGRAMAS O METODOS

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 PROCED () {

--}

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. TION () {

……. RETORNAR ; }

EJM:

TION ENTERO Suma_numeros ( ) { ENTERO b, a, suma; EN b PON 10; EN a PON 20; EN suma PON a+ b ; RETORNAR suma; }

13.

CREACION DE OBJETOS Los objetos son instancias de la clase, este objeto viene a ser una entidad existente que tiene unas propiedades, ya sean atributos o datos que se almacenan por el mismo objeto. OBJ ();

EJM: Sea la clase Persona, crearemos una objeto alumno: OBJ Persona alumno ( ); Llamar a un método desde un objeto: Para llamar al método, usaremos “. “, con la siguiente estructura a observar.

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

14.

SENTENCIAS DE CONTROL

13.1

CUANDO – CONTRARIO

Permite controlar qué procesos tienen lugar en función del valor de una o varias variables, es un equivalente a la sentencia conocida como “SI-SINO”. CUANDO( ){ 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){ --}.

EJEMPLO GENERAL DE UN PROGRAMA INICIO CONS_INICIO Pi 3.1416; N5; CONS_FIN CLASE Empleado { [ ENTERO edad, código; REAL sueldo, gratificación; ] TAP empleado (ENTERO codigo1, ENTERO edad1, REAL sueldo1) { EN codigo PON codigo1; EN edad PON edad1; EN sueldo PON sueldo1; EN gratificación PON CALC sueldo * 0.10; } PROCED Poner_sueldo (ENTERO dinero) { EN Sueldo PON dinero; } TION REAL Sacar_sueldo ( ) { LEER(amb); RETORNAR sueldo; } } PRINCIPAL { [ REAL sueldo_aux; ] OBJ Empleado trabajador1 ; MAIN ( ) { LEER( valor); EN Sueldo_aux PON valor ; ESCRIBIR sueldo_aux; } } FIN

GRAMÁTICA G= ( Vn, Vt, S, P ) Vn

=

{ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,, , , , ,, , , , , , ,, , . }

Vt= { INICIO, FIN, CONS_INICIO, CONS_FIN, CLASE, ;, {, }, [, ], ,, . , TAP, (, ), PON, +, - , * , / , %, ^ , DIV, MOD, ¡, |, ?,= , < , >, PROCED, TION, RETORNAR, PRINCIPAL,MAIN, OBJ, ENTERO, REAL, BOLEAN, CAR, LEER, ESCRIBIR, CUANDO, CONTRARIO, RECORRER, INT, DEC, ID, TRUE, FALSE,STRING,VEC,EN,CALL, CALC,BUL}

S = < Programa >

P:{  I NI CI O FI N



 CONS_I NI CI O CONS_FI N

 I D;/λ

 /λ



 CLASEI D{ }  []

 ;/λ

 /

 I D  , I D/λ  TAPI D( ){}  I D/λ  ,/λ  /λ  ENI DPON;

 I D///CALC



 /λ

I D/( )/

 /

 +/-/*///% /^/di v/mod  |/?  =/  /λ

 /



 PROCED I D( ){}



 /λ  //

 CALLI D. I D( ) ;

TI ONI D( ){

RETORNAR I D;}

 PRI NCI PAL{

}

 MAI N{ }

OBJ I D ();/λ

ENTERO /REAL/BOLEAN /CAR/ STRI NG

///

LEER(I D) ;

ESCRI BI RI D;

CUANDO ( ){ }  CONTRARI O{ } /λ

RECORRER( ,, )

{ }



VECI D[I NT];

 / /

 ¡



 BULI D=

/λ 

 /λ

 /I D

I NT/ DEC

I D TRUE/ FALSE } .

ANALIZADOR LEXICO  PANTALLA DE INTRODUCCION :

Esta es nuestra pantalla principal de nuestro analizador, aquí tendremos la opción de ingresar una cadena y que en una tabla nos muestre todo los caracteres ingresados y analizados acorde a nuestro lenguaje creado, en la siguiente tabla, “Tabla de Símbolos” que estará ya inicializada con nuestras palabras reservadas, operados, comparadores, etc. También se muestra un botón el cual nos permitirá realizar un “nuevo análisis“ para seguir probando nuestro analizador.

 CREACION DE VECTORES

Se ha creado un vector para almacenar palabras reservadas, Caracteres, Operadores matemáticos, comparadores y operadores lógicos, que luego serán utilizados para la búsqueda y asignación de tokens.

 METODOS PARA ASIGNAR Y BUSCAR TOKENS Métodos por los cuales se les asignara un token diferente a cada Palabra reservada, operadores, comparadores, etc. Estos tokens luego se mostraran en las tablas.

Palabras reservadas: Tokens del 1000 hacia delante Carácter: Tokens del 2000 hacia delante Operador matemático: Tokens del 3000 hacia delante Comparadores: Tokens del 4000 hacia delante. Operador lógico: Tokens del 5000 hacia delante.

 TABLA DE SIMBOLOS...


Similar Free PDFs