ayuda con mi compilador en c!!!!!

ñ_ñ@_@o_O

Bovino adicto
#1
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..
 

malvadomx

Bovino maduro
#2
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'};
 
#3
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
 

ñ_ñ@_@o_O

Bovino adicto
#4
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:
 
Arriba