miércoles, 13 de enero de 2010

mainphp.c

#include
#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< salida< }

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< salida< }
}

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< salida<
for(;i {
cout< salida< }

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< salida< }
}

if(isalnum(buffer[i])==0 && buffer[i]!='_' && buffer[i]!='$'&&buffer[i]!='\0')
{
cout< salida< }

j=0;
pal[j]='\0';
}
}

cout< salida<
if(fPhp==1)break;
}

entrada.close();
salida.close();

return 0;
}

No hay comentarios:

Publicar un comentario