#include
using namespace std;
char *reservadas[] = {"global","function","echo","static","return","array"};
int convertir( char* archivo );
int main(int argc,char** argv)
{
char nombArchivo[ 260 ];
if(argc>=2)
{
strcpy(nombArchivo,argv[1]);
}
else
{
cout<<"Nombre de archivo de entrada: ";
cin.sync();
cin.getline(nombArchivo,260);
}
if(convertir(nombArchivo)!=0)
{
if(argc==1)
{ cout<<"No se puede abrir el archivo"<
if(argc==1) system("pause");
return 0;
}
int convertir( char* archivo )
{
fstream entrada, salida;
char buffer[512], pal[51]="";
int i,j,fPhp=0,k,tam,fVar=0,fFunc=0,fcoment=0,fesp=0,fPhpIni=0;
entrada.open(archivo,ios::in);
if(entrada.fail()) return 1;
salida.open("salidaPHP.txt",ios::out);
if(salida.fail()) return 1;
while(entrada.eof()!=1)
{
entrada.getline(buffer,512);
tam = strlen(buffer);
i=0;
if(buffer[i]=='<' && buffer[i+1]=='?' && fPhpIni==0) // busca inicio de php
{
for( ; i < tam; i++ ) ;
fPhpIni=1;
continue;
}
for( i=0,j=0; i <= tam && fPhpIni==1; i++)
{
if((buffer[i]=='/' && buffer[i+1]=='*') || fcoment==1) // comentarios
{
fcoment=1;
for(;buffer[i]==' '&&i
cout<
if(buffer[i]=='/'&&buffer[i+1]=='*') i+=2;
cout<<"///";
salida<<"///";
for(;i < tam; i++)
{
if(buffer[i]=='*'&&buffer[i+1]=='/') // hasta el final de comentario
{ fcoment = 0; i++; break; }
cout<
}
else if(buffer[i]=='?'&&buffer[i+1]=='>') // fin de php
{
i++;
/*
cout<<"};";
salida<<"};";*/
fPhp = 1;
break;
}
else if(isalnum(buffer[i]) || buffer[i]=='_'|| buffer[i]=='$')
{
pal[j++] = buffer[i];
pal[j]='\0';
}
else
{
if(strcmp(pal,"var")==0) // si es declaracion de variable
{ cout<<"void";
salida<<"void";
}
else if(strcmp(pal,"function")==0) // si es funcion
{
cout<<"void";
salida<<"void";
}
else if(strcmp(pal,"class")==0)
{
cout<
for(;i
cout<
cout<<"\n\tpublic:";
salida<<"\n\tpublic:";
}
else if(pal[0]=='$') // si es variable
{
cout<<&pal[1];
salida<<&pal[1];
}
else
{
if(buffer[i]!='\0')
{ cout<
}
if(isalnum(buffer[i])==0 && buffer[i]!='_' && buffer[i]!='$'&&buffer[i]!='\0')
{
cout<
j=0;
pal[j]='\0';
}
}
cout<
if(fPhp==1)break;
}
entrada.close();
salida.close();
return 0;
}
No hay comentarios:
Publicar un comentario