Sei sulla pagina 1di 17

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE CIENCIAS MATEMATICAS


ESCUELA ACADEMICA PROFESIONAL DE COMPUTACION CIENTIFICA

_________________________________________________

LENGUAJE LMS

Ciencias de la Computación IV
ALUMNAS
Carrasco, Herrera, Luz Pilar 11140343
Martel Solís, Leyla Katiuska 12140487
Perales Apaico, Flor Amalia 11140366

CICLO 2018-II
INDICE

 Resumen
 Introducción
 Objetivos
 Marco teórico
 Descripción del Lenguaje
 Análisis Lexicográfico
 Análisis Sintáctico
 Conclusión
 Referencias bibliográficas
 Glosario

RESUMEN
 El lenguaje LMS, como cualquier otro lenguaje, tiene definido sus componentes
léxicos en base a letras, números y símbolos, las cuales han sido especificados. Luego
de las especificaciones, se realiza un análisis lexicográfico cuya función es verificar
que cada lexema corresponde a un componente léxico definido, luego se realiza un
análisis sintáctico cuya función es verificar que las expresiones cumplan con las
reglas gramaticales.

Palabras claves: Lenguaje y Compilador, lenguajes de programación, traductores de


lenguaje, lenguaje formal.

INTRODUCCION
En estos tiempos, los lenguajes de programación se han puesto de moda a nivel
mundial, debido a la demanda por sus diferentes funcionalidades y beneficios en los
respectivos campos de trabajos, es así que ahora crearemos un lenguaje partiendo de
lo más básico, que es con las especificaciones, claramente está que es un proceso; por
lo cual se ira avanzando con las indicaciones respectivas hasta culminarlo y lograr
obtener un compilador.

Esto es parte de un proyecto del curso Ciencias de la Computación IV a cargo del Prof.
Augusto Cortez Vásquez.

OBJETIVOS
 Especificar un lenguaje formal de manera clara y sencilla
 Especificar e implementar un compilador

1. MARCO TEORICO
LENGUAJE NATURAL

Es el lenguaje hablado o escrito que se caracteriza porque está cambiando


constantemente.

LENGUAJE FORMAL

Es una especialización del lenguaje natural, como el conjunto finito de palabras que
están formadas por caracteres o símbolos. Con estos se construye los lenguajes de
programación.

LENGUAJES DE PROGRAMACIÓN

Es un lenguaje que posee una determinada estructura, contenido y uso de forma


práctica para que los humanos puedan dar instrucciones a un computador.

TRADUCTOR

Es aquel proceso de conversión desde un texto o programa escrito en un lenguaje


fuente a un programa equivalente (lenguaje maquina), se identifican dos fases
principales: fase de análisis y fase de síntesis, se dividen en compiladores e intérpretes.

COMPILADOR

Es un tipo de traductor en el que el lenguaje fuente es un lenguaje de alto nivel (aquel


que se aproxima más al lenguaje natural humano), por ejemplo, C++.

2. DESCRIPCIÓN DEL LENGUAJE


LENGUAJE LMS

Este lenguaje es parte del proyecto del curso Ciencias de la Computación IV 2018-II,
cuyo fin es obtener un compilador; los avances que se realicen se plasmaran en este
informe, trataremos de ser lo más claras posible.

ESPECIFICACIONES

Elementos del lenguaje.

2.1 Caracteres válidos:

Letras mayúsculas A, B, C, D, E, F, G, H, I, J, K, L, M, 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, m, n, o, p, q, r, s, t, u, v, w, x, y,
Letras minúsculas
z

0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Numéricos

Caracteres especiales {}, (), [], * ,+ ,- ,/, : ,; ,< ,> ,= , “”, ‘’,! ,$ ,% , | ,<= , >=,.

2.2 Operaciones:

Operaciones aritméticas Operador

+
Adición
-
Sustracción
*
Multiplicación
/
División

Operador
Operaciones lógicas
$
Conjunción
|
Disyunción

Negación 

Operación de asignación Operador

