Estou tentando fazer um programa similar à um compilador, ele deveria verificar o seguinte arquivo de texto: Classe.txt que tem como conteúdo: classe teste { int i; }
O resultado seria imprimir o conteúdo do arquivo, caso ouver problema, é para informar uma mensagem... mas estou com problemas ao verificar isso com expressão regular, alguém pode me ajudar?
o código do que eu fiz até agora é o seguinte:
public static boolean identificador(String texto) {
Pattern valida = Pattern.compile("^[a-zA-Z]+[a-zA-Z0-9]*");
Matcher retorno = valida.matcher(texto);
return retorno.matches();
}
String token = "";
public void D() {
Le_Token();
if (token == "class") {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
if (identificador(token)) {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
if (token == "{") {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
C();
if (token == "}^") {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
}
public void C() {
Le_Token();
if (token == "int" || token == "string" || token == "char") {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
if (identificador(token)) {
System.out.println(token);
Le_Token();
} else {
Mostra_Erro(token);
}
}
public void Le_Token() {
File arquivo = new File("C:/Users/Luiz/Documents/NetBeansProjects/Classe.txt");
FileReader conteudo = null;
try {
conteudo = new FileReader(arquivo);
} catch (FileNotFoundException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
int indice = 0;
int ln = 1, cl = 1, ct = 0, i = 0;
char c = ' ';
while (indice != -1) {
try {
indice = conteudo.read();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
c = (char) indice;
if (c != (' ') && c != ('\n') && c != ('\r') && c != ('"') //if (c != (' ') && c != (';') && c != ('\n') && c != ('\r') && c != ('"')
&& c != ('(') && c != (')') && c != ('[') && c != (']') && c != ('\t')) { //&& c != ('(') && c != (')') && c != ('[') && c != (']') && c != ('\t')) {
token = token + c;
} else {
System.out.println(token);
cl = ct + 1;
if (c == ('\n')) {
cl = 1;
ln = ln + 1;
}
token = "";
}
ct++;
}
}
void Mostra_Erro(String onde) {
System.out.println("Erro em " + onde);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
D();
}