Skip to content

Commit 30e009c

Browse files
committed
String variables bug fix
1 parent c00543b commit 30e009c

File tree

18 files changed

+113
-57
lines changed

18 files changed

+113
-57
lines changed

src/main/java/GUI/MainFrame.form

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@
248248
</Component>
249249
<Component class="GUI.CustomComponents.Button" name="btnVars">
250250
<Properties>
251+
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
252+
<Color blue="3b" green="3b" red="f8" type="rgb"/>
253+
</Property>
251254
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
252255
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
253256
<EmptyBorder bottom="5" left="10" right="10" top="5"/>
@@ -290,16 +293,16 @@
290293
</Property>
291294
<Property name="text" type="java.lang.String" value="IF"/>
292295
<Property name="borderColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
293-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
296+
<Color blue="4f" green="80" red="15" type="rgb"/>
294297
</Property>
295298
<Property name="color" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
296-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
299+
<Color blue="4f" green="80" red="15" type="rgb"/>
297300
</Property>
298301
<Property name="colorClick" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
299-
<Color blue="14" green="14" red="a0" type="rgb"/>
302+
<Color blue="4f" green="6f" red="15" type="rgb"/>
300303
</Property>
301304
<Property name="colorOver" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
302-
<Color blue="60" green="60" red="ff" type="rgb"/>
305+
<Color blue="4e" green="8b" red="e" type="rgb"/>
303306
</Property>
304307
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
305308
<Font name="Roboto" size="16" style="1"/>
@@ -322,16 +325,16 @@
322325
</Property>
323326
<Property name="text" type="java.lang.String" value="FOR"/>
324327
<Property name="borderColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
325-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
328+
<Color blue="4f" green="80" red="15" type="rgb"/>
326329
</Property>
327330
<Property name="color" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
328-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
331+
<Color blue="4f" green="80" red="15" type="rgb"/>
329332
</Property>
330333
<Property name="colorClick" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
331-
<Color blue="14" green="14" red="a0" type="rgb"/>
334+
<Color blue="4f" green="6f" red="15" type="rgb"/>
332335
</Property>
333336
<Property name="colorOver" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
334-
<Color blue="60" green="60" red="ff" type="rgb"/>
337+
<Color blue="4e" green="8b" red="e" type="rgb"/>
335338
</Property>
336339
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
337340
<Font name="Roboto" size="16" style="1"/>
@@ -354,16 +357,16 @@
354357
</Property>
355358
<Property name="text" type="java.lang.String" value="WHILE"/>
356359
<Property name="borderColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
357-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
360+
<Color blue="4f" green="80" red="15" type="rgb"/>
358361
</Property>
359362
<Property name="color" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
360-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
363+
<Color blue="4f" green="80" red="15" type="rgb"/>
361364
</Property>
362365
<Property name="colorClick" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
363-
<Color blue="14" green="14" red="a0" type="rgb"/>
366+
<Color blue="4f" green="6f" red="15" type="rgb"/>
364367
</Property>
365368
<Property name="colorOver" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
366-
<Color blue="60" green="60" red="ff" type="rgb"/>
369+
<Color blue="4e" green="8b" red="e" type="rgb"/>
367370
</Property>
368371
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
369372
<Font name="Roboto" size="16" style="1"/>
@@ -386,16 +389,16 @@
386389
</Property>
387390
<Property name="text" type="java.lang.String" value="SWITCH"/>
388391
<Property name="borderColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
389-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
392+
<Color blue="4f" green="80" red="15" type="rgb"/>
390393
</Property>
391394
<Property name="color" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
392-
<Color blue="3b" green="3b" red="f8" type="rgb"/>
395+
<Color blue="4f" green="80" red="15" type="rgb"/>
393396
</Property>
394397
<Property name="colorClick" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
395-
<Color blue="14" green="14" red="a0" type="rgb"/>
398+
<Color blue="4f" green="6f" red="15" type="rgb"/>
396399
</Property>
397400
<Property name="colorOver" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
398-
<Color blue="60" green="60" red="ff" type="rgb"/>
401+
<Color blue="4e" green="8b" red="e" type="rgb"/>
399402
</Property>
400403
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
401404
<Font name="Roboto" size="16" style="1"/>

src/main/java/GUI/MainFrame.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
175175
});
176176
jPanel1.add(btnCompleto);
177177

