-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLexicographicAnalyzer.java
More file actions
92 lines (71 loc) · 2.43 KB
/
Copy pathLexicographicAnalyzer.java
File metadata and controls
92 lines (71 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.*;
/**
* Created by Paca on 3/20/14.
*/
public class LexicographicAnalyzer {
private FileReader textoToAnalize;
public LexicographicAnalyzer(String direccion) {
try{
textoToAnalize = new FileReader(direccion);
}catch (FileNotFoundException e){
}
}
public boolean isCorrect(){
try{
BufferedReader bufferTextToAnalize = new BufferedReader(textoToAnalize);
String bufferText = bufferTextToAnalize.readLine();
String completeText = null;
while (bufferText != null){
if(completeText != null){
completeText = completeText + bufferText;
}else {
completeText = bufferText;
}
bufferText = bufferTextToAnalize.readLine();
}
return checkText(completeText);
}catch (IOException e){
}
return false;
}
private boolean checkText(String text){
Pila keyStack = new PilaE();
Pila bracketStack = new PilaE();
Pila parenthesisStack = new PilaE();
int counter = 0;
while (counter < text.length()){
if (text.charAt(counter) == '{' || text.charAt(counter) == '}'){
keyStack.apilar(text.charAt(counter));
}
if (text.charAt(counter) == '[' || text.charAt(counter) == ']'){
bracketStack.apilar(text.charAt(counter));
}
if (text.charAt(counter) == '(' || text.charAt(counter) == ')'){
parenthesisStack.apilar(text.charAt(counter));
}
counter++;
}
while (keyStack.verTope() != null){
Object lastKey = keyStack.verTope();
keyStack.desapilar();
if (lastKey == keyStack.verTope()){
return false;
}
}
while (bracketStack.verTope() != null){
Object lastBracket = bracketStack.verTope();
bracketStack.desapilar();
if (lastBracket == bracketStack.verTope()){
return false;
}
}
while (parenthesisStack.verTope() != null){
Object lastParenthesis = parenthesisStack.verTope();
parenthesisStack.desapilar();
if (lastParenthesis == bracketStack.verTope()){
return false;
}
}
return true;
}
}