Escáner
_____________________________________________________________________ Lenguajes y Autómatas II MSC. Martin Agúndez Amador
1
1.1 Clasificación de los Tokens
Tokens Valor inicial Palabras reservadas 10 Delimitadores 50 Constantes 60 Operadores 70 Relacionales 80 λ 99 Identificadores (i) 100 $ 199 Reglas DDL 200 Reglas DML 300
1.2 Tablas de Símbolos.
Palabras Reservadas (1)Lexema Símbolo Valor Delimitadores (5) Valor Operadores (7) Valor Select s 10 , 50 + 70 From f 11 . 51 - 71 Where w 12 ( 52 * 72 In n 13 ) 53 / 73 And y 14 ‘ 54 Or o 15 Create c 16 Table t 17 Char h 18 Numeric u 19 Not e 20 Null g 21 Constantes (6) Valor Relacionales (8) Valor Constraint b 22 r 60 > 81 Key k 23 d 61 < 82 Primary p 24 a 62 = 83 Foreign j 25 >= 84 References l 26 <= 85 Insert m 27 Into q 28 values v 29
1.3 Proceso del Escáner
1.3.1 Ejemplo de sentencia SQL de entrada
SELECT ANOMBRE, CALIFICACIONFROM ALUMNOS, INSCRITOS, MATERIAS, CARRERAS WHERE MNOMBRE=’PROGSIST’ AND TURNO = ‘TV’
AND CNOMBRE=’ITC’ AND SEMESTRE=’2015I’ AND CALIFICACION > 70
1.3.2 Procesamiento de la sentencia
1) Utilizar las tablas de símbolos estáticas.2) Actualizar las tablas de símbolos dinámicas (identificadores y constantes).
Identificadores (100) Valor Constantes Valor
ANOMBRE 101 PROGSIST 63 CALIFICACION 102 TV 64 ALUMNOS 103 ITC 65 INSCRITOS 104 2015I 66 MATERIAS 105 70 67 CARRERAS 106 … … MNOMBRE 107 TURNO 108 CNOMBRE 109 SEMESTRE 110 CALIFICACION 111 …. …
U1. AS Escáner
_____________________________________________________________________ Lenguajes y Autómatas II M. S. C. Martín Agúndez Amador
1.3.3 Salida del Escáner
No. Línea TOKEN Tipo Código
1 1 SELECT 1 10 2 1 ANOMBRE 100 101 3 1 , 5 50 4 1 CALIFICACION 100 102 5 2 FROM 1 11 6 2 ALUMNOS 100 103 7 2 , 5 50 8 2 INSCRITOS 100 104 9 2 , 5 50 10 2 MATERIAS 100 105 11 2 , 5 50 12 2 CARRERAS 100 106 13 3 WHERE 1 12 14 3 MNOMBRE 100 107 15 3 = 8 88 16 3 ‘ 5 54 17 3 CONSTANTE 62 63 18 3 ‘ 5 54 19 3 AND 1 14 20 3 TURNO 100 108 21 3 = 8 88 22 3 ‘ 5 54 23 3 CONSTANTE 62 64 24 3 ‘ 5 54 25 4 AND 1 14 26 4 CNOMBRE 100 109 27 4 = 8 88 28 4 ‘ 5 54 29 4 CONSTANTE 62 65 30 4 ‘ 5 54 31 4 AND 1 14 32 4 SEMESTRE 100 110 33 4 = 8 88 34 4 ‘ 5 54 35 4 CONSTANTE 62 66 36 4 ‘ 5 54 37 4 AND 1 14 38 4 CALIFICACION 100 111 39 4 > 8 86 40 4 CONSTANTE 61 67 Tabla Léxica
1.4 Sentencias SQL válidas
Ejemplo 1.4.1SELECT *
FROM PROFESORES
WHERE EDAD >45 AND GRADO='MAE' OR GRADO='DOC'
Ejemplo 1.4.2
SELECT DISTINCT ANOMBRE FROM ALUMNOS,INSCRITOS
WHERE ALUMNOS.A#=INSCRITOS.A# AND
INSCRITOS.SEMESTRE='2010I'
Ejemplo 1.4.3
SELECT DISTINCT ANOMBRE
FROM ALUMNOS,INSCRITOS,CARRERAS
WHERE ALUMNOS.A#=INSCRITOS.A# AND ALUMNOS.C#=CARRERAS.C# AND INSCRITOS.SEMESTRE='2010I'
AND CARRERAS.CNOMBRE='ISC'
AND ALUMNOS.GENERACION='2010'
Ejemplo 1.4.4
SELECT DISTINCT ANOMBRE
FROM ALUMNOS A,INSCRITOS I,CARRERAS C
WHERE A.A#=I.A# AND A.C#=C.C# AND I.SEMESTRE='2010I'
AND C.CNOMBRE='ISC' AND A.GENERACION='2010'
Ejemplo 1.4.5
SELECT DISTINCT MNOMBRE, CNOMBRE
FROM CARRERAS C,DEPARTAMENTOS D,MATERIAS M
WHERE C.C#=M.C# AND C.D#=D.D# AND D.DNOMBRE='CIECOM'
ORDER BY 2,1 Ejemplo 1.4.6 SELECT M#,MNOMBRE FROM MATERIAS WHERE M# IN (SELECT M# FROM INSCRITOS WHERE A# IN (SELECT A# FROM ALUMNOS
U1. AS Escáner
_____________________________________________________________________ Lenguajes y Autómatas II M. S. C. Martín Agúndez Amador
Ejemplo 1.4.7 SELECT A#,ANOMBRE FROM ALUMNOS WHERE C# IN (SELECT C# FROM CARRERAS WHERE SEMESTRES=9) AND A# IN (SELECT A# FROM INSCRITOS
WHERE SEMESTRE='2010I')
Ejemplo 1.4.8
SELECT ANOMBRE FROM ALUMNOS
WHERE A# IN (SELECT A# FROM INSCRITOS
WHERE SEMESTRE='2010I' AND M# IN (SELECT M#
FROM MATERIAS
WHERE MNOMBRE='ESTDAT'))
Ejemplo 1.4.9
SELECT ANOMBRE FROM ALUMNOS
WHERE A# IN(SELECT A# FROM INSCRITOS
WHERE P# IN (SELECT P#
FROM PROFESORES WHERE GRADO='MAE'))
AND C# IN (SELECT C# FROM CARRERAS
WHERE CNOMBRE='ISC')
Ejemplo 1.4.10 SELECT ANOMBRE FROM ALUMNOS WHERE A# IN (SELECT A# FROM INSCRITOS WHERE CALIFICACION < 70 AND M# IN (SELECT M# FROM MATERIAS WHERE C# IN (SELECT C# FROM CARRERAS WHERE D# IN (SELECT D# FROM DEPARTAMENTOS WHERE DNOMBRE = 'CIECOM'))))
1.5 Características del Escáner
Para la revisión y evaluación del escáner, se hace necesario que el programa cumpla con los requisitos siguientes:
Características:
1. Contiene la primera fase de un traductor de consultas de un subconjunto del lenguaje SQL.
2. La aplicación, internamente hará uso de los siguientes módulos: de entrada, de análisis, de resultados y de errores.
Módulo de entrada. El traductor recibirá como entrada sentencias del siguiente tipo:
SECCION TIPO DESCRIPCION
1.4. DML Sentencias SELECT (completas)
Módulo de análisis. Es la primera fase del proceso de traducción y determina si la sentencia analizada se encuentre libre de errores léxicos. Si se encuentra libre de errores llamará al Módulo de resultados, en caso contrario, al Módulo de errores. Módulo de resultados. En este avance, solamente indicará que la consulta se
encuentra libre de errores.
Módulo de errores. Comprende el desplegado de los diferentes tipos de mensajes generados en el módulo de análisis y señalan la parte del análisis léxica, el número de línea y tipo de error.
3. Bajo ninguna circunstancia, el traductor terminará de forma abrupta su ejecución. En todo momento estará disponible al usuario (nueva consulta) y/o atrapará e indicará el tipo de error generado en el módulo de análisis o de resultados).
4. Fecha de revisión y entrega.
Fecha Oportunidad Revisión Valor
27/AGO 1 1 100 2 95 3 90 03/SEP 2 1 80 2 75 3 70