Comunidad de diseño web y desarrollo en internet online

buscar identificadores (reto personal)

Citar            
MensajeEscrito el 03 Jun 2005 08:21 pm
hola, estoy tratanbdo de hacer en C++, de un archivo .cpp
encontrar todos los identificadores (variables, nonbres de funciones....etc)
y despues colocarlos en un nuevo archivo

lo ke pienso es crear un archivo con con todos las palabras reservadas de C y los operadores, despues tomo la primer cadena del archivo .cpp y la comparo con todos mi primer archivo, que contiene las palabras reservadas, si al final no es ninguna igual, la gravo en mi nuevo archivo de identificadores!!!

que les parece???
quen ke me puedan ayudar a resolverlo de otra forma mas sencilla???

saludos!

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 03 Jun 2005 08:28 pm
Que te parece si posteas algo de código para ver... suena interesante

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 03 Jun 2005 08:28 pm
pues mas sencilla no creo qu esea , pero a mi se me habia ocurrido hacer un analizador sintactico y despues de este hacer una comparacion con una tabla y asi almacenarlo

recuerdo haber echo uno en la prepa , si eso necesitas deja hecharmeuna busqueda y si aun sobrevive te lo paso qero dime si esoes lo que necesitas :D

saludos bye

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

firefox
Citar            
MensajeEscrito el 03 Jun 2005 08:38 pm
un analizador sintactico es un automata???

y si me lo puedes proporcionar me ayudaria mucho, iba a crear uno, al final solo para ver si la cadena ke no fue un identificador, en verdad fuera uno, por ke tal ves alguien escribio "01-ksvar" y eso no es un identificador, asi ke al final esa cadena la iva a correr sobre el automata

buieno fento si lo tienes por ahi me seria de ayuda!!!
gracias!

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 03 Jun 2005 08:55 pm

Prozac escribió:

:? no te entiendo muy bien... si te explicas un poco mejor a ver que quieres en realidad, y para que??


pues explicandome un poco mas...

estoy estudiando archivos en C, donde gravas, borras modificas datos en un archivo desde C.

y lo que deceo hacer es:

1.- que se tome un archivo .cpp

2.- que de ese archivo se tomen todos los identificadores, variables, nombres de funciones... etc

3.-todas los identificadores encontrados, se guarden en otro archivo, por decir identificadores.cpp.

lo estoy haciendo con ofstream para gravar los datos y ifstream para leear el archvios .cpp

la forma en como pienso resolverlo esta arriba.

saludos!!

espero ke me aya explicado bien! (aunke no se por ke siempre me dicen ke nunca sea maestro, por ke me muero de hambre )

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 04 Jun 2005 05:18 pm
encontre una forma mas facil
me di cuenta ke todos los identificadores detras de ellso tiene un tipo de dato, asi ke lo ke hise fue integrar todo lo ke venia despues de los tipos de datos,

algo de codigo:

Código :

#include<conio.h>
#include<iostream.h>
#include<process.h>
#include<fstream.h>
#include<ctype.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
void crear(char *);
void ver();

void main()
{
 clrscr();
 char i,j, nombre[13];
 cout<<"Dame el archivo .cpp: ";
 cin.getline(nombre,30);
 crear(nombre);
 char ide[5][15]={"float","int","char","void","double"}, id[30];
 int m=0, k=0, n=0;
 ofstream final("identificadores.dat");
 ifstream flujo("pru.dat");
 while(!flujo.eof())
   {
    char palabra[100];
    m=0;
    flujo.get(i);
    while(i!='\n'&& !flujo.eof())
      {
       palabra[m]=i;
       palabra[m+1]='\0';
       // tenemos una palabra
       for( n=0; n<5; n++)
     if(!strcmp(palabra,ide[n]))
       {
        while(i!='=' && i!='(' && i!=')'&& i!=';')
          {
      flujo.get(i);
      id[k]=i;
      k++;
          }
        id[k]='\0';
        final<<id<<endl;
        k=0;
        //como se agrego una palabra "palabra" tiene ke regresar a 0
        m=-1;
       }
       m++;
       flujo.get(i);
      }
   palabra[m]='\0';
   //final<<palabra<<endl;
  }
  flujo.close();
  final.close();
  remove("pru.dat");
}
void crear(char nom[])
{
  int m;
  char i;
  char pal[50];
  ifstream flujo(nom);
  ofstream agregar("pru.dat");
  while(!flujo.eof())
   {
    char palabra[100];
    m=0;
    flujo.get(i);
    while(i!='\n'&& !flujo.eof())
      {
       palabra[m]=i;
       m++;
       flujo.get(i);
      }
   palabra[m]='\0';
   int n=0, k=0;
   char pal[50];
   while(palabra[n]!='\0')
      {
       if(palabra[n]==' ')
    {
     n++;
     continue;
    }
       pal[k]=palabra[n];
       k++;
       n++;
      }
   pal[k]='\0';
   agregar<<pal<<endl;
  }
  agregar.close();
  flujo.close();
}

solo me falta el automata(fento)

saludos!

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.