Escuela Politécnica Nacional Ingeniería en Sistemas Informáticos y de Computación Analizador Léxico Compiladores y Lenguajes Bolaños Salazar Marco Alejandro GR-1 Quito, Abril 28 del 2012 I
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Analizador léxico en C++ Definición: Un analizador léxico o analizador lexicográfico (scanner) es la primera fase de un compilador que es un programa que recibe como entrada el código fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de tokens o símbolos. Estos tokens sirven para una posterior etapa del proceso de traducción, siendo la entrada para el analizador sintáctico ( parser parser).
Objetivos:
Crear un analizador léxico que reconozca por lo menos 20 tokens o símbolos. Conocer un poco más la función que cumple el analizador léxico en la vida cotidiana.
Procedimiento: Primero tenemos que tener muy claro que es un analizador léxico y que símbolos vamos a hacer que reconozca y cuáles no. Así que para este caso vamos a realizarlo así:
Palabras Reservadas (1) Variables (2) Constantes Numéricas (10) Operadores Aritméticos (4) Operadores Relacionales (6) Operadores Lógicos (3) Signos de Agrupación (3) Signos de Puntuación (2)
En algunos casos existen mas símbolos que se van a reconocer de acuerdo a lo pedido. Procedemos a seleccionar los símbolos a ser añadidos a nuestro analizador léxico, lo que vamos a utilizar es:
Como palabra reservada: “while”,
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Como operadores relacionales “<”, “<=”, “>”, “>=”, “!=”, “=”, Como operadores lógicos “&”, “|”, “~”, Como signos de agrupación: “(”, “)”, “{”, “}”, “[”, “]”, Como signos de puntuación: “%”, “;”.
Lo que procedemos a programar y el código resultante es: #include #include #include #include
"stdafx.h"
using namespace System; using namespace std; void main() { char cadena[20]; int k, j,tam=0, agru=0,salida=0; while (salida!=1) { cout<<"Ingrese cout<<"Ingrese la cadena a analizar al finalizar ingrese ;"<>cadena[j]; if (cadena[j]==';' (cadena[j]==';') ) { k=j; j=20; } } while (tam
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
else { for( for (int t=tam;t
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
if(cadena[tam]== '>' if(cadena[tam]== '>') ) { if(cadena[tam+1]== if (cadena[tam+1]=='=' '=') ) cout<
The world's largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Capturas de Pantalla: Primera corrida:
Segunda y última corrida
Conclusión: Podemos llegar a decir que hemos cumplido los objetivos planteados además de haber solucionado el problema con una