elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Que significa el error bison: m4: invalid argument
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Que significa el error bison: m4: invalid argument  (Leído 2,497 veces)
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Que significa el error bison: m4: invalid argument
« en: 15 Junio 2014, 13:19 pm »

Hola a todos tengo que hacer un analizador sintactico con bison pero al compilar me da el siguiente error: bison: m4: invalid argument agradeceria si me puedieran orientar el codigo.y es el siguiente:
Código
  1. %{
  2. #include<math.h>
  3. #include<string.h>
  4. #include<intmus.h>
  5. /*enlace con lex*/
  6.  
  7. extern unsigned yylineno;
  8. extern FILE *yyout;
  9. %}
  10. %union{
  11. int valor;  /*valor actual*/
  12. TablaSim *sim; /*puntero a tabla de simbolos*/
  13. }
  14. %token READ WRITE MAS MENOS POR DIV PUNTO_Y_COMA MENOS_UNARIO
  15. %token ABRE_PARENT CIERRA_PARENT PUNTO POTENCIA IGUAL MOD
  16. %token <valor> ENTERO
  17. %token <sim> IDENTIF UNDEF
  18. %type  <valor> expres
  19. %right IGUAL
  20. %left MAS MENOS
  21. %left POR DIV MOD
  22. %right POTENCIA
  23. %nonassoc MENOS_UNARIO
  24.  
  25. %%
  26. programa: /*vacio*/
  27. | bloque PUNTO
  28.        ;
  29.  
  30. bloque: sentencia PUNTO_Y_COMA
  31. | bloque sentencia PUNTO_Y_COMA
  32. ;
  33.  
  34. sentencia: /*vacio*/
  35. |read
  36. |write
  37. |asigna
  38. |expres
  39. ;
  40.  
  41. read: READ IDENTIF {read_var($2);}
  42. ;
  43.  
  44. write: WRITE IDENTIF {write_var{$2};}
  45. ;
  46.  
  47. asigna: IDENTIF IGUAL expres {$1->valor=$3; $1->tipo=IDENTIF;}
  48. ;
  49.  
  50. expres: ENTERO {$$=$1;}
  51. | IDENTIF {if($1->tipo==UNDEF) execerror("Variable indefinida..!") $$=$1->valor;}
  52. |expres MAS expres   {$$ = $1 + $3;}
  53. |expres MENOS expres {$$ = $1 - $3;}
  54. |expres POR expres   {$$ = $1 * $3;}
  55. |expres DIV expres   {if($3==0) execerror("Division por cero..!"); $$ = $1 / $3; }
  56. |expres MOD expres   {if($3==0) execerror("Division por cero..!"); $$ = $1 % $3; }
  57. |expres POTENCIA expres{$$=(int) pow ($1,$3);}
  58. |ABRE_PARENT expres CIERRA_PARENT {$$ = $2;}
  59. |MENOS expres %prec MENOS_UNARIO {$$ = -$2;}
  60. ;
  61. %%
  62. void yyerror(char *s){
  63.  
  64. printf("Error sintactico en linea %d.\n",yylineno);
  65.  
  66. }
  67.  
  68. void execerror(char *literal){
  69. fprintf(stderr; "%s en linea %d.\n" literal, yylineno);
  70.  
  71. }/*fin execerror()*/
  72.  
  73. /*lectura de variable por pantalla*/
  74. void read_var(TablaSim *p){
  75. printf("%s ? : ",p->nomvar);
  76. scanf("%d",%p->valor);
  77. p->tipo=IDENTIF;
  78. }/*fin read_var()*/
  79.  
  80. /*muestra variable por pantalla*/
  81. void write_var(TablaSim *p){
  82. printf("%s = %d\n",p->nomvar, p->valor);
  83. }/*fin write_var()*/


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines