You are on page 1of 16

INSTITUTO TECNOLÓGICO SUPERIOR DE CALKINI

EN EL ESTADO DE CAMPECHE

INGENIERIA EN SISTEMAS COMPUTACIONALES

QUINTO SEMESTRE

PROGRAMACION DE SISTEMAS

ING. JORGE LUIS LIRA TURRIZA

ANALIZADOR LEXICO

SAMUEL NATANAEL HERRERA KANTUN

JOAO DE JESUS AKE MARTINEZ

CARLOS ALEJANDRO CAHUICH TZUC

GRUPO: 5A

CALKINI, CAMPECHE
INTRODUCCION

Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que


pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear
programas que controlen el comportamiento físico y lógico de una máquina, para expresar
algoritmos con precisión, o como modo de comunicación humana. [1]

La muchos de los lenguajes de programación, fueron creados para resolver ciertos problemas
orientados a un área en específico. Muchos lenguajes de programación son muy buenos en la
resolución de ciertas problemáticas, mas también son menos eficientes en otras aéreas.

Esta es una de las razones por la que hoy en día existen muchos lenguajes de programación,
muchos de ellos creados por alguna necesidad, y otros creados solamente por gusto de su creador.

Existen dos tipos de lenguajes, los de alto nivel que son mas entendibles para las personas, y los de
bajo nivel que son mas entendibles para las maquinas.

Este documento se presenta un nuevo lenguaje orientado a la resolución de operaciones


aritméticas, este lenguaje se llama SRMD (Suma, Resta, Multiplicación y División). A excepción de
otros lenguajes más potentes, la ventaja de este es que es en español, y no muy complicado en su
entendimiento. Con este lenguaje se podrán resolver operaciones simples o quizá dependiendo de
la destreza del programador se resolverán operación un poco complejas en las que intervienen
operaciones aritméticas.

Este lenguaje tiene un cierto parecido con el lenguaje Java, una ventaja o desventaja es que sigue
cierta estructura para programar.
DESCRIPCION DEL LENGUAJE

Lenguaje de Programación
SRMD
¿Qué ES SRMD?

SRMD es un lenguaje de programación, que a diferencia de otros lenguajes, es en español.


Está orientado al desarrollo de programas para resolución de operaciones matemáticas;
pudiendo soportar las operaciones básicas, como son la suma, resta, división y la
multiplicación. La programación en este lenguaje es de tipo estructurada.

TIPOS DE DATOS

Los tipos de datos soportados por este lenguaje son los siguientes:

NOMBRE TIPO TAMAÑO DESCRIPCION


entero 4bytes Comprende números enteros
positivos o negativos entre
-2147483648 y 2147483648.
racional 4bytes
cadena variable Cadenas de caracteres de
longitud variable escritas
con entre #. Ej. #cadena#
boleano 1 byte Valor falso o verdadero

Estos tipos de datos pertenecen a las palabras reservadas del lenguaje por lo que no
pueden ser usadas para definir variable o métodos.

VARIABLES

Las variables podrán ser declaradas de dos formas:

Globales: estas se definen en un apartado especial que veremos más adelante, conocido
como variables. Al ser declaradas de manera global podrán ser usadas en cualquier parte
del programa.

Locales: estas son las variables que se definen e inicializan en el interior de algún método
en específico, pudiendo ser usada solo en el interior del método donde fue declarada.

Los nombres de las variables en este lenguaje podrán ser definidas por cualquier letra de
a-z, y caracteres numéricos (1, 2, 3, 4….etc.). Las únicas restricciones al momento de crear
una variable son:
 Una variable no podrá empezar con un carácter numérico
 Todas las variables solo podrán ser escritas con letras minúsculas
 Una variable no podrá tener el nombre de una palabra reservada.

La estructura para definir una variable es la siguiente:

Tipo nombretipo variable [|variable] [=valor];

INICIALIZACION DE VARIABLES

Al momento de la definición de una variable, es posible asignarle un valor


correspondiente, o en otra parte del programa en caso de ser global.

En otro caso la forma de inicializar una variable, es hacerlo explícitamente o


implícitamente:

EXPLICITAMENTE IMPLICITAMENTE
var=90; x=10;
var=x;

OPERADORES ARITMETICOS

Las operaciones aritméticas que este lenguaje puede soportar, son las básicas, suma,
resta, división y multiplicación. Son definidas por los siguientes operadores.

OPERADOR NOMBRE EJEMPLODE


IMPLEMENTACION
+ suma var=2+5;
- resta var=2-5;
/ división var=2/5;
* multiplicación var=2*5;

También es posible hacer alguna operación de más de dos números o variables enteras o
racionales. Poniendo prioridad con los paréntesis ().

Tipo entero x=5;

