Changeset 11732 for branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization/ExpressionInterpreter.cs
- Timestamp:
- 01/07/15 09:21:46 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization/ExpressionInterpreter.cs
r11727 r11732 54 54 var r = 0.0; 55 55 r = Term(d); 56 while (CurSy() == '+' || CurSy() == '-' || CurSy() == '^') { 57 if (CurSy() == '+') { 56 var curSy = CurSy(); 57 while (curSy == '+' || curSy == '-' || curSy == '^') { 58 if (curSy == '+') { 58 59 NewSy(); 59 60 r += Expr(d); 60 } else if ( CurSy()== '-') {61 } else if (curSy == '-') { 61 62 NewSy(); 62 63 r -= Expr(d); 63 } else if (CurSy() == '^'){64 } else { 64 65 NewSy(); 65 66 var e = Expr(d); 66 67 r = Not(r) * e + r * Not(e); // xor = (!x AND y) OR (x AND !y) 67 68 } 69 curSy = CurSy(); 68 70 } 69 71 return r; … … 73 75 var r = 0.0; 74 76 r = Fact(d); 75 while (CurSy() == '*' || CurSy() == '/') { 76 if (CurSy() == '*') { 77 var curSy = CurSy(); 78 while (curSy == '*' || curSy == '/') { 79 if (curSy == '*') { 77 80 NewSy(); 78 81 r *= Term(d); 79 } else if (CurSy() == '/'){82 } else { 80 83 NewSy(); 81 84 r /= Term(d); 82 85 } 86 curSy = CurSy(); 83 87 } 84 88 return r; … … 87 91 private double Fact(double[] d) { 88 92 double r = 0.0; 89 if (CurSy() == '!') { 93 var curSy = CurSy(); 94 if (curSy == '!') { 90 95 NewSy(); 91 96 r = Not(Expr(d)); 92 } else if ( CurSy()== '(') {97 } else if (curSy == '(') { 93 98 NewSy(); 94 99 r = Expr(d); 95 100 if (CurSy() != ')') throw new ArgumentException(); 96 101 NewSy(); 97 } else if (CurSy() >= 'a' && CurSy() <= 'z') { 98 int o = Convert.ToByte(CurSy()) - Convert.ToByte('a'); 102 } else /* if (curSy >= 'a' && curSy <= 'z') */ { 103 int o = (byte)curSy - (byte)'a'; 104 //int o = Convert.ToByte(CurSy()) - Convert.ToByte('a'); 99 105 if (o < 0 || o >= d.Length) throw new ArgumentException(); 100 106 r = d[o]; 101 107 NewSy(); 102 } else throw new ArgumentException(); 108 } 109 //} else throw new ArgumentException(); 103 110 return r; 104 111 }
Note: See TracChangeset
for help on using the changeset viewer.