=
Igual

Operaciones relacionales Operador

<
Menor
>
Mayor
<=
Menor que
>=
Mayor que
==
Igual

Diferente 

2.3 Sentencias:

Sentencia de entrada
INGRESAR

Sentencia declarativa TIPO DE VARIABLE ID

SI
Sentencia condicional
SINO
FIN

PARA
Sentencia iterativa
MOSTRAR
Sentencia de salida

2.4 Tipos de datos:


Variables Entero
Real
Booleano
Cadena
Caracter

2.5 Tipos de variables:


Constante numérica entera 7,30,121,7038

Pi=3.1416
Constante numérica real

Constante alfanumérica “ciencia”, ‘3’

2.6 Palabras reservadas:


o Palabra que tiene un significado concreto en un lenguaje de programación sin
necesidad de que lo asignemos nosotros, como, por ejemplo:

ENTERO

REAL

BOOLEANO

CADENA

CARACTER

FUNCION

INICIO

FIN

INGRESAR

SI
SINO

PARA

MOSTRAR
2.7 Identificadores:
o Son símbolos léxicos que nombran entidades, para denominar algo en el lenguaje.
o El primer símbolo del identificador será un carácter alfabético (a,…,z,A,…Z,’_’).
Después de ese primer carácter podremos poner caracteres alfanuméricos (a,….,z) o
(1,…,9) y el guion subrayado (‘_’).
o Las mayúsculas y las minúsculas se consideran diferentes.
o Los identificadores no pueden coincidir con las palabras reservadas.
Ejemplos válidos:
a, jose, total, cte_luz
Ejemplos no válidos:
34, cte Luz, _suma

2.8 Comentarios:
o Cualquier secuencia de caracteres que comienzan con /*
o El comentario termina cuando se encuentra el par */
o No es posible introducir comentarios dentro de otro.

Las expresiones de las sentencias de entrada, declaración, iterativas y salidas, además de


las operaciones, finaliza con dos puntos (:).
2.9 Espacios en blanco
o Este lenguaje utiliza los espacios en blanco como separadores de los componentes
léxicos.

2.10 Delimitadores
o Se utilizan símbolos de agrupamiento como paréntesis, llaves o corchetes para
agrupar expresiones.

2.11 Estructura de un programa


Estructura que deben seguirse al escribir el código fuente para considerarse como correcto.

FUNCION Nombre_de_la_funcion()
INICIO
{
SENTENCIA DE DECLARACION:
SENTENCIAS DE ENTRADAS: Cuerpo del programa
(instrucciones)
OPERACIONES:
SENTENCIAS DE SALIDAS:
}
FIN

Ejemplo:
FUNCION perimetro()
INICIO
{
ENTERO a, b, c, p:
INGRESAR a:
INGRESAR b:
INGRESAR c:
p = a +b + c:
MOSTRAR p:
}
FIN

2.12 Sintaxis
3. ANÁLISIS
3.1. ANALIZADOR LEXICOGRÁFICO

Definición. Explora y verifica que cada lexema corresponda a un componente léxico


definido.

Componentes léxicos válidos en el lenguaje LMS

Componente Léxico Símbolo Patrón


Identificador Id L(L/D)*
Constante numérica entera cne DD*
Constante numérica real cnr DD*.DD*
Palabras reservadas Pr
Operadores aritméticos Oarit +,-,*,/
Operadores lógicos Olog $,|,~
Operador de asignación Oasig =
Operadores relacionales Orel <,==,>,!,<=,>=
Paréntesis izquierdo (
Paréntesis derecho )
Corchete izquierdo [
Corchete derecho ]
Llave izquierda {
Llave derecha }
Punto y coma ;
Punto .
Coma ,
Dos puntos :
Comilla doble izquierda “
Comilla doble derecha ”
Comilla simple izquierda ‘
Comilla simple derecha ’

A continuación, mostraremos el análisis lexicográfico de nuestro antes mencionado ejemplo.


