Mas limpieza de codigo y comentarizacion :)

This commit is contained in:
Víctor Román Archidona 2002-10-07 14:51:57 +00:00
parent 8fa6611639
commit a47dc64718
4 changed files with 96 additions and 124 deletions

View file

@ -1,7 +1,7 @@
/*
* eDiv Compiler
* Copyleft (C) 2000-2002 Sion Entertainment
* http://www.sion-e.com
* Copyright (C) 2000-2002 Sion Entertainment
* http://www.sionhq.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -23,7 +23,6 @@
#include <stdlib.h>
#include "main.h"
//#include "config.h"
#include "compiler.h"
#include "lower.h"
#include "language.h"
@ -59,7 +58,8 @@ void lee_ediv_cfg(char* ediv_cfg)
strcpy(cfg,ediv_cfg);
max_process=0; // Valores de las opciones por defecto
/* Valores de las opciones por defecto */
max_process=0;
ignore_errors=0;
free_sintax=0;
extended_conditions=0;
@ -91,9 +91,9 @@ void lee_ediv_cfg(char* ediv_cfg)
if(!strcmp(tag,"max_process")) {
salta_spc();
if(buffer[i]!='=') cfg_error(1); // se esperaba '='
if(buffer[i]!='=') cfg_error(1); /* se esperaba '=' */
salta_spc();
if(buffer[i]<'0' || buffer[i]>'9') cfg_error(2); // se esperaba un dato numerico
if(buffer[i]<'0' || buffer[i]>'9') cfg_error(2); /* se esperaba un dato numerico */
c=0;
while(buffer[i]>='0' && buffer[i]<='9' && i<tamano)
tag[c++]=buffer[i++];
@ -106,51 +106,51 @@ void lee_ediv_cfg(char* ediv_cfg)
printf("dbg: max_process=%d\n",max_process);
#endif
break;
case 1: // _extended_conditions
case 1: /* _extended_conditions */
lexico();
extended_conditions=1;
break;
case 2: // _simple_conditions
case 2: /* _simple_conditions */
lexico();
simple_conditions=1;
break;
case 3: // _case_sensitive
case 3: /* _case_sensitive */
lexico();
memcpy(lower+129,"üéâäàåçêëèïîìäåéææôöòûùÿöü¢£¥áíóú",35);
memcpy(lower+'A',"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26);
lower['Ñ']='Ñ';
break;
case 4: // _ignore_errors
case 4: /* _ignore_errors */
lexico();
ignore_errors=1;
break;
case 5: // _free_sintax
case 5: /* _free_sintax */
lexico();
free_sintax=1;
break;
case 6: // _no_check
case 6: /* _no_check */
lexico();
comprueba_rango=0;
comprueba_id=0;
comprueba_null=0;
break;
case 7: // _no_strfix
case 7: /* _no_strfix */
lexico();
hacer_strfix=0;
break;
case 8: // _no_optimization
case 8: /* _no_optimization */
lexico();
optimizar=0;
break;
case 9: // _no_range_check
case 9: /* _no_range_check */
lexico();
comprueba_rango=0;
break;
case 10: // _no_id_check
case 10: /* _no_id_check */
lexico();
comprueba_id=0;
break;
case 11: // _no_null_check
case 11: /* _no_null_check */
lexico();
comprueba_null=0;
break;

View file

@ -49,19 +49,21 @@ typedef BOOL (WINAPI *DLLMAIN_T)(HMODULE hinstDLL, DWORD fdwReason, LPVOID lpvRe
#pragma pack(pop)
// Process-global variables
/* Process-global variables */
IMAGE_PARAMETERS *g_pImageParamHead;
CRITICAL_SECTION g_DLLCrit;
// Function implementations
/* Function implementations */
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Detecta la version de windows //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Si es WinNT devuelve g_bIsWinNT=1
// Si es Win'9x/Me devuelve g_bIsWinNT=0;
/*
* void CheckWindowsVersion(void);
* Detecta la version de windows
*
* Ajusta
* g_bIsWinNT a 1 si estamos en un NT
* g_bIsWinNT a 0 si NO estamos en un NT
*/
void CheckWindowsVersion(void)
{
OSVERSIONINFO osvi;
@ -76,10 +78,9 @@ void CheckWindowsVersion(void)
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialization Routines //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Initialization Routines
*/
void InitializeDLLLoad(void)
{
InitializeCriticalSection(&g_DLLCrit);
@ -100,10 +101,9 @@ void KillDLLLoad(void)
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal DLL list management //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Internal DLL list management
*/
// returns 0 if just ref count increment, 1 if this is a new addition, -1 on error
static int AddDLLReference(void *pImageBase, char *svName, DWORD dwFlags)
{

View file

@ -1,7 +1,7 @@
/*
* eDiv Compiler
* Copyleft (C) 2000-2002 Sion Entertainment
* http://www.sion-e.com
* Copyright (C) 2000-2002 Sion Entertainment
* http://www.sionhq.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -21,9 +21,7 @@
#ifdef _WIN32
# include <winsock2.h>
# include "dll_load.h"
struct in_addr iahost;
//struct sockaddr_in sin;
struct hostent *htent;
struct servent *svent;
int status;
@ -36,9 +34,8 @@ void muestra_motd();
void conecta(char *servidor, char *archivo);
#else
# include <dlfcn.h> // ¿será igual en BeOS?
# include <dlfcn.h> /* ¿será igual en BeOS? */
# include <dirent.h>
//# include <sys/stat.h>
#endif
#include <stdio.h>
@ -58,9 +55,9 @@ void conecta(char *servidor, char *archivo);
int main(int argc, char *argv[])
{
FILE *fp; // stream del PRG
FILE *fp; /* stream del PRG /*
char *p;
char libmagic[14]; // cabecera "magic" de EDIVRUN.LIB
char libmagic[14]; /* cabecera "magic" de EDIVRUN.LIB */
int i,j;
byte hayprog=0;
@ -73,8 +70,7 @@ int main(int argc, char *argv[])
listados=0;
noexe=0;
// Sistemas
/* Sistemas */
#ifdef _WIN32
strcpy(sistema,"win32");
#endif
@ -87,7 +83,7 @@ int main(int argc, char *argv[])
idioma=detecta_idioma();
// mensaje de cabecera
/* mensaje de cabecera */
printf(translate(0));
printf(translate(1));
printf("\n");
@ -99,7 +95,7 @@ int main(int argc, char *argv[])
if(strcmp(argv[1],"--help")==0 || strcmp(argv[1],"-h")==0) {
ayuda:
// pantalla de ayuda
/* pantalla de ayuda */
printf(translate(2));
printf(translate(3),argv[0]);
printf(translate(4));
@ -129,7 +125,7 @@ int main(int argc, char *argv[])
if(++i<argc) {
strcpy(sistema,argv[i]);
} else {
printf(translate(12)); // se debe indicar un sistema para --system
printf(translate(12)); /* se debe indicar un sistema para --system */
exit(1);
}
#ifdef _WIN32
@ -138,7 +134,7 @@ int main(int argc, char *argv[])
}
#endif
else {
printf(translate(13),argv[i]); // parámetro erróneo
printf(translate(13),argv[i]); /* parámetro erróneo */
exit(1);
}
}
@ -169,7 +165,7 @@ int main(int argc, char *argv[])
j=strlen(argv[i])-1;
}
else {
printf(translate(14)); // se debe indicar un sistema para -s
printf(translate(14)); /* se debe indicar un sistema para -s */
exit(1);
}
}
@ -180,7 +176,7 @@ int main(int argc, char *argv[])
exit(0);
#endif
default:
printf(translate(15),argv[i][j]); // parámetro erróneo
printf(translate(15),argv[i][j]); /* parámetro erróneo */
exit(1);
}
j++;
@ -197,13 +193,13 @@ int main(int argc, char *argv[])
hayprog=2;
break;
default:
printf(translate(13),argv[i]); // parámetro erróneo
printf(translate(13),argv[i]); /* parámetro erróneo */
exit(1);
}
}
if(hayprog==0) {
printf(translate(16)); // no se ha especificado un archivo
printf(translate(16)); /* no se ha especificado un archivo */
exit(1);
}
@ -222,30 +218,28 @@ int main(int argc, char *argv[])
strcpy(fichero_prg,nombreprog);
strcat(fichero_prg,".PRG");
if(!(fp = fopen(fichero_prg, "rb"))) {
printf(translate(17),nombreprog); // error al abrir archivo
printf(translate(17),nombreprog); /* error al abrir archivo */
exit(1);
}
}
}
else {
printf(translate(17),argv[1]); // error al abrir archivo
printf(translate(17),argv[1]); /* error al abrir archivo */
exit(1);
}
}
// Componemos el nombre del ejecutable
/* Componemos el nombre del ejecutable */
if(hayprog<2) {
strcpy(outfilename,nombreprog);
if(!strcmp(sistema,"win32"))
strcat(outfilename,".exe");
}
printf(translate(18),fichero_prg); // compilando...
printf(translate(18),fichero_prg); /* compilando... */
/*fichero_prg=(char*)e_malloc(strlen(argv[1])+1);
strcpy(fichero_prg,argv[1]); // fichero_prg="xxxxx.prg"*/
// mete el PRG en el buffer prog
/* mete el PRG en el buffer prog */
fseek(fp,0,SEEK_END);
progsize=ftell(fp);
prog = (char *)e_malloc(progsize+1);
@ -257,7 +251,7 @@ int main(int argc, char *argv[])
} while(!feof(fp));
fclose(fp);
// Comprueba si existe la edivrun.lib
/* Comprueba si existe la edivrun.lib */
if(!noexe) {
strcpy(edivrun_lib,sistema);
if(debug)
@ -266,13 +260,13 @@ int main(int argc, char *argv[])
strcat(edivrun_lib,".rel");
if((fp = fopen(edivrun_lib, "rb"))==NULL) {
printf(translate(19),edivrun_lib); // no se encuentra el fichero
printf(translate(19),edivrun_lib); /* no se encuentra el fichero */
exit(1);
}
else {
fread(libmagic,1,14,fp);
if(strcmp(libmagic,magic)) {
printf(translate(20),edivrun_lib); // formato incorrecto de edivrun.lib
printf(translate(20),edivrun_lib); /* formato incorrecto de edivrun.lib */
fclose(fp);
exit(1);
}
@ -286,11 +280,9 @@ int main(int argc, char *argv[])
}
}
// El stream de salida para el seudocódigo
// fout=tmpfile();
if(!ini) {
max_process=0; // Valores de las opciones por defecto
/* Valores de las opciones por defecto */
max_process=0;
ignore_errors=0;
free_sintax=0;
extended_conditions=0;
@ -322,13 +314,6 @@ int main(int argc, char *argv[])
prepara_compilacion();
dll_func();
//**************************
//###############//
// NO PONER NADA //
//loggea("prg: %s",argv[1]);
//@@@@@@@@@@@@@@@//
compila();
#ifdef MULTI_ERROR
@ -350,7 +335,13 @@ int main(int argc, char *argv[])
}
// idéntico a malloc, pero con errormsg utomático
/*
* void *e_malloc(size_t size)
* Idéntico a malloc, pero con errormsg automático
*
* Retorna:
* El numero de bytes de memoria alojados o sale si no se puede reservar la memoria.
*/
void* e_malloc(size_t size)
{
void* ret;
@ -370,14 +361,13 @@ void errormem()
}
//-----------------------------------------------------------------------------
// Gestión de errores
//-----------------------------------------------------------------------------
/*
* Gestión de errores
*/
int _le,_t;
byte *_ie;
void save_error(word tipo) { // Guarda una posicion de error (de 0 .. 3)
void save_error(word tipo) { /* Guarda una posicion de error (de 0 .. 3) */
switch(tipo) {
case 0: _le=linea; _ie=ierror; break;
case 1: _le=old_linea; _ie=old_ierror_end; break;
@ -386,12 +376,13 @@ void save_error(word tipo) { // Guarda una posicion de error (de 0 .. 3)
} _t=tipo;
}
// 0 - Inicio de la pieza actual
// 1 - Final de la pieza anterior mas un espacio (si se puede)
// 2 - Inicio de la pieza anterior
// 3 - Final de la pieza anterior
// 4 - Error guardado con save_error(0..3)
/*
* 0 - Inicio de la pieza actual
* 1 - Final de la pieza anterior mas un espacio (si se puede)
* 2 - Inicio de la pieza anterior
* 3 - Final de la pieza anterior
* 4 - Error guardado con save_error(0..3)
*/
void error(word tipo, word num, ...)
{
int columna=0;
@ -440,8 +431,6 @@ void error(word tipo, word num, ...)
#ifdef MULTI_ERROR
}
#endif
//lexico();
}
void warning(int num, ...)
@ -455,7 +444,9 @@ void warning(int num, ...)
n_warnings++;
}
//#define DEBUG_HTTP
/* Descomentar la siguiente linea para activar el debug de las noticias: */
/* #define DEBUG_HTTP */
#ifdef _WIN32
void muestra_motd()
{
@ -466,14 +457,14 @@ void muestra_motd()
motdserver=iniparser_getstr(ini,"general:motd_host");
motdpath=iniparser_getstr(ini,"general:motd_path");
if(!motdserver) {
printf(translate(49)); // el servidor de motd debe estar en ediv.cfg
printf(translate(49)); /* el servidor de motd debe estar en ediv.cfg */
exit(1);
}
if(!motdpath) motdpath="/ediv/actual/motd.txt";
conecta(motdserver,motdpath);
exit(0);
} else {
printf(translate(49)); // el servidor de motd debe estar en ediv.cfg
printf(translate(49)); /* el servidor de motd debe estar en ediv.cfg */
exit(1);
}
}
@ -522,7 +513,6 @@ void conecta(char *servidor, char *archivo)
return;
}
//sprintf(buffer,"GET /%s\n",archivo);
sprintf(buffer,"GET %s HTTP/1.1\n"
"User-Agent: Mozilla/4.76 (Windows 2000; U) Opera 5.12 [es]\n"
"Host: %s\n"

View file

@ -1,7 +1,7 @@
/*
* eDiv Compiler
* Copyleft (C) 2000-2002 Sion Entertainment
* http://www.sion-e.com
* Copyright (C) 2000-2002 Sion Entertainment
* http://www.sionhq.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -31,7 +31,6 @@
#include "language.h"
//int len,ret,cod;
int len;
struct objeto * ob;
struct objeto * ob2;
@ -39,12 +38,11 @@ struct objeto * ob2;
int creaobj;
int numparams;
byte decl_struct=0; // 1 si se está declarando un struct
byte struct_reserved=0; // 1 si se está declarando la estructura reserved
byte decl_struct=0; /* 1 si se está declarando un struct */
byte struct_reserved=0; /* 1 si se está declarando la estructura reserved */
// Errores específicos en la ejecución de una DLL
/* Errores específicos en la ejecución de una DLL */
void dll_error(int error, ...)
{
va_list opparam;
@ -95,21 +93,6 @@ int EDIV_Export(char* cadena, int nparam, void* hfuncion)
(*ob).fext.codigo=n_externs;
(*ob).fext.num_par=nparam;
/* for(i=0;i<numdlls;i++)
for(j=0;j<dlls[i].nfuncs;j++)
if(strcmp(cadena,dlls[i].ext_funcs[j].cadena)==0) {
dll_error(4,cadena);
return 0;
}*/
/*#define actfunc dlls[numdlls-1].ext_funcs[dlls[numdlls-1].nfuncs]
actfunc.cadena=(char*)e_malloc(strlen(cadena)+1);
strcpy(actfunc.cadena,cadena);
actfunc.nparam = nparam;
actfunc.hfuncion = hfuncion;*/
// dlls[numdlls-1].nfuncs++;
n_externs++;
return 1;
@ -243,7 +226,7 @@ int EDIV_Export_Global_Tab(char* cadena, int numregs)
(*ob).tglo.len3=-1;
(*ob).tglo.totalen=len+1;
// Inicializamos la tabla a 0
/* Inicializamos la tabla a 0 */
do {
mem[imem++]=0;
} while (len--);
@ -325,14 +308,14 @@ int EDIV_Export_Member_Int(char* cadena, int valor)
return 0;
}
if((*ob).tipo==tsglo) { // int miembro de struct global
if((*ob).tipo==tsglo) { /* int miembro de struct global */
(*ob2).tipo=tvglo;
(*ob2).vglo.offset=len++;
mem[imem]=valor;
(*ob).sglo.len_item++;
return imem++;
}
else { // int miembro de struct local
else { /* int miembro de struct local */
if(struct_reserved)
indexa_variable(v_reserved,cadena,iloc);
(*ob2).tipo=tvloc;
@ -372,7 +355,7 @@ int EDIV_Export_Member_Str(char* cadena, int tamano)
return 0;
}
if((*ob).tipo==tsglo) { // string miembro de struct global
if((*ob).tipo==tsglo) { /* string miembro de struct global */
(*ob2).tipo=tcglo;
(*ob2).cglo.offset=len+1;
@ -394,7 +377,7 @@ int EDIV_Export_Member_Str(char* cadena, int tamano)
return (*ob2).cglo.offset;
}
else { // string miembro de struct local
else { /* string miembro de struct local */
(*ob2).tipo=tcloc;
(*ob2).cloc.offset=len+1;
@ -447,7 +430,7 @@ int EDIV_Export_Member_Tab(char* cadena, int numregs)
return 0;
}
if((*ob).tipo==tsglo) { // array miembro de struct global
if((*ob).tipo==tsglo) { /* array miembro de struct global */
(*ob2).tipo=ttglo;
(*ob2).tglo.offset=len;
(*ob2).tglo.len1=numregs;
@ -461,7 +444,7 @@ int EDIV_Export_Member_Tab(char* cadena, int numregs)
return (*ob2).tglo.offset;
}
else { // array miembro de struct local
else { /* array miembro de struct local */
if(struct_reserved)
indexa_variable(v_reserved,cadena,iloc);
(*ob2).tipo=ttloc;
@ -493,7 +476,7 @@ int EDIV_Export_EndStruct()
member=NULL;
if((*ob).tipo==tsglo) { // cierra estructura global
if((*ob).tipo==tsglo) { /* cierra estructura global */
if ((*ob).sglo.len_item==0) {
dll_error(10);
return 0;
@ -506,7 +489,7 @@ int EDIV_Export_EndStruct()
} while (len--);
}
}
else { // cierra estructura local
else { /* cierra estructura local */
if ((*ob).sloc.len_item==0) {
dll_error(10);
return 0;
@ -518,7 +501,6 @@ int EDIV_Export_EndStruct()
iloc++;
} while (len--);
}
// iloc+=(*ob).sloc.totalitems*(*ob).sloc.len_item;
}
decl_struct=0;
@ -603,7 +585,7 @@ int EDIV_Export_Local_Tab(char* cadena, int numregs)
(*ob).tloc.len3=-1;
(*ob).tloc.totalen=len+1;
// Inicializamos la tabla a 0
/* Inicializamos la tabla a 0 */
do {
loc[iloc++]=0;
} while (len--);