178+
btnVars.setBackground(new java.awt.Color(248, 59, 59));
178179
btnVars.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 10, 5, 10));
179180
btnVars.setForeground(new java.awt.Color(255, 255, 255));
180181
btnVars.setText("Variables");
@@ -194,10 +195,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
194195
btnIF.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 10, 5, 10));
195196
btnIF.setForeground(new java.awt.Color(255, 255, 255));
196197
btnIF.setText("IF");
197-
btnIF.setBorderColor(new java.awt.Color(248, 59, 59));
198-
btnIF.setColor(new java.awt.Color(248, 59, 59));
199-
btnIF.setColorClick(new java.awt.Color(160, 20, 20));
200-
btnIF.setColorOver(new java.awt.Color(255, 96, 96));
198+
btnIF.setBorderColor(new java.awt.Color(21, 128, 79));
199+
btnIF.setColor(new java.awt.Color(21, 128, 79));
200+
btnIF.setColorClick(new java.awt.Color(21, 111, 79));
201+
btnIF.setColorOver(new java.awt.Color(14, 139, 78));
201202
btnIF.setFont(new java.awt.Font("Roboto", 1, 16)); // NOI18N
202203
btnIF.setRadius(15);
203204
btnIF.addActionListener(new java.awt.event.ActionListener() {
@@ -210,10 +211,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
210211
btnFOR.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 10, 5, 10));
211212
btnFOR.setForeground(new java.awt.Color(255, 255, 255));
212213
btnFOR.setText("FOR");
213-
btnFOR.setBorderColor(new java.awt.Color(248, 59, 59));
214-
btnFOR.setColor(new java.awt.Color(248, 59, 59));
215-
btnFOR.setColorClick(new java.awt.Color(160, 20, 20));
216-
btnFOR.setColorOver(new java.awt.Color(255, 96, 96));
214+
btnFOR.setBorderColor(new java.awt.Color(21, 128, 79));
215+
btnFOR.setColor(new java.awt.Color(21, 128, 79));
216+
btnFOR.setColorClick(new java.awt.Color(21, 111, 79));
217+
btnFOR.setColorOver(new java.awt.Color(14, 139, 78));
217218
btnFOR.setFont(new java.awt.Font("Roboto", 1, 16)); // NOI18N
218219
btnFOR.setRadius(15);
219220
btnFOR.addActionListener(new java.awt.event.ActionListener() {
@@ -226,10 +227,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
226227
btnWHILE.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 10, 5, 10));
227228
btnWHILE.setForeground(new java.awt.Color(255, 255, 255));
228229
btnWHILE.setText("WHILE");
229-
btnWHILE.setBorderColor(new java.awt.Color(248, 59, 59));
230-
btnWHILE.setColor(new java.awt.Color(248, 59, 59));
231-
btnWHILE.setColorClick(new java.awt.Color(160, 20, 20));
232-
btnWHILE.setColorOver(new java.awt.Color(255, 96, 96));
230+
btnWHILE.setBorderColor(new java.awt.Color(21, 128, 79));
231+
btnWHILE.setColor(new java.awt.Color(21, 128, 79));
232+
btnWHILE.setColorClick(new java.awt.Color(21, 111, 79));
233+
btnWHILE.setColorOver(new java.awt.Color(14, 139, 78));
233234
btnWHILE.setFont(new java.awt.Font("Roboto", 1, 16)); // NOI18N
234235
btnWHILE.setRadius(15);
235236
btnWHILE.addActionListener(new java.awt.event.ActionListener() {
@@ -242,10 +243,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
242243
btnSWITCH.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 10, 5, 10));
243244
btnSWITCH.setForeground(new java.awt.Color(255, 255, 255));
244245
btnSWITCH.setText("SWITCH");
245-
btnSWITCH.setBorderColor(new java.awt.Color(248, 59, 59));
246-
btnSWITCH.setColor(new java.awt.Color(248, 59, 59));
247-
btnSWITCH.setColorClick(new java.awt.Color(160, 20, 20));
248-
btnSWITCH.setColorOver(new java.awt.Color(255, 96, 96));
246+
btnSWITCH.setBorderColor(new java.awt.Color(21, 128, 79));
247+
btnSWITCH.setColor(new java.awt.Color(21, 128, 79));
248+
btnSWITCH.setColorClick(new java.awt.Color(21, 111, 79));
249+
btnSWITCH.setColorOver(new java.awt.Color(14, 139, 78));
249250
btnSWITCH.setFont(new java.awt.Font("Roboto", 1, 16)); // NOI18N
250251
btnSWITCH.setRadius(15);
251252
btnSWITCH.addActionListener(new java.awt.event.ActionListener() {

src/main/java/ParserOperations/Assignments.java

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ public boolean isAssignExpression() {
3333
if (tool.verifyToken(TokenType.PUNTO_Y_COMA)) {
3434
tool.incrementIndex();
3535
}
36-
}
37-
else {
36+
} else {
3837
if (tool.isValueToken(tool.getCurrentToken())) {
3938
flag = true;
4039
tool.incrementIndex();
@@ -121,14 +120,21 @@ public boolean isFactor() {
121120

122121
public boolean isExpression() {
123122
boolean flag = false;
124-
// Verificar el primer término
125-
if (isTerm()) {
123+
// Verificar si es concatenación de cadenas primero
124+
if (tool.isStringIdentifier()) {
125+
if (tool.verifyToken(TokenType.CADENA) || tool.verifyToken(TokenType.IDENTIFICADOR)) {
126+
if (isStringConcatenation()) {
127+
flag = true;
128+
}
129+
}
130+
}
131+
// Verificar el primer término en caso de ser aritmético
132+
else if (isTerm()) {
126133
flag = true;
127-
// Verificar operadores de suma o resta
134+
// Verificar operadores de suma o resta para términos aritméticos
128135
while (tool.verifyToken(TokenType.SUMA) || tool.verifyToken(TokenType.RESTA)) {
129-
tool.incrementIndex(); // Avanzar el operador
136+
tool.incrementIndex();
130137
if (!isTerm()) {
131-
//tool.showError("[EXP] Se esperaba un término después del operador aritmético");
132138
flag = false;
133139
break;
134140
}
@@ -137,6 +143,24 @@ public boolean isExpression() {
137143
return flag;
138144
}
139145

146+
public boolean isStringConcatenation() {
147+
boolean flag = false;
148+
if (tool.verifyToken(TokenType.CADENA) || tool.verifyToken(TokenType.IDENTIFICADOR)) {
149+
tool.incrementIndex();
150+
flag = true;
151+
while (tool.verifyToken(TokenType.SUMA)) {
152+
tool.incrementIndex();
153+
if (!(tool.verifyToken(TokenType.CADENA) || tool.verifyToken(TokenType.IDENTIFICADOR))) {
154+
tool.showError("Se esperaba cadena o identificador en concatenación");
155+
flag = false;
156+
break;
157+
}
158+
tool.incrementIndex();
159+
}
160+
}
161+
return flag;
162+
}
163+
140164
public boolean isTerm() {
141165
boolean flag = false;
142166
// Verificar el primer factor

src/main/java/ParserOperations/Parser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void statements() {
5252
tool.showError("[SEMANTICO] No se reconoce '" + tool.getCurrentToken().getLexeme() + "'");
5353
} else if (tool.getCurrentToken().getRow() != tool.getTokenList().get(tool.getTokenList().size() - 1)
5454
.getRow()) {
55-
tool.showError("Se esperaba un salto de linea " + tool.getCurrentToken().getLexeme());
55+
tool.showError("Se esperaba un salto de linea");
5656
}
5757
}
5858

@@ -66,7 +66,7 @@ public void statements() {
6666
tool.showError("[SEMANTICO] No se reconoce '" + tool.getCurrentToken().getLexeme() + "'");
6767
} else if (tool.getCurrentToken().getRow() != tool.getTokenList().get(tool.getTokenList().size() - 1)
6868
.getRow()) {
69-
tool.showError("Se esperaba un salto de linea " + tool.getCurrentToken().getLexeme());
69+
tool.showError("Se esperaba un salto de linea");
7070
}
7171
}
7272

src/main/java/ParserOperations/Utilities.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,23 @@ protected boolean isRelationalOperator(Token tkn) {
6161
|| tkn.getToken().equals(TokenType.DIFERENCIA);
6262
}
6363

64+
protected static boolean isStringIdentifier() {
65+
boolean flag = false;
66+
int row = tokenList.get(index).getRow();
67+
ArrayList<Token> rowFound = new ArrayList<>();
68+
for (Token token : tokenList) {
69+
if (token.getRow() == row) {
70+
rowFound.add(token);
71+
}
72+
}
73+
for (Token token : rowFound) {
74+
if (token.getToken().equals(TokenType.CADENA)) {
75+
flag = true;
76+
}
77+
}
78+
return flag;
79+
}
80+
6481
protected static int getCurrentIndent() {
6582
return currentIndent;
6683
}

src/main/java/SemanticOperations/VariableAssignment.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ public void analizeSemantic() {
4848
}
4949
}
5050
}
51+
52+
// Limpiar valores bug de la fila 0
53+
ArrayList<Variable> aux = new ArrayList<>(variables);
54+
for (Variable var : aux) {
55+
if (var.getRow() == 0) {
56+
variables.remove(var);
57+
}
58+
}
5159
}
5260

5361
public void checkForIdentifier() {
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)