FUNCION perimetro()
INICIO
{
ENTERO a, b, c, p:
INGRESAR a:
INGRESAR b:
INGRESAR c:
p = a +b + c:
MOSTRAR p:
}
FIN

LEXEMA COMPONENTE LEXICO


FUNCIÓN Palabra reservada
Perímetro Identificador
( Paréntesis izquierdo
) Paréntesis derecho
INICIO Palabra reservada
ENTERO Palabra reservada
INGRESAR Palabra reservada
A Identificador
: Dos puntos
INGRESAR Palabra reservada
B Identificador
: Dos puntos
INGRESAR Palabra reservada
C Identificador
: Dos puntos
P Identificador
: Dos puntos
A Identificador
= Operador de asignación
3 cne
: Dos puntos
B Identificador
= Operador de asignación
4 cne
: Dos puntos
C Identificador
= Operador de asignación
5 cne
: Dos puntos
P Identificador
= Operador de asignación
A Identificador
+ Operador aritmético
B Identificador
+ Operador aritmético
C Identificador
: Dos puntos
MOSTRAR Palabra reservada
P Identificador
: Dos puntos
Fin Palabra reservada

Tomar en cuenta que, durante el proceso de análisis, se eliminan los espacios en


blanco.

3.2. ANALIZADOR SINTÁCTICO


Definición. Verifica que las expresiones que conforman la entrada cumplan con las
reglas gramaticales.

Tomando el ejemplo anterior, se mostrará el análisis sintáctico.

P FUNCION ID INICIO CUERPO

SD ; SP ; SD
CUERPO
D / D ; SD
SD
TIPO LISTA_ID
D
ENTERO
TIPO
ID / ID , LISTA_ID
LISTA_ID
P / P ; SP
SP
SL / SE / SA
P

SL INGRESAR LISTA_ID

ID = E
SA
E / E OP E
E
MOSTRAR E
SE
+
OP

Diagrama de Conway

FUNCION ID INICIO CUERPO FIN

CUERPO
SD : SP :

SD

D : SD

TIPO LISTA_ID

TIPO

ENTERO

Lista_ID

ID

ID , SP
SP

P _: SP

SL SE SA

SL
INGRESAR LISTO_ID

SA
ID = E

E OP E

SE
MOSTRAR E

OP
+
CONCLUSION

 Al especificar el lenguaje, debemos tener en cuenta las letras, números y


símbolos que consideraremos, además de la función que se le asignara.

 Es importante tener claro la función que realiza el análisis lexicográfico y el


análisis sintáctico, además en este último se puede expresar de varias formas,
como, por ejemplo: el diagrama de Conway, arboles de derivación, etc.
REFERENCIAS BIBLIOGRÁFICAS

 Augusto Cortez Vásquez (2013). Lenguaje y Traductores. UCSS: Fondo Editorial


UCSS.
 María del Mar Aguilera Sierra & Sergio Gálvez Rojas. Traductores,
Compiladores e Intérpretes, de LCC-UMA Sitio web:
http://www.lcc.uma.es/~galvez/ftp/tci/tictema3.pdf
 Sergio Gálvez Rojas y Miguel Ángel Mora Matta (2005). Compiladores.
Universidad de Málaga.
 Gloria Inés Álvarez V. Compiladores: Análisis Léxico, de Pontificia Universidad
Javeriana Cali Sitio web:
http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:comp:comp_sesi
on5_2008-1.pdf
 Nicolás Luis Fernández García. Procesadores de Lenguajes. Universidad de
Córdoba
 Universidad Europea de Madrid (UEM). Introducción a compiladores y
lenguajes formales.
 Jacinto Ruiz Catalán. Compiladores (2010). Teoría e implementación. RC
Libros.
GLOSARIO

Código Fuente. Se le da el nombre de código fuente a los programas escritos en un


determinado lenguaje de programación y que está compuesto por instrucciones escritas por
un programador. El código fuente no constituye software propiamente dicho, pero es una
instancia mediante la cual se logra el software.

Potrebbero piacerti anche