var=(10+8)-x;
Si se quiere hacer una operación con un número negativo, se pondrá el número negativo
entre paréntesis.

var =5-(-4);

Esto solo se hace cuando el numero negativo es explicito, es decir que si está implícito
dentro de una variable, no es necesario hacer esto.

OPERADORES RELACIONALES

Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y


relaciones menor que y mayor que. El resultado de estos operadores es un valor booleano
verdadero o falso, según se cumpla o no la relación. Estos son los operadores relacionales
aceptados:

OPERADOR MODO DE USO RESULTADO ES verdadero


>> op1>>op2 Si op1 es mayor que op2
>= op1>=op2 Si op1 es mayor o igual que op2
<< op1<<op2 Si op1 es menor que op2
<= op1<=op2 Si op1 es menor o igual que op2
<=> op1<=>op2 Si op1 es igual que op2

OPERADORES LOGICOS

Los operadores lógicos se utilizan para construir expresiones lógicas, combinando valores
lógicos (verdadero y/o falso) o los resultados de los operadores relacionales. Los
operadores lógicos soportados por SMRD son los siguientes:

OPERADOR NOMBRE UTILIZACION RESULTADO


%% AND Op1 %% op2 verdadero si op1 y
op2 son verdadero
°° OR Op1 °° op2 verdadero si op1 u
op2 son verdadero
?! NOT ?!Op1 verdadero si op1 es
falso, y viceversa.
BIFURCACION SI

Esta estructura permite ejecutar un conjunto de sentencias en función del valor que tenga
la expresión de comparación (se ejecuta si la expresión de comparación tiene valor
verdadero).Tiene la siguiente forma:

si [expresión de comparación]:

Operaciones o sentencias

:fin;

Los puntos : sirven para agrupar en un bloque las sentencias que se han de ejecutar,
siempre son necesarios; y al final se termina con la palabra reservada fin y ;

BIFURCACION SI SINO

Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidas en el sino se


ejecutan en el caso de no cumplirse la expresión de comparación (falso).

si [expresión de comparación]:

Operaciones o sentencias

: sino :

: fin;

BUCLE MIENTRAS

Un bucle se utiliza para realizar un proceso repetidas veces. El código incluido entre los
puntos : : , se ejecutara mientras se cumpla unas determinadas condiciones. En este bucle
hay que prestar atención a los bucles infinitos, hecho que ocurre cuando la condición de
finalizar el bucle (expresión booleana) no llega a cumplirse nunca.

mientras [expresión booleana]:

Sentencias y operaciones

:
PALABRAS RESERVADAS

Estas son las palabras exclusivas del lenguaje por lo que no podrán ser usadas como
nombres de variables, métodos, o nombres de proyecto.

si entradadat
sino salidadat
mientras declarar
fin invocar
entero resolución
racional tipo
cadena
boleano
variables
proyecto
principal

CARACTERES VALIDOS

Los caracteres validos son todas las letras de a-z, todos números del cero al nueve, y
caracteres especiales del programa: #,$,{,},+,-,*,:,|,<,>,=,y,o,(,),?,[,],!,°,%

COMENTARIOS

Los comentarios son tremendamente útiles para poder entender el código utilizado,
facilitando de este modo su entendimiento, y futuras revisiones y correcciones. La forma
de definir comentarios es de la siguiente forma:

{ Aquí van los comentarios, y estos no afectan a las líneas de código de programación, son ignoradas por el compilador

Un comentario puede abarcar n líneas, delimitadas por llaves.

}
ENTRADA Y SALIDA DE DATOS

También es posible ingresar datos mediante la consola, e imprimir datos, mediante las
sentencias entradadat() y salidadat(). Esta es su forma de uso:

Entrada Datos Imprimir Datos

