Ayuda Programadores (Java)!

hatred.designs

Bovino adolescente
#1
Me dejaron crear un programa:

Hacer un programa que sea capaz de identificar (separar) cada uno de los elementos léxicos de acuerdo a la tabla de símbolos.La salida del programa deberá de ser cada uno de dichos elementos léxicos por separado seguido del token (número).


Alguien sabe mas o menos como hacerlo? Se que es facil pero no llego a la logica para crearlo, obvio la tabla de simbolos la tengo yo, solo seria cuestion de que alguien me ayudara para vernos por msn o aqui mismo y dejar la tabla de símbolos. Gracias de antemano!!:vientos:
 

Zephyros

Bovino de la familia
#2
Sólo te informo algo, aquí no le hacemos la tarea a nadie, si quieres ayuda debes postear lo que lleves de avance en código y plantearnos dudas con el mismo, nada del estilo "cómo lo hago?".
La idea de ayudar es que seas tú mismo quién desarrolle la lógica de programación, no que nosotros te digamos cómo hacerlo, de lo contrario no aprenderás nada.

Espero comprendas... n_n
 

50C1

Bovino adicto
#3
Andas haciendo "el compi" el compilador de seguro y tienes razon el lexico es lo mas facil. Asi que piensale mas, no le tengas miedo al editor y la hoja en blanco experimentale, intentalo varias veces hasta que te reconozca 1 token y despues otro y asi.

Muchos aprenden a programar a prueba y error echale ganas.

Saludos.
 

hatred.designs

Bovino adolescente
#4
Saludos, si lo comprendo, y si tengo mi codigo, pero no hace la comparacion con los tokens que tengo, si alguien me pudiera ayudar, aqui dejo el codigo:


import java.io.*;
public class leer
{
public static void main(String[] args)
{

String aux= null;
String num [] = null;
char caract[] = null;

FileReader entrada=null;
StringBuffer str=new StringBuffer();
try {

InputStreamReader isr=new InputStreamReader (System.in);
BufferedReader br=new BufferedReader (isr);
String cadena;
System.out.println("Nombre del archivo:");
cadena= br.readLine();


entrada=new FileReader(cadena);
int c;
while((c=entrada.read())!=-1){
str.append((char)c);
}
System.out.println(str);
System.out.println("--------------------------------------");
}catch (IOException ex) {
System.out.println("error... no se encontro el archivo");
}finally{
}
caract = new char[str.length()];
num=new String[str.length()];
int i=0, j=0;
for (int k=0;k<str.length();k++)
caract[k]=str.charAt(k);
while (i<str.length())
{
switch (caract)
{
case '.':
num[j]=caract+"115";
case ',':
num[j]=caract+"65";
case ';':
num[j]=caract+"40";
case '-':
num[j]=caract+"100";
case '*':
num[j]=caract+"105";
case '/':
num[j]=caract+"110";
case '%':
num[j]=caract+"90";
case '(':
num[j]=caract+"70";
case ')':
num[j]=caract+"75";
case '=':
{
if (caract[i+1]=='=')
{
num[j]=caract+caract[i+1]+"30";
i++;
}
else
num[j]=caract+"26";
}
case '+':
num[j]=caract+"95";
case '>':
{
if (caract[i+1]=='=')
{
num[j]=caract+"60";
i++;
}
else
num[j]=caract+"50";
}

case '<':
{
if (caract[i+1]=='=')
{
num[j]=caract+"55";
i++;
}
else
num[j]=caract+"45";
}
case '#':
num[j]=caract+"80";
case '&':
num[j]=caract+"85";

}
if (caract>='0' && caract<='9')
{
while (caract[i+1]>='0' && caract[i+1]<='9')
{
num[j]=caract+caract[i+1]+"25";
i++;
}

num[j]=caract+"25";

}
if (caract>='a' && caract<='z'||caract>='A' && caract<='Z')
{
while (caract[i+1]>='a' && caract[i+1]<='z'||caract[i+1]>='A' && caract[i+1]<='Z')
{
num[j]=caract+caract[i+1]+"20";
i++;
}

if (num.compareTo("INICIO")==0)
num[j]=num[j]+"1";
if (num.compareTo("LEER")==0)
num[j]=num[j]+"2";
if (num.compareTo("MIENTRAS")==0)
num[j]=num[j]+"4";
if (num.compareTo("PARA")==0)
num[j]=num[j]+"5";
if (num.compareTo("CONST")==0)
num[j]=num[j]+"6";
if (num.compareTo("SI")==0)
num[j]=num[j]+"7";
if (num.compareTo("LLAMAR")==0)
num[j]=num[j]+"8";
if (num.compareTo("PROC")==0)
num[j]=num[j]+"9";
if (num.compareTo("ESCRIBIR")==0)
num[j]=num[j]+"10";
if (num.compareTo("FIN")==0)
num[j]=num[j]+"15";


num[j]=caract+"61";
}
else
num[j]="caracter no valido";
i++;
j++;
}
for (int k=0;k<num.length;k++)
{
aux=aux+num[k]+"";
}
System.out.println(aux);
}
}
 

NemesisFF

Bovino adicto
#6
creo que hay una funcion que se llama token algo jeje, la verdad no me acuerdo, pero t puede ser muy util para el analizador lexico.
Saludos.
 
Arriba