Código
#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
using namespace std;
int comparacion(string [],string,int );
FILE *doc;
int main(int argc, char** argv) {
ifstream reglas("reglasproduccion.txt");
if(!reglas){
cerr<<"No se pudo abrir archivo";
exit(0);
}
ofstream salida("terminales.txt");
if(!salida){
cerr<<"No se pudo abrir archivo";
exit(0);
}
char reg1[50];
string cadena,temporal,produccion[10],pila,m,ent,esp("\n"),S("1");
int flecha,s,i=0,b=0;
while(!reglas.eof()){
doc=fopen("terminales.txt","a+");
reglas.getline(reg1,50);
cadena=reg1;
temporal=cadena;
flecha=cadena.find("-->");
if(flecha<=1000 && flecha>=0){
pila+=reg1+esp;
temporal.erase(0,flecha+3);
produccion[i]=temporal;
salida<<temporal;
i++;
b++;
}
else{
}
}
int ss,u;
u:
cout<<"\n\n----------------------------------------Pila------------------------------------"<<pila;
cout<<"--------------------------------------------------------------------------------";
cout<<"\n\t\tpresione [1] en caso de que quiera Salir del programa\n"<<endl;
cout<<"\t\t\tA)Ingresa cadena a evaluar"<<endl;
cin>>ent;
if(ent.compare(S)==0){
goto ss;
}
s=comparacion(produccion,ent,b);
if(s==9){
cout<<"Cadena aceptada!!\n\n\t";
goto u;
}
else{
cout<<"Cadena no valida\n\n\t";
goto u;
}
ss:
return 0;
}
int comparacion(string a[],string b,int c){
for(int i=0;i<c;i++){
if(a[i].compare(b)==0){
return 9;
}
}
return -1;
}

No hay comentarios:
Publicar un comentario