Ayuda con un proyecto

ale
31 de Enero del 2004
Hola tengo un pequeño problemita, no soy bueno en C y necesito presentar un proyecto, yo estoy haciendo, pero no me sale casi nada, me gustaria saber si alguien me puede ayudar a hacer esto... espero no lo tomen mal, yo tambien estoy intentando hacer, pero nada me funciona, solo puedo leer el archivo, y extraer algunos datos.. por favor ayudenme..

Construir un programa en lenguaje “C” que analice cualquier código escrito en este mismo lenguaje y arroje la siguiente información en un archivo de resultados:
• Variables globales
o Listado
o Cantidad de memoria que ocupan las variables globales
• Funciones (incluir también la función especial “main”)
o Con su tipo de retorno y correspondiente lista de parámetros
o Listado de variables locales
o Cantidad de memoria que ocupa cada llamada a dicha función considerando las variables locales que contiene
o Cantidad de bloques de código presentes
o Cantidad de líneas de código que contiene
o Indicar si es recursiva o no

Considerar el siguiente fragmento de código como un ejemplo simple:

#include <stdio.h>

#define EL_TAMA 100

struct a {
int j;
int k;
} s;
struct b {
int l;
struct a m;
} r;

char k;

int f(char l);
char *nombre(int pos);
void lista(void);

int main(int argc, char **argv) {
struct a vec[5];
f(‘a’);
printf(“%sn”, nombre(2));
lista();
}
int f(char l) {
struct b sb[2];
if (l == ‘a’) {
f(l + 1);
}
return l + 1;
}
char *nombre(int pos) {
return “hola”;
}
void lista(void) {
int o;
char h[EL_TAMA];
strcpy(h, “ALOLC”);
}

El archivo de resultados debe contener la siguiente estructura:

<codigo>
<globales cantidad=”3” mem=”11”>
<variable nombre=”s” tipo=”struct a” vector=”no” mem=”4”/>
<variable nombre=”r” tipo=”struct b” vector=”no” mem=”6”/>
<variable nombre=”k” tipo=”char” vector=”no”/ mem=”1”>
</globales>
<funciones cantidad=”4”>
<funcion nombre=”main” retorno=”int” mem=”” recursiva=”no” mem=”26”>
<parametro nombre=”argc” tipo=”int” vector=”no” mem=”2”/>
<parametro nombre=”argv” tipo=”char**” vector=”no” mem=”4”/>
<variable nombre=”a” tipo=”struct a” vector=”si” mem=”20”/>
</funcion>
<funcion nombre=”f” retorno=”int” mem=”13” recursiva=”si”>
<parametro nombre=”l” tipo=”char” vector=”no” mem=”1”/>
<variable nombre=”sb” tipo=”struct b” vector=”si” mem=”12”/>
</funcion>
<funcion nombre=”nombre” retorno=”char*” mem=”2” recursiva=”no”>
<parametro nombre=”pos” tipo=”int” mem=”2”/>
</funcion>
<funcion nombre=”lista” retorno=”void” mem=”102” recursiva=”no”>
<variable nombre=”o” tipo=”int” vector=”no” mem=”2”/>
<variable nombre=”h” tipo=”char” vector=”si” mem=”100”/>
</funcion>
</funciones>
</codigo>