Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con un codigo en C

Estas en el tema de Ayuda con un codigo en C en el foro de C/C++ en Foros del Web. Hola, bueno tengo que traducir este codigo a java, pero el problema es que no soy muy buena en C y no entiendo casi nada ...
  #1 (permalink)  
Antiguo 07/04/2010, 16:44
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda con un codigo en C

Hola, bueno tengo que traducir este codigo a java, pero el problema es que no soy muy buena en C y no entiendo casi nada del codigo, se supone que es un analizador lexico pero no estoy segura de que es lo que hace exactamente, estaria muy agradecida si me lo pudieran explicar.

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. char *progname;
  4.  
  5. #define NUMBER 400
  6. #define COMMENT 401
  7. #define TEXT 402
  8. #define COMMAND 403
  9.  
  10. main(argc,argv)
  11. int argc;
  12.  
  13. char *argv[];
  14. {
  15. int val;
  16. while(val = lexer()) printf("value is %d\n",val);
  17. }
  18.  
  19. lexer()
  20. {
  21.       int c;
  22.  
  23.       while((c=getchar()) == ' ' || c == '\t')
  24.          ;
  25.       if(c == EOF)
  26.          return 0;
  27.       if(c == '.' || isdigit(c)) {     /*number*/
  28.          while ((c=getchar()) != EOF && isdigit(c));
  29.       if(c == '.') while ((c=getchar()) != EOF && isdigit(c));
  30.          ungetc(c, stdin);
  31.          return NUMBER;
  32.       }
  33.       if(c == '#') { /*comment */
  34.          while ((c=getchar()) != EOF && c != '\n');
  35.          ungetc(c,stdin);
  36.          return COMMENT;
  37.       }
  38.       if(c == '"') { /*literal text*/
  39.          while ((c = getchar()) != EOF &&
  40.         c != '"' && c != '\n');
  41.          if(c == '\n') ungetc(c, stdin);
  42.          return TEXT;
  43.       }
  44.       if(isalpha(c)) { /*check to see if it is a command*/
  45.          while ((c=getchar()) != EOF && isalnum(c));
  46.          ungetc(c, stdin);
  47.          return COMMAND;
  48.       }
  49.       return c;
  50. }
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:08.