Escolar Documentos
Profissional Documentos
Cultura Documentos
que este es mi primer programa serio en Java pues veran que desconosco algunos m
etodos para manejar correctamente los Strings*/
if (numT
okens !=nT){
///Copio el arreglo original al arre
glo temporal para incrementar en numero de filas
for (int I=0; I<numTokens; I++){
TokensT[
I][0] = (new String(Tokens[I][0]));
Token
sT[I][1] = (new String(Tokens[I][1]));
}
///Se supone que antes ya se aadio un token por lo que se
nesecita de una nueva linea
Tokens = new String [
numTokens+1][2];
nT = numTokens;
///Copio el arreglo temporal al nuevo arreglo original
for (int I=0; I<numTokens; I++){
Tokens[I][0] = (new String(TokensT[I][0]));
Tokens[I][1] = (new String(TokensT[I][1]));
}
TokensT = new String [numTokens+1][2
];
}/** Se iran aadiendo nuevas filas despues de aadir un
token y hasta que se haya llegado al final de la linea, lo cual es controlado
por la primera senencia: if (i==N){ *//// E S T A D O S F I N A L E S D E L
A U T O M A T A
//Caracter invalido---------------------------------------------------if (nodo.equals("0.0.0
")){
Tokens[numTokens][0] = ("CaracterInvalido")
;
Tokens[numTokens][1] = ("(C)");
numTokens += 1;
word = "";
nodo = "0";
}
//Identificadores------------------------------------------------------if (nodo.equals("0.1.0")){
if (isIdentifier(word)){
Tokens[numToken
s][0] = ("PalabraReservada");
Tokens[numT
okens][1] = (word);
}else{
Tokens[numTokens][0] = ("Identificador");
Tokens[numTokens][1] = (word);
}
numTokens += 1;
word = "";
nodo = "0";
}
//Numero Entero-------------------------------------------------------if (nodo.equals("0.2.0")){
Tokens[numTokens][0] = ("NumeroEntero");
Tokens[numTokens][1] = (word);
numToken
s += 1;
word = "";
nodo = "0";
}
//Numero Real---------------------------------------------------------if
(nodo.equals("0.2.1.0")){
Tokens[numTokens][0] =
("NumeroReal");
Tokens[numTokens][1] = (word);
numTokens += 1;
word
= "";
nodo = "0";
}
//Numero Real---------------------------------------------------------if (nodo.equals("0.2.1.1.0")){
Tokens[numTokens][0] = ("NumeroReal");
Tokens[numTokens][1] = (word);
numTokens +=
1;
word = "";
nod
o = "0";
}
//Punto---------------------------------------------------------------if (nod
o.equals("0.3.0")){
Tokens[numTokens][0] = ("Punt
o");
Tokens[numTokens][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Coma-----------------------------------------------------------------if (nodo.equals("0.4.0")){
Tokens[numTokens][0] = ("Coma");
Tokens[numToken
s][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
----------------------------
//Menor----------------------------------------------------------if (nodo.equals("0.15.0")){
Tokens[numTokens][0] = ("Menor");
Tokens
[numTokens][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Menor o Igual-------------------------------------------------------if (nodo.equals("0.
15.1.0")){
Tokens[numTokens][0] = ("MenorIgual");
Tokens[numTokens][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Mayor----------------------------------------------------------------if (nodo.equals("0.16.0")){
To
kens[numTokens][0] = ("Mayor");
Tokens[numTokens]
[1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Mayor o Igual-------------------------------------------------------if (nodo.equals("0.16.1.0")){
Tokens[numTokens][0] = ("MayorIgual");
Tokens[numTokens][1] = (word);
System.out.println(word);
numTokens += 1;
word = "";
nodo = "0";
}
//Gato----------------------------------------------------------------if (nodo.equals
("0.17.0")){
Tokens[numTokens][0] = ("Gato");
Tokens[numTokens][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
/
/Igual----------------------------------------------------------------if (nodo.equals("0.18.0")){
Tokens
[numTokens][0] = ("Igual");
Tokens[numTokens][1]
= (word);
numTokens += 1;
word = "";
nodo = "0";
}
//And-----------------------------------------------------------------if (nodo.equals("0.19.0")){
Tokens[numTokens][0] = ("And");
Tokens[numTokens][1] = (word);
numTokens
+= 1;
word = "";
n
odo = "0";
}
//Or------------------------------------------------------------------if (n
odo.equals("0.20.0")){
Tokens[numTokens][0] = ("O
r");
Tokens[numTokens][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Not------------------------------------------------------------------if (nodo.equals("0.21.0")){
Tokens[numTokens][0] = ("Not");
Tokens[numToken
s][1] = (word);
numTokens += 1;
word = "";
nodo = "0";
}
//Nueva Linea---------------------------------------------------------if (nodo.equals("0.22.0")){
word = "";
nodo =
"0";
}
//Espacio-------------------------------------------------------------if (nodo.eq
uals("0.23.0")){
word = "";
nodo = "0";
}
//Tabulaci
on-----------------------------------------------------------if (nodo.equals("0.24.0")){
word = "";
nodo = "0";
}
if ((nodo.equals("0")) && (word.equals(""))){
------
}else{
if (car=='%'){
if(nodo.equals("0")){ nodo="0.14"; }els
e{ nodo = nodoT + ".0"; }
}
//15
i
f (car=='<'){
if(nodo.equals("0")){ nodo="0.15"; }else{ n
odo = nodoT + ".0"; }
}
//16
if (c
ar=='>'){
if(nodo.equals("0")){ nodo="0.16"; }else{ nodo
= nodoT + ".0"; }
}
//17
if (car==
'#'){
if(nodo.equals("0")){ nodo="0.17"; }else{ nodo = no
doT + ".0"; }
}
//18
if (car=='=')
{
if(nodo.equals("0")){ nodo="0.18";
}else if (nodo.equals("0.15")){ nodo="0.15.1";
}else
if (nodo.equals("0.16")){ nodo="0.16.1";
}else{ nodo = n
odoT + ".0";
}
}
//19
if (car=='&'){
if(nodo.equals("0")){ nodo="0.1
9"; }else{ nodo = nodoT + ".0"; }
}
//20
if (car=='|'){
if(nodo.equals("0")){ nodo="0.20";
}else{ nodo = nodoT + ".0"; }
}
//21
if (car=='!'){
if(nodo.equals("0")){ nodo="0.21"; }els
e{ nodo = nodoT + ".0"; }
}
//22
i
f (car=='\n'){
if(nodo.equals("0")){ nodo="0.22"; }else{
nodo = nodoT + ".0"; }
}
//23
if (
car==' '){
if(nodo.equals("0") || nodo.equals("0.23") ){
nodo="0.23"; }else{ nodo = nodoT + ".0"; }
}
//24
if (car=='\t'){
if(nodo.equals("0")){ nod
o="0.24"; }else{ nodo = nodoT + ".0"; }
}
return
nodo;
}
///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///Funcion isIdentifier: Devuelve ver
dadero si es una palabra reservada///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
public static boolean isI
dentifier (String word){
if ((word.equals("IF"))||
(word.equals("THEN"))||
(word.equals("WHILE"))||
(word.equals("DO"))||
(word.equal
s("PROCEDURE"))||
(word.equals("BEGIN"))||
(word.equals("END"))||
(word.equals("CONST"))||
(word.equals("VAR"))||
(word.equal
s("NUM"))||
(word.equals("AIF")))
{
return (true);
}else{
ret
urn (false);
}
}///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///Funcion carTipo: Devuelve
0 si es una letra, 1 si es un numero...///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
public static int ca
rTipo(char c){
Character car = new Character (c);
car.toUpperCase(c);
if (
(car=='A') || (c
ar=='B') || (car=='C') || (car=='D') || (car=='E') ||
(ca
r=='F') || (car=='G') || (car=='H') || (car=='I') || (car=='J') ||
(car=='K') || (car=='L') || (car=='M') || (car=='N') ||
(car=='O') || (car=='P') || (car=='Q') || (car=='R') || (car=='S') ||
(car=='T') || (car=='U') || (car=='V') || (car=='W') || (
car=='X') ||
(car=='Y') || (car=='Z')
){
return 0;
}else if(
(car=='0') || (car=='1') || (car=='2') || (car=='3') || (car=='4') ||
(car=='5') || (car=='6') || (car=='7') || (car=='8') || (car=='9')
){
return 1;
}else if(
(car=='.') || (car==',') || (car==';') || (car==':') || (car
=='(') ||
(car==')') || (car=='+') || (car=='-') || (car=
='*') || (car=='/') ||
(car=='%') || (car=='<') || (car==
'>') || (car=='#') || (car=='\\') ||
(car=='=') || (car=
='&') || (car=='|') || (car=='!') || (car=='\n') ||
(car=
='\t') || (car==' ')
){
return 2;
}else {
return -1;
}
}