Sunteți pe pagina 1din 6

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE MORELIA


"José María Morelos y Pavón"

LENGUAJES Y AUTÓMATAS II
TAREA 1: REPASO
INGENIERÍA EN SISTEMAS COMPUTACIONALES
ALUMNOS:
ERICK RIVAS GOMEZ 15121210

MORELIA, MICHOACÁN
Agosto 2018
Lenguajes y Autómatas II
0.1. Tarea 1 – Repaso de Autómatas I

0.1.1. Un autómata constituye un modelo útil, ¿para qué? Y menciona un


ejemplo.

Es un modelo matemático que representa una máquina de estado finito. Esto quiere decir que el autómata,
después de analizar una entrada, (por lo general una cadena) nos va a indicar si ésta es válida o no lo
es, para el autómata determinado. El conjunto de entradas válidas para un autómata se denomina regex
(expresiones regulares).

Esto se aplica y es muy funcional al momento de validar entradas de texto utilizando regex, o bien delimitar
a solamente ciertos caracteres los permitidos para escribir en un cuadro de entrada de texto.

0.1.2. Describe los siguientes conceptos: ¿Qué es un símbolo, cadena, alfabeto


y lenguaje? (No conceptos de gramática o lingüística de un idioma, en
relación a Compiladores y Autómatas).
• Símbolo: es la mínima unidad con significado para la máquina.

• Cadena: es una sucesión finita de símbolos.

• Alfabeto: es el conjunto de símbolos con los que se pueden formar cadenas.

• Lenguaje: es el conjunto de palabras válidas formados por los símbolos de un alfabeto determinado.

0.1.3. ¿Qué es un traductor? Describe textual y con diagrama.

Es un programa que toma como entrada un texto en un lenguaje fuente, y después de procesarlo, produce
un texto equivalente, pero en otro lenguaje (objeto).

1
0.1.4. ¿Cuáles son las fases de un traductor?

Fase de análisis: • Análisis semántico


Fase de síntesis:
• Análisis léxico • Generador de código intermedio

• Análisis sintáctico • Optimizador de código intermedio

Generador de código objeto

0.1.5. ¿Qué se establece en el scanner y en el parser? O bien, ¿qué procesos


suceden en esas fases del compilador?

Scanner: Se obtienen los símbolos y/o regex.


Parser: Se obtiene el árbol sintáctico.

0.1.6. Describe al menos tres tipos de compiladores.

Puede haber compiladores que se adscriban a varias categorías:

• Compiladores cruzados: generan código para un sistema distinto del que están funcionando.

2
• Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero mante-
niendo la funcionalidad del programa original.

• Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código
fuente.

• Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir
el código máquina.

• Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según
se necesitan.

0.1.7. Cuantos bits y/o bytes ocupan los siguientes elementos:

TIPO DE DATO TAMAÑO


Boolean 8 bits
Char 8 bits
Unsigned char 8 bits
Short 16 bits
Unsigned short 16 bits
Long 32 bits

0.1.8. Convierte tu primer nombre a binario, utiliza la tabla ASCII como


referencia. Ejemplo: A = 01000001. (De preferencia no utilicen herra-
mientas de Internet, aprendan a utilizar la tabla ASCII)

Nombre = “Erick” , binario: 01000101 01110010 01101001 01100011 01101011


E: 01000101
r: 01110010
i: 01101001
c: 01100011
k: 01101011

0.1.9. Desarrolla con el código siguiente su árbol de derivación.

3
0.1.10. Desarrolla el diagrama completo de las Fases de un traductor y des-
cribe brevemente cada uno de sus pasos.

0.1.11. ¿Qué es una Regex?

Es una forma de representar los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres
del alfabeto sobre el cual se define el lenguaje.

0.1.12. Utilizando la documentación de JavaScript, Java, PHP, C# o Python


(es elección propia), crea una Regex para aceptar la siguiente decla-
ración de variable:

Int variable = 1;
∗ Recordar que variable es TODO el alfabeto Inglés, es decir de la A a la Z (minúsculas y mayúsculas), y
con las típicas condiciones de no aceptar espacios, caracteres especiales, número al inicio pero si al final,
mayúsculas, minúsculas, guiones medios y bajos. El prefijo inicial es Int (con la I mayúscula. Finalmente
la asignación y un número entero. Recordar que un número entero puede ser positivo o negativo. También
debe aceptar una infinidad de números cero al inicio (0001).

S-ar putea să vă placă și