Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda con mi compilador en c!!!!!

ñ_ñ@_@o_O

Bovino Milenario
Desde
15 May 2008
Mensajes
1.097
ola bakunos programadores, estoy aki con una razon, y es para que me puedan ayudar por que necesito hacer un compilador pero lo quiero hacer yo mismo no lo quiero copiar de muchos que ay en internet, pero bueno e aki el problema .

k pues yo solo puedo hacer esto jiji, miren lo que pasaes que mi programa solo identifica solo dos cosas los identificadores y los operadores aritmeticos como veran en el codigo.

pero lo que pasa es que al momento de declarar los identificadores, si los puedo declarar asi y tambien los operadores aritmeticos

#include<stdio.h>
#include<conio.h>
#include<dos.h>

void main()

{

int i=0,a=0;
char n;

char identificadores[]={'a','b','c','d','e','f','g','h',
'i','j','k','l','m','n','ñ','o','p','q','r',
's','t','v','w','x','y','z','A','B','C','D',
'E','F','G','H','I','J','K','L','M','N','Ñ',
'O','P','Q','R','S','T','V','W','X','Y','Z'};


char op_aritmeticos[]={'+','-','*','/','%'};

clrscr();
printf("Dame caracter a analisar:");
scanf("%s",&n);



for (i=0;i<=51;i++)
{
if(n == identificadores)
{
printf("IDENTIFICADOR");
break;
}

for (i=0;i<=51;i++)
{
if(n == op_aritmeticos)
{
printf("OPERADOR ARITMETICO");
break;
}


}

}
pero al momento de declarar las variables por ejemplo.

char variables[]={'float','doble','int',char'};

al momento de compilar me dice que en la cadena no acepta mas de 3 caracteres, y pues no se como poder hacer que me pueda haceptar mas de 3 o maximo 8 caracteres (ejemplo: en la declaracion de op aritmeticos, adentro de la llave solo tenia '*','/', tect... pero en variables 'int','float',tec... ya no me lo acepta)

espero que me aya dado a entender :eolo:y asi poder recivir su valiosa ayuda.:)

see you bakunos..
 
si no me equivoco esta parte:

Código:
char op_aritmeticos[]={'+','-','*','/','%'};

es como si pusieras esto:
Código:
char op_aritmeticos[]="+-*/%";

solo que la segunda opcion le pone el fin de cadena '\0', entonces si te das cuenta, lo que quieres hacer es que en el primer ejemplo meterle mas de un caracter en la posicion 0 cuando eso no es posible. Si no me equivoco, para eso tienes que declarar un pentero tipo char de un array, algo asi como:

Código:
char* variables[]={'float','doble','int',char'};
 
tiene razon malavvadomx

el tipo char, es solo una letra y nada mas

tendras que implementar o de una libreria utilizar una implementacion externa de un tipo string que use secuencias de char

quizas tambien puedas definir una arreglo de arreglos en el que la dimension donde este el valor mismo, sea el arreglo de char y te manejes con un numero, pero la verdad no recuerdo las reglas de la definicion de arreglos en c

saludos suerte
 
si no me equivoco esta parte:

Código:
char op_aritmeticos[]={'+','-','*','/','%'};
es como si pusieras esto:
Código:
char op_aritmeticos[]="+-*/%";
solo que la segunda opcion le pone el fin de cadena '\0', entonces si te das cuenta, lo que quieres hacer es que en el primer ejemplo meterle mas de un caracter en la posicion 0 cuando eso no es posible. Si no me equivoco, para eso tienes que declarar un pentero tipo char de un array, algo asi como:

Código:
char* variables[]={'float','doble','int',char'};

tiene razon malavvadomx

el tipo char, es solo una letra y nada mas

tendras que implementar o de una libreria utilizar una implementacion externa de un tipo string que use secuencias de char

quizas tambien puedas definir una arreglo de arreglos en el que la dimension donde este el valor mismo, sea el arreglo de char y te manejes con un numero, pero la verdad no recuerdo las reglas de la definicion de arreglos en c

saludos suerte


muchas gracias muchas muchas gracias!!!!:metal::metal::vientos:
 
Volver
Arriba