ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Compilador c++


Enviado por   •  10 de Noviembre de 2019  •  Tareas  •  3.190 Palabras (13 Páginas)  •  186 Visitas

Página 1 de 13

#include<iostream>

#include<stdlib.h>

#include<string.h>

#include<fstream>

using namespace std;

ifstream archivo;

string nombreArchivo,texto;

void lectura();

void seleccionarArchivo();

void menu();

void analizadorLexico();

void analizadorSintatico();

void analizadorSemantico();

void optimizacionCodigo();

void createExecutable();

int verificarAlfabeto();

int main(){

system("color 0a");

seleccionarArchivo();

return 0;

}

void seleccionarArchivo(){

bool cargaExiste = true;

while(cargaExiste){

system("dir");

cout<<"Digite la ruta de su Pograma de repeticion en algol: ";

getline(cin,nombreArchivo);

archivo.open(nombreArchivo.c_str(),ios::in); //Abrimos el archivo en modo lectura

if(archivo.fail()){

system("cls");

cout<<"No se pudo encontrar el archivo"<<endl;

archivo.close();

seleccionarArchivo();

}else{

system("cls");

cout<<"Archivo Cargado Exitosamente"<<endl;

archivo.close();

menu();

}

}

}

void menu(){

system("cls");

int opc;

cout<<"Menu"<<endl;

cout<<"0.-\tImprimir Codigo Cargado"<<endl;

cout<<"1.-\tAnalisador Lexico"<<endl;

cout<<"2.-\tAnalisador Sintatico"<<endl;

cout<<"3.-\tAnalisador Semantico"<<endl;

cout<<"4.-\tOptimizacion de Codigo"<<endl;

cout<<"5.-\tTraducir Codigo"<<endl;

cout<<"Seleccione una opcion: ";

cin>>opc;

switch (opc) {

case 0: {

system("cls");

cout << "Leer Codigo Cargado: " << endl;

lectura();

break;

}

case 1: {

system("cls");

cout << "Analizador Lexico: " << endl;

analizadorLexico();

break;

}

case 2: {

system("cls");

cout << "Analizador Semantico: " << endl;

analizadorSintatico();

break;

}

case 3: {

system("cls");

cout << "El producto es: " << endl;

analizadorSemantico();

break;

}

case 4: {

system("cls");

cout << "Optimizacion de Codigo: " << endl;

optimizacionCodigo();

break;

}

case 5: {

system("cls");

cout << "Traducir Codigo: " << endl;

createExecutable();

break;

}

default: {

system("cls");

cout << "Opción no válida" << endl;

menu();

break;

}

}

}

void lectura(){

archivo.open(nombreArchivo.c_str(),ios::in);

while(!archivo.eof()){ //mientras no sea final del archivo

getline(archivo,texto);

cout<<texto<<endl;

}

archivo.close(); //Cerramos el archivo

system("pause");

menu();

}

void analizadorLexico(){

char lexema[] = {'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','0','1','2','3','4','5','6','7','8','9'};

char token[] = {' ',';',':','=','(',')',' ',',','$'};

char errorLexico [1000];

fstream ficheroEntrada;

char letra;

int contador = 0;

char caracter[10000];

bool Lex = false;

bool Tok = false;

bool anLex = false;

ficheroEntrada.open(nombreArchivo.c_str(),ios::in);

if (ficheroEntrada.is_open()) {

char letraAnterios;

while (! ficheroEntrada.eof() ) {

ficheroEntrada >> letra;

caracter[contador] = letra;

contador++;

}

for ( int x = 0; x<contador;x++){

Lex = false;

Tok = false;

for(int y = 0; y < sizeof(lexema);y++){

if(caracter[x] == lexema[y]){

cout<<"Lexema Encontrado: "<<lexema[y]<<endl;

Lex = true;

}

}

for(int y = 0; y < sizeof(token);y++){

if(caracter[x] == token[y]){

cout<<"Token Encontrado: "<<token[y]<<endl;

Tok = true;

}

}

if(Lex == false && Tok == false){

system("cls");

system("colora0");

cout<<"************ERROR DE LEXICO*********************"<<endl;

errorLexico[x] = caracter[x];

cout<<"Error Lexico : "<<errorLexico[x];

anLex = true;

}else{

errorLexico[x] = caracter[x];

}

}

if(anLex == true){

...

Descargar como (para miembros actualizados) txt (9 Kb) pdf (47 Kb) docx (13 Kb)
Leer 12 páginas más »
Disponible sólo en Clubensayos.com