@@ -18,8 +18,76 @@ public boolean isAssignment() {
1818 }
1919
2020 public boolean isArithmeticOperation () {
21+ if (isExpression () || isTerm ()) {
22+ return true ;
23+ } else {
24+ return false ;
25+ }
26+ }
27+
28+ private boolean isExpression () {
2129 boolean flag = false ;
22- // TO-DO
30+ if (isTerm ()) {
31+ tool .incrementIndex ();
32+ if (tool .verifyToken (TokenType .SUMA ) || tool .verifyToken (TokenType .RESTA )) {
33+ tool .incrementIndex ();
34+ if (isExpression ()) {
35+ flag = true ;
36+ } else if (tool .getIndex () < tool .getTokenList ().size () - 1
37+ && tool .getTokenList ().get (tool .getIndex () + 1 ).getRow () != tool .getCurrentToken ().getRow ()) {
38+ flag = true ;
39+ } else {
40+ tool .showError ("Se esperaba una expresión" );
41+ }
42+ } else {
43+ tool .showError ("Se esperaba operador (+, -)" );
44+ }
45+ } else {
46+ tool .showError ("Se esperaba termino" );
47+ }
48+ return flag ;
49+ }
50+
51+ private boolean isTerm () {
52+ boolean flag = false ;
53+ if (isFactor ()) {
54+ tool .incrementIndex ();
55+ if (tool .verifyToken (TokenType .MULTIPLICACION ) || tool .verifyToken (TokenType .DIVISION )) {
56+ tool .incrementIndex ();
57+ if (isTerm ()) {
58+ flag = true ;
59+ } else if (tool .getIndex () < tool .getTokenList ().size () - 1
60+ && tool .getTokenList ().get (tool .getIndex () + 1 ).getRow () != tool .getCurrentToken ().getRow ()) {
61+ flag = true ;
62+ } else {
63+ tool .showError ("Se esperaba un termino" );
64+ }
65+ } else {
66+ tool .showError ("Se esperaba operador (*, /)" );
67+ }
68+ }
69+ return flag ;
70+ }
71+
72+ private boolean isFactor () {
73+ boolean flag = false ;
74+ if (tool .verifyToken (TokenType .ENTERO ) || tool .verifyToken (TokenType .DECIMAL )) {
75+ flag = true ;
76+ } else if (tool .verifyToken (TokenType .IDENTIFICADOR )) {
77+ flag = true ;
78+ } else if (tool .verifyToken (TokenType .PARENTESIS_APERTURA )) {
79+ tool .incrementIndex ();
80+ if (isExpression ()) {
81+ if (tool .verifyToken (TokenType .PARENTESIS_CIERRE )) {
82+ tool .incrementIndex ();
83+ flag = true ;
84+ } else {
85+ tool .showError ("Se esperaba ')" );
86+ }
87+ }
88+ } else {
89+ tool .showError ("Se esperaba un factor" );
90+ }
2391 return flag ;
2492 }
2593
@@ -33,7 +101,6 @@ public boolean isValueAssign() {
33101 flag = true ;
34102 System .out .println ("VARIABLE DECLARADA" );
35103 tool .incrementIndex ();
36-
37104 } else {
38105 tool .showError ("Se esperaba valor" );
39106 }
@@ -43,7 +110,6 @@ public boolean isValueAssign() {
43110 System .out .println ("VARIABLE AUGASSIGN" );
44111 flag = true ;
45112 tool .incrementIndex ();
46-
47113 } else {
48114 tool .showError ("Se esperaba valor" );
49115 }
@@ -79,7 +145,6 @@ public boolean isDataCollection() {
79145 tool .showError ("Se esperaba ')'" );
80146 }
81147 }
82-
83148 } else {
84149 tool .showError ("Se esperaba valor" );
85150 }
@@ -102,7 +167,6 @@ public boolean isDataCollection() {
102167 tool .showError ("Se esperaba '}'" );
103168 }
104169 }
105-
106170 } else {
107171 tool .showError ("Se esperaba valor" );
108172 }
0 commit comments