"CÓDIGO DE PROGRAMACIÓN C++"
/* AUTOMATAS Y LENGUAJES FORMALES*/
/* AUTHOR: JUAN CARLOS CELESTINO GUILLERMO*/
/* ICO-19*/
#include <iostream>
#include <cstdlib>
#include <fstream>
void paso1();
void paso2();
FILE *doc;
using namespace std;
int buscar (string v, string salida);
int buscar2 (string v, string salida);
int main(int argc, char** argv) {
cout << "Reglas de Produccion" << endl;
paso2();
return 0;
}
int buscar (string v, string salida){
for(int i=0;i<salida.length();i++){
if(v.compare(salida.substr(i,1))==0){
return -1;
}
}
return 0;
}
void paso2(){
ifstream le("letras.txt");
ifstream entrada("texto.txt");
ofstream salida("alfabeto.dat");
ifstream produc("regla_produccion.txt");
ofstream sderecho("produccion_der.txt");
ofstream sizquierdo("produccion_izq.txt");
ofstream alfaprodu("alfabetoprod.txt");
char linea3[200],r[100];
string cad3, alfabeto3("");
string cadena1;
le.getline(r,100);
cadena1=r;
string esp(" "),ladoizquierdo(""),temp,de(""),temp2;
int simbolo,rango;
while(!produc.eof()){
doc=fopen("produccion_izq.txt","a+");
produc.getline(linea3,200);
cad3=linea3;
temp2.assign(cad3);
temp.assign(cad3);
simb=cad3.find("-->");
if(simbolo<=1000 && simbolo>=0){
rango=cad3.length()-(simbolo);
temp2.erase(0,simbolo+3);
temp.erase(simbolo,rango);
ladoizquierdo+=temp+esp;
de+=temp2+esp;
cout<<cad3;
cout<<endl<<endl;
}
else{
}
cout<<"\n\nLas reglas de produccion por la izquierda son:\n\n"<<ladoizquierdo;
// cout<<" \n\nLas reglas de produccion por la derecha son:\n\n"<<de;
sizquierdo<<ladoizquierdo;
doc=fopen("produccion_der.txt","a+");
sderecho<<de;
cout<<endl<<endl;
for(int i=0;i< cadena1.length(); i++){
for(int j=0;j< de.length(); j++) {
if(cadena1.substr(i,1).compare(de.substr(j,1) )==0){
if(buscar(cadena1.substr(i,1),alfabeto3 )==0){
alfabeto3+=de.substr(j,1) ;
}
}
}
}
cout<<"Los simbolos terminales son:\n\n"<<alfabeto3;
doc=fopen("alfabetoprod.txt","a+");
alfaprodu<<alfabeto3;
cout<<endl<<endl;;
system("pause");
}
No hay comentarios.:
Publicar un comentario