entradadat (variable); salidadat(#texto que se imprime#);

Tipo entero a=5;


salidadat(a);

Como se aprecia en la tabla, en el caso de entrada de datos, es necesario tener una


variable tipo entero, racional, o cadena entre los paréntesis, para que al ingresar los datos
en consola se almacene dicho dato en la variable.

En el caso de imprimir datos se pueden imprimir cadenas o números, explícitamente, o


implícitamente a través de variables. El único dato no imprimible es el de tipo booleano.

Si se quiere dar un salto de línea después de imprimir, se agrega antes del punto y coma,
el signo $.Ejemplo:

salidadat(#dar un salto de línea#)$;

DECLARACION DE UN PROYECTO

Un proyecto es una agrupación de datos (variables) y de funciones (métodos) que operan


sobre estos datos. Para programar en este lenguaje antes de declarar variables o
métodos, es necesario declarar el nombre del proyecto. El nombre de un proyecto podrá
tener letras del alfabeto de la a-z, y letras mayúsculas de A-Z, podrá tener números, pero
no podrá empezar con un número. Además la primera letra del nombre del proyecto tiene
que ser Mayúscula.

Ejemplo: proyecto NombreProyecto:

Aquí van los métodos y variables necesarias

:
LA PALABRAS RESERVADA VARIABLES, RESOLUCION, PRINCIPAL

En el interior de proyecto según la estructura del lenguaje, habrá tres apartados los cuales
son:

Palabra reservada variables

En este apartado, se declararan todas las variables globales que han de usarse en el
programa. Las variables declaradas en este apartado serán absolutas o globales, y podrán
usarse en todo el programa, excepto en el apartado principal. Estas variables pueden o no
ser inicializadas en este apartado.

Ej. variables:

Se declaran las variables globales

Palabra reservada resolución

En este apartado se declararan los métodos con sus respectivos parámetros y operaciones
que realizan cada uno de ellos. Más no se ejecutaran hasta que sean invocados en el
apartado principal.

Ej. resolución:

Se declaran los métodos y sus operaciones en el interior de cada uno de ellos

Palabra reservada principal

En este apartado se invocaran los métodos declarados en resolución, también se podrán


hacer impresiones con salidadat(), y declarar variables globales en su interior. Este es el
método principal, como su nombre lo indica.

Ej. principal:

Se invocan los métodos a usar, que estén declarados en resolución

:
METODOS

Declarar Métodos

Los métodos son funciones definidas dentro de un proyecto, los nombres de los métodos
pueden estar conformados por letras de la a-z y números, no pudiendo haber un número
al inicio del nombre del método. Un método se crea de la siguiente forma:

declarar nombre1metodo(tipo entero x | tipo cadena cd):

Operaciones y sentencias

La palabra declarar, es una palabra necesaria siempre al declarar un método. Dentro del
paréntesis se esta indicando que ese método recibirá dos parámetros, y los guardara en
las respectivas variable x y cd. Aunque los métodos pudieran resivir un solo parámetro o
ninguno. Entre los dos puntos (: :), se programaran las operaciones y sentencias
necesarias.

Invocar Métodos

Una vez de haber declarado un método, para poder usarlo, y hacer las operaciones que
están declaradas en el, se necesitara invocarlo de la siguiente manera (Del ejemplo
anterior):

invocar nombre1metodo(14|#cadena#);

Como se puede observar para invocar un método es necesario primero poner la palabra
reservada invocar seguido del nombre del método que se va a invocar y entre los
paréntesis poner los parámetro requeridos por el método; y al final se cierra la sentencia
con punto y coma(;).
ESTRUCTURA DEL LENGUAJE

proyecto NombreProyecto:

variables:

En este apartado, se declaran las variables globales que se usaran, pueden inicializarse
aquí mismo, o en otra parte del código del programa.

resolución:

En este apartado, se declaran los métodos y se operaciones de cada uno

principal:

en esta parte se invocan los métodos que se declararon en resolución.

:
EJEMPLO DE CODIGO DE SRMD

proyecto HolaMundoaritmetico:

variables:

tipo cadena hola=#Hola Mundo#;

tipo entero numero1=5|numero2=10;

tipo entero resultado;

resolución:

declarar imprimirholamundo():

salidadat(cadena)$;

declarar sumarnumeros():

resultado=numero1+numero2;

salidadat(resultado);

principal:

imprimirholamundo();

sumarnumeros();

:
AUTOMATA DEL LENGUAJE
CONCLUCIONES

En conclusión, para la creación de un lenguaje de programación, es necesario hacer varias etapas


de análisis del lenguaje. En principio primero es crear o inventar tu lenguaje, eso no es tan difícil,
aunque si se complica un poco cuando tienes que orientarte hacia cierta característica que quieres
que tu lenguaje valide. Como bien se sabe para la creación de un lenguaje de programación, son
necesarias 3 partes, el análisis léxico, sintáctico y semántico.

En el caso del analizador léxico algo que es muy necesario para poder empezar a validar el
lenguaje, son las expresiones regulares pues estas son el patrón de los indicadores y palabras que
puedes usar en tu lenguaje. La otra parte muy importante del analizador léxico es el autómata
general del lenguaje, que por medio de este aceptamos o rechazamos palabras del nuestro
lenguaje.

La gramática generadora es otra parte esencial para la validación del lenguaje, pero interviene mas
en el caso de los otros dos tipos de análisis, y en el léxico casi no interviene.

En conclusión el analizador léxico, es el que va a aceptar los tokens validos para guardarlos en la
tabla de símbolos y posteriormente darle esta información al analizador sintáctico. Otra de sus
funciones es ignorar los espacios, tabulaciones, y símbolos no validos.
BIBLIOGRAFIA

Construcción de compiladores. Principios y práctica; Kenneth C. Louden. Editorial THOMSON. Págs.


31-79

You might also like