1 /*----------------------
2 Aqui va el compilador de IA de Kraptor
3 Ver ia.txt para mas info.
6 parse_ia [entrada.txt] [salida.ia]
8 Sintaxis de entrada.txt:
9 [x1],[x2],[y1],[y2],[weapon],[loop]
12 En memoria de mi querido padre.
13 Copyright (c) 2003, Kronoman
14 ---------------------*/
19 // Esta funcion hace la joda de parsear y compilar
20 // in, out son archivo de entrada y salida
21 void do_parsing(char *in
, char *out
)
24 int nlinea
=0; // numero de linea, para debugging del programador
25 char linea
[300]; // buffer de texto
26 char *ret
; // para strtok
27 int params
[6]; // contenedor de parametros, temporal
28 int idx
; // indice para params[]
33 printf("ERROR:\nNo se pudo abrir %s\n\n", in
);
37 fout
= fopen(out
, "w");
40 printf("ERROR:\nNo se pudo abrir %s\n\n", out
);
44 while (fgets(linea
, 256, fin
) != NULL
) // tomar linea
47 printf("[%04d] '%s'\n\n", nlinea
, linea
);
49 // Realizar el parsing adecuado, es decir, separar la linea en sus parametros
51 ret
= strtok(linea
,",");
56 params
[idx
] = atoi(ret
); // convertir a entero
57 printf("-> %s = %d \n", ret
, params
[idx
]);
59 ret
= strtok(NULL
, ",");
63 printf("ERROR!\nDemasiados parametros!\n");
69 printf("ERROR!\nInsuficientes parametros!\n");
73 // escribir, los parametros del bytecode (x1,x2,y1,y2,weapon,loop)
74 for (idx
=0; idx
<6;idx
++)
76 // escribo los enteros como strings, por PORTABILIDAD!
77 sprintf(linea
,"%d", params
[idx
]);!
78 fputs(linea
, fout
); // como esto convierte en UTF-8, no la uso
80 putc(',', fout
); // separador logico
95 int main(int argc
, char *argv
[] )
101 printf("ERROR:\nNo especifico [entrada.txt] y [salida.ia]\n\n");
105 printf( "%s -> %s \n", argv
[1], argv
[2] );
106 do_parsing(argv
[1], argv
[2]);