diff --git a/ediv/CHANGE_LOG.txt b/ediv/CHANGE_LOG.txt index 06fc88d..9c82fa0 100644 --- a/ediv/CHANGE_LOG.txt +++ b/ediv/CHANGE_LOG.txt @@ -1,3 +1,9 @@ +18/12/2002 +---------- + * Mas comentarizacion siguiendo las normas del ANSI C (Daijo) + * Todas las cabeceras han de definirse: #define __EDIV_CABECERA_H_ (Daijo) + * Cambiado *edivcentral.com por ediv.divsite.net (Daijo) + 13/12/2002 ---------- * Nueva funcion en la graphics.dll: get_rgb(color,&r,&g,&b). obtiene las diff --git a/ediv/src/ediv/compiler.h b/ediv/src/ediv/compiler.h index 309f0fa..2435f1b 100644 --- a/ediv/src/ediv/compiler.h +++ b/ediv/src/ediv/compiler.h @@ -18,8 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __COMPILER_H -#define __COMPILER_H +#ifndef __EDIV_COMPILER_H_ +#define __EDIV_COMPILER_H_ #include "main.h" @@ -225,18 +225,16 @@ int case_sensitive; #define lnul 126 /* Comprueba que un puntero no sea NULL */ -struct { // Peephole, "mirilla" para el optimizador - int dir; // Dirección - int param; // Indica si ese opcode tiene parámetro - int op; // Opcode -} code[16]; // En code[15] debe quedar siempre la última instrucción generada +struct { /* Peephole, "mirilla" para el optimizador */ + int dir; /* Dirección */ + int param; /* Indica si ese opcode tiene parámetro */ + int op; /* Opcode */ +} code[16]; /* En code[15] debe quedar siempre la última instrucción generada */ /* Informacion para temporal de debug (posicion en mem y fuente de cada sentencia) */ FILE * linf; /* En este temporal guardamos la info y luego lo agregamos al exe */ int inicio,final; /* Direcciones inicial y final de mem[] de la sentencia */ -//int linea1,columna1; /* Posicion en la que comienza la sentencia en el fuente */ -//int linea2,columna2; /* Posicion en la que acaba la sentencia en el fuente */ int inicio_prg,final_prg; /* Direcciones inicial y final en el PRG de la sentencia */ int linsize; @@ -284,4 +282,4 @@ void sentencia(); void g1(int op); void g2(int op, int pa); -#endif /* __COMPILER_H */ \ No newline at end of file +#endif /* __EDIV_COMPILER_H_ */ \ No newline at end of file diff --git a/ediv/src/ediv/ediv.c b/ediv/src/ediv/ediv.c index 88ffa64..a1408d0 100644 --- a/ediv/src/ediv/ediv.c +++ b/ediv/src/ediv/ediv.c @@ -347,7 +347,7 @@ void* e_malloc(size_t size) void* ret; if(!(ret = malloc(size))) { - printf(translate(24)); // memoria insuficiente + printf(translate(24)); /* memoria insuficiente */ exit(1); } diff --git a/ediv/src/ediv/encrypt.h b/ediv/src/ediv/encrypt.h index a385c42..0322efe 100644 --- a/ediv/src/ediv/encrypt.h +++ b/ediv/src/ediv/encrypt.h @@ -18,8 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __ENCRYPT_H -#define __ENCRYPT_H +#ifndef __EDIV_ENCRYPT_H_ +#define __EDIV_ENCRYPT_H_ void _encriptar(int encode, char * fichero, char * clave); void _comprimir(int encode, char *fichero); diff --git a/ediv/src/ediv/expresion.h b/ediv/src/ediv/expresion.h index 661b517..3a0b43b 100644 --- a/ediv/src/ediv/expresion.h +++ b/ediv/src/ediv/expresion.h @@ -18,18 +18,18 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __EXPRESION_H -#define __EXPRESION_H +#ifndef __EDIV_EXPRESION_H_ +#define __EDIV_EXPRESION_H_ -#define max_exp 512 //Máximo número de elementos en una expresión -#define long_pila 2048 //Longitud de la pila en ejecución +#define max_exp 512 /* Máximo número de elementos en una expresión */ +#define long_pila 2048 /* Longitud de la pila en ejecución */ -int pila[long_pila+max_exp+64]; // cálculo de expresiones (compilación y ejecución) +int pila[long_pila+max_exp+64]; /* cálculo de expresiones (compilación y ejecución) */ -// Tabla de elementos en la evaluación de una expresión +/* Tabla de elementos en la evaluación de una expresión */ struct exp_ele { - byte tipo; // econs, eoper, erango, ewhoami, ecall + byte tipo; /* econs, eoper, erango, ewhoami, ecall */ union { int valor; int token; @@ -37,19 +37,20 @@ struct exp_ele { }; } tabexp[max_exp], *_exp; -#define econs 0 // Constante // Tipos de elementos en tabexp[] -#define eoper 1 // Operador -#define erango 2 // Comprobación de rango -#define ewhoami 3 // Identificador de proceso -#define ecall 4 // Creación de un proceso -//#define efunc 5 // Llamada a una función interna -#define efext 6 // Llamada a una función externa -#define echeck 7 // Comprobació¢n de validez de un identificador -#define estring 8 // Cadena de texto (su offset constante) -#define enull 9 // Comprobaci¢n de NULL pointer - -//----------------------------------------------------------------------------- +#define econs 0 /* Constante // Tipos de elementos en tabexp[] */ +#define eoper 1 /* Operador */ +#define erango 2 /* Comprobación de rango */ +#define ewhoami 3 /* Identificador de proceso */ +#define ecall 4 /* Creación de un proceso */ +/*#define efunc 5*/ /* Llamada a una función interna */ +#define efext 6 /* Llamada a una función externa */ +#define echeck 7 /* Comprobació¢n de validez de un identificador */ +#define estring 8 /* Cadena de texto (su offset constante) */ +#define enull 9 /* Comprobaci¢n de NULL pointer */ +/* + * Prototipos + */ void condicion(void); void expresion(void); void expresion_cpa(void); diff --git a/ediv/src/ediv/keywords.h b/ediv/src/ediv/keywords.h index e44c5a9..3d8b02e 100644 --- a/ediv/src/ediv/keywords.h +++ b/ediv/src/ediv/keywords.h @@ -18,14 +18,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __KEYWORDS_H__ -#define __KEYWORDS_H__ +#ifndef __EDIV_KEYWORDS_H_ +#define __EDIV_KEYWORDS_H_ -// tabla de keywords +/* tabla de keywords */ extern struct keywords { - char keyword[20]; // Max. 20 caracteres por keyword - char code; // Code del keyword - void* hfuncion; // Puntero a la función correspondiente (para no usar SWITCH) + char keyword[20]; /* Max. 20 caracteres por keyword */ + char code; /* Code del keyword */ + void* hfuncion; /* Puntero a la función correspondiente (para no usar SWITCH) */ } table[]; extern struct prioridades { @@ -33,16 +33,16 @@ extern struct prioridades { char prioridad; } prioridad[]; -// Defines de los keywords con su code +/* Defines de los keywords con su code */ -// CM = TIPO DE COMANDO -#define CM_SEPARATE 0 // Se pone entre linea y linea -#define CM_STATEMENT 1 // Statement -#define CM_CALL 2 // Llamada a una función o un proceso -#define CM_SIGNO 3 // Asignación -#define CM_DATA 4 // Cualquier dato +/* CM = TIPO DE COMANDO */ +#define CM_SEPARATE 0 /* Se pone entre linea y linea */ +#define CM_STATEMENT 1 /* Statement */ +#define CM_CALL 2 /* Llamada a una función o un proceso */ +#define CM_SIGNO 3 /* Asignación */ +#define CM_DATA 4 /* Cualquier dato */ -// ST = STATEMENTS +/* ST = STATEMENTS */ #define ST_COMPILER_OPT 1 #define ST_PROGRAM 2 #define ST_CONST 3 @@ -50,7 +50,7 @@ extern struct prioridades { #define ST_LOCAL 5 #define ST_PRIVATE 6 #define ST_BEGIN 7 -#define ST_END 8 // Este end vale para todos los end +#define ST_END 8 /* Este end vale para todos los end */ #define ST_PROCESS 9 #define ST_FUNCTION 10 @@ -85,21 +85,21 @@ extern struct prioridades { #define ST_CLONE 35 #define ST_DEBUG 36 -// DT = DATA TYPES +/* DT = DATA TYPES */ #define DT_BYTE 0 #define DT_WORD 1 #define DT_INTEGER 2 #define DT_STRING 3 #define DT_POINTER 4 #define DT_STRUCT 5 -#define DT_FLOAT 7 // Tipo de dato FLOAT (nuevo) +#define DT_FLOAT 7 /* Tipo de dato FLOAT (nuevo) */ #define DT_UNDECLARED 8 -#define DT_GLOBAL 20 // Variable global +#define DT_GLOBAL 20 /* Variable global */ #define DT_LOCAL 21 #define DT_PRIVATE 22 -// SG = SIGNOS +/* SG = SIGNOS */ #define SG_CALL_OPEN 0 #define SG_COMA 1 #define SG_PARENTESIS_OPEN 2 @@ -125,13 +125,13 @@ extern struct prioridades { #define SG_AND 20 #define SG_OR 21 #define SG_XOR 22 -#define SG_IGUALDAD 23 //Comparacion +#define SG_IGUALDAD 23 /* Comparacion */ #define SG_DISTINTO 24 #define SG_MAYOR 25 #define SG_MAYOR_IGUAL 26 #define SG_MENOR 27 #define SG_MENOR_IGUAL 28 -#define SG_IGUAL 29 //Asignacion +#define SG_IGUAL 29 /* Asignacion */ #define SG_SUMA_IGUAL 30 #define SG_RESTA_IGUAL 31 @@ -144,17 +144,18 @@ extern struct prioridades { #define SG_DESP_DERECHA_IGUAL 38 #define SG_DESP_IZQUIERDA_IGUAL 39 -//CL = Tipos de call +/* CL = Tipos de call */ #define CL_USER 0 #define CL_DLL 1 -/* PROTOTIPOS DE FUNCIONES +/* + * PROTOTIPOS DE FUNCIONES */ typedef void (TYPEOF_hfuncion)(); -// h = HANDLERS de los statements +/* h = HANDLERS de los statements */ void h_compiler_options(); void h_program(); void h_const(); diff --git a/ediv/src/ediv/language.c b/ediv/src/ediv/language.c index 68cd86a..e80f080 100644 --- a/ediv/src/ediv/language.c +++ b/ediv/src/ediv/language.c @@ -757,8 +757,8 @@ char* translate(int id_cadena) case 0: /* español */ { static char* msg[] = { - /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "ATENCION: Esta version de eDIV esta inacabada.\nPor favor informe de cualquier bug a: bugs@edivcentral.com\n", + /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "ATENCION: Esta version de eDIV esta inacabada.\nPor favor informe de cualquier bug a: ediv@divsite.net\n", /* 2 */ "Ayuda de opciones de comando:\n\n", /* 3 */ "%s [opciones] archivo.prg [ejecutable]\n\n", /* 4 */ "Lista de opciones:\n", @@ -825,8 +825,8 @@ char* translate(int id_cadena) case 1: /* italiano */ { static char* msg[] = { - /* 0 */ " **** Compilatore eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "ATTENZIONE: Questa versione di eDIV è incompleta.\nPer favore informa su qualunque bug a: bugs@edivcentral.com\n", + /* 0 */ " **** Compilatore eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "ATTENZIONE: Questa versione di eDIV è incompleta.\nPer favore informa su qualunque bug a: ediv@divsite.net\n", /* 2 */ "Guida opzioni di comando:\n\n", /* 3 */ "%s [opzioni] archivio.prg [eseguibile]\n\n", /* 4 */ "Lista opzioni:\n", @@ -893,8 +893,8 @@ char* translate(int id_cadena) case 2: /* portugués */ { static char* msg[] = { - /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "ATENÇÃO: Esta versão de eDIV está inacabada.\nPor favor informe-nos de qualquer bug a: bugs@edivcentral.com\n", + /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "ATENÇÃO: Esta versão de eDIV está inacabada.\nPor favor informe-nos de qualquer bug a: ediv@divsite.net\n", /* 2 */ "Ajuda de opções de comando:\n\n", /* 3 */ "%s [opções] arquivo.prg [executavel]\n\n", /* 4 */ "Lista de opções:\n", @@ -963,8 +963,8 @@ char* translate(int id_cadena) case 3: /* inglés */ { static char* msg[] = { - /* 0 */ " **** eDIV Compiler " VERSION " ****\nCopyleft (c) 2000-2002Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "WARNING: This version of eDIV is unfinished.\nPlease report any bug to: bugs@edivcentral.com\n", + /* 0 */ " **** eDIV Compiler " VERSION " ****\nCopyleft (c) 2000-2002Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "WARNING: This version of eDIV is unfinished.\nPlease report any bug to: ediv@divsite.net\n", /* 2 */ "Command line help:\n\n", /* 3 */ "%s [options] file.prg [executable]\n\n", /* 4 */ "Options list:\n", @@ -1031,8 +1031,8 @@ char* translate(int id_cadena) case 4: /* catalán */ { static char* msg[] = { - /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "ATENCIÓ: Aquesta versió d' eDIV està sense acabar.\nSi us plau, informi de qualsevol bug a: bugs@edivcentral.com\n", + /* 0 */ " **** Compilador eDIV " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "ATENCIÓ: Aquesta versió d' eDIV està sense acabar.\nSi us plau, informi de qualsevol bug a: ediv@divsite.net\n", /* 2 */ "Ajuda d' opcions de comand:\n\n", /* 3 */ "%s [opcions] arxiu.prg [executable]\n\n", /* 4 */ "Llista d' opcions:\n", @@ -1098,8 +1098,8 @@ char* translate(int id_cadena) case 5: /* euskera */ { static char* msg[] = { - /* 0 */ " **** eDIV konpiladorea " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://www.edivcentral.com\n", - /* 1 */ "KONTUZ: eDIV bertsio hau ez dago bukaturik.\nMesedez eman berri edozein akatzi buruz helbide honetan: bugs@edivcentral.com\n", + /* 0 */ " **** eDIV konpiladorea " VERSION " ****\nCopyleft (c) 2000-2002 Sion, Ltd.\nhttp://ediv.divsite.net\n", + /* 1 */ "KONTUZ: eDIV bertsio hau ez dago bukaturik.\nMesedez eman berri edozein akatzi buruz helbide honetan: ediv@divsite.net\n", /* 2 */ "Komandoei buruzko laguntza:\n\n", /* 3 */ "%s [aukerak] archivo.prg [exekutagarria]\n\n", /* 4 */ "Aukeren zerrenda:\n", diff --git a/ediv/src/ediv/listados.h b/ediv/src/ediv/listados.h index 70bd9d0..09d052d 100644 --- a/ediv/src/ediv/listados.h +++ b/ediv/src/ediv/listados.h @@ -18,8 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __LISTADOS_H -#define __LISTADOS_H +#ifndef __EDIV_LISTADOS_H_ +#define __EDIV_LISTADOS_H_ void listado_objetos (void); void listado_ensamblador (void); diff --git a/ediv/src/ediv/lower.h b/ediv/src/ediv/lower.h index d0422d9..13022cd 100644 --- a/ediv/src/ediv/lower.h +++ b/ediv/src/ediv/lower.h @@ -18,8 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __LOWER_H -#define __LOWER_H +#ifndef __EDIV_LOWER_H_ +#define __EDOV_LOWER_H_ #include "main.h" diff --git a/ediv/src/ediv/main.h b/ediv/src/ediv/main.h index e559e25..4b06391 100644 --- a/ediv/src/ediv/main.h +++ b/ediv/src/ediv/main.h @@ -18,52 +18,55 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __MAIN_H -#define __MAIN_H +#ifndef __EDIV_MAIN_H_ +#define __EDIV_MAIN_H_ #include #include "shared.h" #include "edivcfg/iniparser.h" -//#define MULTI_ERROR // para activar el sistema multi-error (bugs a mansalva) -//#define DEBUG_DLL // para mostrar información al cargar las DLLs +/* Para activar el sistema multi-error (bugs a mansalva) descomentarizar lo siguiente: */ +/*#define MULTI_ERROR */ + +/* Para mostrar informacion al cargar las DLLs descomentarizar lo siguiente: */ +/* #define DEBUG_DLL */ #define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);} -unsigned int stub_size; // tamaño del STUB.EXE (está almacenado en edivrun.lib) -//FILE *fout; // stream del seudocodigo +unsigned int stub_size; /* tamaño del STUB.EXE (está almacenado en edivrun.lib) */ -byte *prog, *tprog; // buffer donde se almacena el PRG -size_t progsize; // tamaño del PRG -char nombreprog[256]; // nombre del PRG sin extensión -char *fichero_prg; // nombre del archivo a compilar -char outfilename[256]; // archivo de salida -char edivrun_lib[256]; // archivo stub (distinto para cada sistema) +byte *prog, *tprog; /* buffer donde se almacena el PRG */ +size_t progsize; /* tamaño del PRG */ +char nombreprog[256]; /* nombre del PRG sin extensión */ +char *fichero_prg; /* nombre del archivo a compilar */ +char outfilename[256]; /* archivo de salida */ +char edivrun_lib[256]; /* archivo stub (distinto para cada sistema) */ -byte listados; // +1 = genera listado EML; +2 = genera tabla de objetos -byte debug; // 1 = Compilar en modo de depurado -byte noexe; // 1 = no crea un ejecutable +byte listados; /* +1 = genera listado EML; +2 = genera tabla de objetos */ +byte debug; /* 1 = Compilar en modo de depurado */ +byte noexe; /* 1 = no crea un ejecutable */ int n_errors; int n_warnings; int linea; -// Información sobre los errores +/* Información sobre los errores */ -/*int numero_error=-1; -int linea_error; -int columna_error;*/ +/* + * int numero_error=-1; + * int linea_error; + * int columna_error; + */ -word error_25; // Para emitir "se esperaba una sentencia" +word error_25; /* Para emitir "se esperaba una sentencia" */ -// Prototipos +/* Prototipos */ +void *e_malloc(size_t size); /* un malloc con mensaje de error */ +void e_free(void *puntero); /* un free que fija el puntero a NULL tras liberarlo */ +void errormem(); /* mensaje "memoria insuficiente" */ +void save_error(word tipo); /* guarda una posición de error */ +void error(word tipo,word num, ...); /* error de compilación */ +void warning(int num, ...); /* warning en el proceso */ -void *e_malloc(size_t size); // un malloc con mensaje de error -void e_free(void *puntero); -void errormem(); // mensaje "memoria insuficiente" -void save_error(word tipo); // guarda una posición de error -void error(word tipo,word num, ...);// error de compilación -void warning(int num, ...); // warning en el proceso - -#endif // __MAIN_H \ No newline at end of file +#endif \ No newline at end of file diff --git a/ediv/src/ediv/modulos.h b/ediv/src/ediv/modulos.h index 67b4720..7558801 100644 --- a/ediv/src/ediv/modulos.h +++ b/ediv/src/ediv/modulos.h @@ -18,8 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __MODULOS_H -#define __MODULOS_H +#ifndef __EDIV_MODULOS_H_ +#define __EDIV_MODULOS_H_ #include diff --git a/ediv/src/ediv/parser.h b/ediv/src/ediv/parser.h index 0ade415..91a9a1a 100644 --- a/ediv/src/ediv/parser.h +++ b/ediv/src/ediv/parser.h @@ -18,15 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __PARSER_H -#define __PARSER_H +#ifndef __EDIV_PARSER_H_ +#define __EDIV_PARSER_H_ #include "main.h" -byte* nombre_program; // nombre del programa, para guardarlo en el exe +byte* nombre_program; /* nombre del programa, para guardarlo en el exe */ -/* A continuacion viene el asunto de los objetos. Para el que no se haya estudiado a fondo +/* + * A continuacion viene el asunto de los objetos. Para el que no se haya estudiado a fondo * el DIVC.CPP (ejem) diré que un objeto es cada una de las variables, constantes, tipos * de proceso (declarados con PROCESS), tipos de funcion (declarados con FUNCTION), funciones * de DLL, estructuras, etc. etc. etc. @@ -34,152 +35,144 @@ byte* nombre_program; // nombre del programa, para guardarlo en el exe * y familiarizaros con las abreviaturas... ;) */ -#define max_obj 4096 //Limite maximo de objetos del compilador -#define long_med_id 16 //Longitud media de los identificadores (+4+4+1) +#define max_obj 4096 /* Limite maximo de objetos del compilador */ +#define long_med_id 16 /* Longitud media de los identificadores (+4+4+1) */ -//----------------------------------------------------------------------------- -// Tabla de objetos - - - - - - - - - - - - - - - - - *iobj primer objeto libre +/* Tabla de objetos - - - - - - - - - - - - - - - - - *iobj primer objeto libre */ struct objeto { - byte tipo; // Tipo de objeto - byte usado; // Indica si el objeto ha sido usado antes de definirse - byte * name; // Puntero al nombre, para algún listado - byte * ierror;// Puntero al código para determinar la columna si es necesario - int linea; // Línea de código fuente, para informar del error - int param; // Indica que es un objeto declarado en los parámetros - int dll; // En qué dll se declara el objeto, -1 = pertenece al prg - struct objeto * anterior; // Anterior objeto de igual nombre - struct objeto * bloque; // Bloque de este proceso (0-global/local N-private) - struct objeto * member; // Indica a que struct pertenece (0-n/a) + byte tipo; /* Tipo de objeto */ + byte usado; /* Indica si el objeto ha sido usado antes de definirse */ + byte * name; /* Puntero al nombre, para algún listado */ + byte * ierror;/* Puntero al código para determinar la columna si es necesario */ + int linea; /* Línea de código fuente, para informar del error */ + int param; /* Indica que es un objeto declarado en los parámetros */ + int dll; /* En qué dll se declara el objeto, -1 = pertenece al prg */ + struct objeto * anterior; /* Anterior objeto de igual nombre */ + struct objeto * bloque; /* Bloque de este proceso (0-global/local N-private) */ + struct objeto * member; /* Indica a que struct pertenece (0-n/a) */ union { - struct { // Constante + struct { /* Constante */ int valor; - int literal; // 0-no, 1-si + int literal; /* 0-no, 1-si */ } cons; - struct { // Variable global + struct { /* Variable global */ int offset; - } vglo; - struct { // Tabla global + } vglo; + struct { /* Tabla global */ int offset; - int totalen; // numero total de elementos - int len1,len2,len3; // len2/3==-1 si n/a + int totalen; /* numero total de elementos */ + int len1,len2,len3; /* len2/3==-1 si n/a */ } tglo,pigl; - struct { // Byte global + struct { /* Byte global */ int offset; - int totalen; // numero total de elementos - int len1,len2,len3; // len2/3==-1 si n/a + int totalen; /* numero total de elementos */ + int len1,len2,len3; /* len2/3==-1 si n/a */ } bglo,pbgl; - struct { // Word global + struct { /* Word global */ int offset; - int totalen; // numero total de elementos - int len1,len2,len3; // len2/3==-1 si n/a + int totalen; /* numero total de elementos */ + int len1,len2,len3; /* len2/3==-1 si n/a */ } wglo,pwgl; - struct { // Cadena (string) global + struct { /* Cadena (string) global */ int offset; - int totalen; // numero total de elementos + int totalen; /* numero total de elementos */ } cglo,pcgl; - struct { // Struct + struct { /* Struct */ int offset; - int len_item; // Número de campos - int totalitems; // Numero total de registros - int items1,items2,items3; // -1 si n/a + int len_item; /* Número de campos */ + int totalitems; /* Numero total de registros */ + int items1,items2,items3; /* -1 si n/a */ } sglo,sloc; - struct { // Struct pointer + struct { /* Struct pointer */ int offset; - struct objeto * ostruct; // Puntero al struct - int totalitems; // Número total de registros - int items1,items2,items3; // -1 si n/a + struct objeto * ostruct; /* Puntero al struct */ + int totalitems; /* Número total de registros */ + int items1,items2,items3; /* -1 si n/a */ } psgl,pslo; - struct { // Variable local + struct { /* Variable local */ int offset; } vloc; - struct { // Tabla local + struct { /* Tabla local */ int offset; int totalen; int len1,len2,len3; } tloc,pilo; - struct { // Byte local + struct { /* Byte local */ int offset; - int totalen; // numero total de elementos - int len1,len2,len3; // len2/3==-1 si n/a + int totalen; /* numero total de elementos */ + int len1,len2,len3; /* len2/3==-1 si n/a */ } bloc,pblo; - struct { // Word local + struct { /* Word local */ int offset; - int totalen; // numero total de elementos - int len1,len2,len3; // len2/3==-1 si n/a + int totalen; /* numero total de elementos */ + int len1,len2,len3; /* len2/3==-1 si n/a */ } wloc,pwlo; - struct { // Cadena (string) local + struct { /* Cadena (string) local */ int offset; - int totalen; // numero total de elementos + int totalen; /* numero total de elementos */ } cloc,pclo; - struct { // Proceso + struct { /* Proceso */ struct objeto * bloque; int offset; - int num_par; // Número de parámetros + int num_par; /* Número de parámetros */ } proc; - // qsort requiere como parametros un nombre de estructura y un campo - // Ya le buscaremos una solución (p.ej. una función complementaria a EDIV_Export) + /* + * qsort requiere como parametros un nombre de estructura y un campo + * Ya le buscaremos una solución (p.ej. una función complementaria a EDIV_Export) + */ - struct { // Funcion externa (DLL) + struct { /* Funcion externa (DLL) */ int codigo; int num_par; } fext; }; } obj[max_obj], * iobj; // - - - - - - - - - - - - - - - - - - - - - - - - - - -//----------------------------------------------------------------------------- -#define tnone 0 // Tipos de objetos en obj[] -#define tcons 1 // Constantes -#define tvglo 2 // Int global -#define ttglo 3 // Tabla int global -#define tcglo 4 // Cadena global -#define tvloc 5 // Locales +#define tnone 0 /* Tipos de objetos en obj[] */ +#define tcons 1 /* Constantes */ +#define tvglo 2 /* Int global */ +#define ttglo 3 /* Tabla int global */ +#define tcglo 4 /* Cadena global */ +#define tvloc 5 /* Locales */ #define ttloc 6 #define tcloc 7 -#define tproc 8 // Proceso +#define tproc 8 /* Proceso */ #define tfunc 9 -#define tsglo 10 // Structs +#define tsglo 10 /* Structs */ #define tsloc 11 -#define tfext 12 // Función de una librer¡a externa - -#define tbglo 13 // Byte global -#define twglo 14 // Word global -#define tbloc 15 // Byte local -#define twloc 16 // Word local - -#define tpigl 17 // Puntero a ints global (un ttglo direccionable) -#define tpilo 18 // Puntero a ints local (idem) - -#define tpwgl 19 // Punteros a word +#define tfext 12 /* Función de una librer¡a externa */ +#define tbglo 13 /* Byte global */ +#define twglo 14 /* Word global */ +#define tbloc 15 /* Byte local */ +#define twloc 16 /* Word local */ +#define tpigl 17 /* Puntero a ints global (un ttglo direccionable) */ +#define tpilo 18 /* Puntero a ints local (idem) */ +#define tpwgl 19 /* Punteros a word */ #define tpwlo 20 -#define tpbgl 21 // Punteros a byte +#define tpbgl 21 /* Punteros a byte */ #define tpblo 22 - -#define tpcgl 23 // Punteros a string +#define tpcgl 23 /* Punteros a string */ #define tpclo 24 -#define tpsgl 25 // Punteros a struct +#define tpsgl 25 /* Punteros a struct */ #define tpslo 26 -//----------------------------------------------------------------------------- - -byte * vnom; // Vector de nombres (cad_hash:int, pieza (o iobj):int, asciiz) +byte * vnom; /* Vector de nombres (cad_hash:int, pieza (o iobj):int, asciiz) */ union { byte *b; byte **p; } ivnom; -byte * inicio_objetos; // Para el crear listado de la tabla de objetos - -byte * vhash[256]; // Punteros al vector de nombres; - -//----------------------------------------------------------------------------- +byte * inicio_objetos; /* Para el crear listado de la tabla de objetos */ +byte * vhash[256]; /* Punteros al vector de nombres; */ -/* Ahora viene todo lo referente al parser en si, es decir, al analizador léxico y sintáctico. +/* + * Ahora viene todo lo referente al parser en si, es decir, al analizador léxico y sintáctico. * También se incluye aquí al evaluador de expresiones (por cierto, usa notación polaca xD) * El parser de DIV es realmente bueno, y además muy personalizable. Que yo sepa, sólo existe * un bug en el evaluador de expresiones, al parecer los operadores lógicos no funcionan de @@ -188,28 +181,26 @@ byte * vhash[256]; // Punteros al vector de nombres; * al listado EML ;) */ -#define max_nodos 128 //Máximo número de nodos del léxico para símbolos +#define max_nodos 128 /* Máximo número de nodos del léxico para símbolos */ -#define cr 13 //Retorno de carro -#define lf 10 //Salto de linea -#define tab 9 //Tabulación +#define cr 13 /* Retorno de carro */ +#define lf 10 /* Salto de linea */ +#define tab 9 /* Tabulación */ -//Valores de lex_case, si no son punteros a lex_simb -#define l_err 0 //Caracter desconocido -#define l_cr 1 //Fin de linea (l_err Carácter no esperado) -#define l_id 2 //Identificador o palabra reservada -#define l_spc 3 //Espacios y tabulaciones -#define l_lit 4 //Literal -#define l_num 5 //Constante numérica -#define l_eof 6 //Fin de fichero +/* Valores de lex_case, si no son punteros a lex_simb */ +#define l_err 0 /* Caracter desconocido */ +#define l_cr 1 /* Fin de linea (l_err Carácter no esperado) */ +#define l_id 2 /* Identificador o palabra reservada */ +#define l_spc 3 /* Espacios y tabulaciones */ +#define l_lit 4 /* Literal */ +#define l_num 5 /* Constante numérica */ +#define l_eof 6 /* Fin de fichero */ -//----------------------------------------------------------------------------- -// Valores sintácticos o tokens (pieza) -//----------------------------------------------------------------------------- - -#define p_ultima 0x00 //Fin de fichero - +/* + * Valores sintácticos o tokens (pieza) + */ +#define p_ultima 0x00 /* Fin de fichero */ #define p_program 0x01 #define p_const 0x02 #define p_global 0x03 @@ -219,8 +210,8 @@ byte * vhash[256]; // Punteros al vector de nombres; #define p_process 0x07 #define p_private 0x08 #define p_struct 0x09 -#define p_import 0x0A // sólo para mostrar el warning de que ya no se usa -#define p_setup_program 0x0B // idem +#define p_import 0x0A /* sólo para mostrar el warning de que ya no se usa */ +#define p_setup_program 0x0B /* idem */ #define p_string 0x0C #define p_byte 0x0D @@ -230,9 +221,9 @@ byte * vhash[256]; // Punteros al vector de nombres; #define p_compiler_options 0x10 #define p_function 0x11 -#define p_until 0x15 // antes 0x16 -#define p_else 0x16 // antes 0x17 -#define p_elseif 0x17 // NUEVO! +#define p_until 0x15 /* antes 0x16 */ +#define p_else 0x16 /* antes 0x17 */ +#define p_elseif 0x17 /* NUEVO! */ #define p_return 0x18 @@ -328,9 +319,9 @@ byte * vhash[256]; // Punteros al vector de nombres; #define p_shr_asig 0x73 #define p_shl_asig 0x74 -#define p_ini_rem 0x7d //Inicio comentario -#define p_end_rem 0x7e //Fin comentario -#define p_rem 0x7f //Comentario de una linea +#define p_ini_rem 0x7d /* Inicio comentario */ +#define p_end_rem 0x7e /* Fin comentario */ +#define p_rem 0x7f /* Comentario de una linea */ #define p_strigu 0xc0 #define p_strdis 0xc1 @@ -383,70 +374,55 @@ byte * vhash[256]; // Punteros al vector de nombres; #define p_pointerbyte 0xf7 -#define p_lit 0xfc //Puntero al literal (txt) en pieza_num -#define p_id 0xfd //o es un ptr a vnom (a un ptr al objeto) -#define p_num 0xfe //Número en pieza_num - - -//----------------------------------------------------------------------------- - -// Tabla de elementos léxicos (distintos tipos de token) +#define p_lit 0xfc /* Puntero al literal (txt) en pieza_num */ +#define p_id 0xfd /* o es un ptr a vnom (a un ptr al objeto) */ +#define p_num 0xfe /* Número en pieza_num */ +/* Tabla de elementos léxicos (distintos tipos de token) */ struct lex_ele { byte caracter; byte token; struct lex_ele * alternativa; struct lex_ele * siguiente; } lex_simb[max_nodos], * ilex_simb, * lex_case[256]; -// Pieza (token) que se está leyendo (ver constantes p_xxxx) +/* Pieza (token) que se está leyendo (ver constantes p_xxxx) */ int pieza, pieza_num; -struct objeto * o; // Cuando pieza=p_id, objeto de tipo (**o).tipo -struct objeto * bloque_actual; // Bloque que esta siendo analizado -struct objeto * bloque_lexico; // Es 0 hasta las privadas del program +struct objeto * o; /* Cuando pieza=p_id, objeto de tipo (**o).tipo */ +struct objeto * bloque_actual; /* Bloque que esta siendo analizado */ +struct objeto * bloque_lexico; /* Es 0 hasta las privadas del program */ +struct objeto * member; /* !=0 al declarar/acceder un miembro de un struct */ -struct objeto * member; // !=0 al declarar/acceder un miembro de un struct - -// número de nodos, número de objetos +/* número de nodos, número de objetos */ int num_nodos, num_obj; - int num_obj_predefinidos; -//----------------------------------------------------------------------------- -// Variables relacionadas con el listado formateado -//----------------------------------------------------------------------------- - -int coment; // 0-Código, 1-Dentro de comentario, 2-Anidado, ... -//int convert; // Indica si se deben generar ya los token en ls +/* + * Variables relacionadas con el listado formateado + */ +int coment; /* 0-Código, 1-Dentro de comentario, 2-Anidado, ... */ -//----------------------------------------------------------------------------- -int old_linea; // Situación en el fichero del token anterior al último leido +int old_linea; /* Situación en el fichero del token anterior al último leido */ byte * old_ierror, * old_ierror_end; -// El último token leido está en (linea,ierror,ierror_end) - +/* El último token leido está en (linea,ierror,ierror_end) */ byte * ultima_linea,cero; -// Siguiente token -> next_lexico() +/* Siguiente token -> next_lexico() */ int next_pieza; int next_linea; byte * next_source; -//----------------------------------------------------------------------------- - int parametros; - -int acceso_remoto; // Para no permitir id.private - -//----------------------------------------------------------------------------- +int acceso_remoto; /* Para no permitir id.private */ -//----------------------------------------------------------------------------- -// PROTOTIPOS -//----------------------------------------------------------------------------- +/* + * PROTOTIPOS + */ int crea_objeto(byte * nombre, int nparam); void psintactico(void); @@ -466,4 +442,4 @@ void tglo_init(int tipo); void tloc_init(int tipo); void tglo_init2(int tipo); -#endif // __PARSER_H \ No newline at end of file +#endif /* __EDIV_PARSER_H_ */ \ No newline at end of file diff --git a/ediv/src/shared/language.h b/ediv/src/shared/language.h index 693592e..388eb72 100644 --- a/ediv/src/shared/language.h +++ b/ediv/src/shared/language.h @@ -18,17 +18,18 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* IDs de idioma: - * 0 - ES - Español - * 1 - IT - Italiano (CicTec) - * 2 - PT - Portugués (tareco) - * 3 - EN - Inglés (de momento Er_Makina :P) - * 4 - CA - Catalán (BenKo) - * 5 - EU - Euskera (Jorge Urreta) +/* + * IDs de idioma: + * 0 - ES - Español + * 1 - IT - Italiano (CicTec) + * 2 - PT - Portugués (tareco) + * 3 - EN - Inglés (de momento Er_Makina :P) + * 4 - CA - Catalán (BenKo) + * 5 - EU - Euskera (Jorge Urreta) */ -#ifndef __LANGUAGE_H -#define __LANGUAGE_H +#ifndef __EDIV_LANGUAGE_H_ +#define __EDIV_LANGUAGE_H_ #define NUM_LANGUAGES 6 @@ -36,18 +37,18 @@ int idioma; -// comunes +/* comunes */ int detecta_idioma(); char* translate(int id_cadena); char* translate_dll_error(int num); -// compilador +/* compilador */ char* translate_error(int num); char* translate_warning(int num); char* translate_ltlex_error(int num); -// stub +/* stub */ char* translate_runtime_error(int num); char* translate_critical_error(int num); -#endif // __LANGUAGE_H +#endif /* __EDIV_LANGUAGE_H_ */ diff --git a/ediv/src/shared/shared.h b/ediv/src/shared/shared.h index abe8568..1ce56c9 100644 --- a/ediv/src/shared/shared.h +++ b/ediv/src/shared/shared.h @@ -22,11 +22,11 @@ * Definiciones compartidas de eDiv - Usar en eDiv, encrypt y stub :) */ -#ifndef __SHARED_H -#define __SHARED_H +#ifndef __EDIV_SHARED_H_ +#define __EDIV_SHARED_H_ -#define VERSION "0.1.1 (Orion)" -#define la_clave "Open_eDiv" +#define VERSION "0.1.1 (Orion)" /* Version y codename */ +#define la_clave "Open_eDiv" /* Clave de cifrado */ #define uchar char #define byte unsigned char @@ -37,6 +37,6 @@ #define magic "eDIV Stub\x1a\x0d\x0a\xff" -#define long_header 9 //Longitud de la cabecera al inicio de los programas +#define long_header 9 /* Longitud de la cabecera al inicio de los programas */ -#endif // __SHARED_H \ No newline at end of file +#endif /* __EDIV_SHARED_H_ \ No newline at end of file