- Timestamp:
- 10/16/13 15:47:25 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Grammar.cs
r10028 r10043 20 20 #endregion 21 21 22 using System.Linq;23 22 using HeuristicLab.Common; 24 23 using HeuristicLab.Core; … … 34 33 private const string ControlStatementsName = "Control Statements"; 35 34 private const string RobocodeFunctionsName = "Robocode Functions"; 35 private const string RobocodeActionsName = "Robocode Actions"; 36 36 private const string RelationalOperatorsName = "Relational Operators"; 37 37 private const string LogicalOperators = "Logical Operators"; … … 94 94 var getY = new GetY(); 95 95 96 //var setAdjustGunForRobotTurn = new SetAdjustGunForRobotTurn();97 //var setAdjustRadarForGunTurn = new SetAdjustRadarForGunTurn();98 //var setAdjustRadarForRobotTurn = new SetAdjustRadarForRobotTurn();99 //var independent = new Independent();100 101 96 var turnLeft = new TurnLeft(); 102 97 var turnRight = new TurnRight(); … … 124 119 var actionSymbols = new ISymbol[] { 125 120 ahead, back, fire, turnGunLeft, turnGunRight, turnLeft, turnRadarLeft, turnRadarRight, turnRight 126 //setAdjustGunForRobotTurn, setAdjustRadarForGunTurn, setAdjustRadarForRobotTurn,127 121 }; 128 122 var functionSymbols = new ISymbol[] { … … 130 124 }; 131 125 132 var events = new GroupSymbol(EventsName, new ISymbol[] { onScannedRobot, onBulletHit, onBulletMissed, onHitByBullet, onHitRobot, onHitWall });126 var events = new GroupSymbol(EventsName, new ISymbol[] { run, onScannedRobot, onBulletHit, onBulletMissed, onHitByBullet, onHitRobot, onHitWall }); 133 127 var controlStatements = new GroupSymbol(ControlStatementsName, controlSymbols); 134 128 var expressions = new GroupSymbol(ExpressionsName, new ISymbol[] { logicalExpr, numericalExpr }); 135 var robocodeFunctions = new GroupSymbol(RobocodeFunctionsName, actionSymbols.Concat(functionSymbols)); 129 var robocodeFunctions = new GroupSymbol(RobocodeFunctionsName, functionSymbols); 130 var robocodeActions = new GroupSymbol(RobocodeActionsName, actionSymbols); 136 131 var relationalOperators = new GroupSymbol(RelationalOperatorsName, new ISymbol[] { equal, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual }); 137 132 var logicalOperators = new GroupSymbol(LogicalOperators, new ISymbol[] { conjunction, disjunction, negation }); … … 141 136 #region Adding Symbols 142 137 AddSymbol(tank); 143 AddSymbol(run);144 138 AddSymbol(stat); 145 139 AddSymbol(block); … … 151 145 AddSymbol(controlStatements); 152 146 AddSymbol(robocodeFunctions); 147 AddSymbol(robocodeActions); 153 148 AddSymbol(relationalOperators); 154 149 AddSymbol(logicalOperators); … … 171 166 AddAllowedChildSymbol(tank, onHitWall, 6); 172 167 173 // Run 174 AddAllowedChildSymbol(run, stat); 175 176 // Event 177 foreach (var s in events.Symbols) 178 AddAllowedChildSymbol(s, stat); 168 // Events 169 AddAllowedChildSymbol(events, stat); 179 170 180 171 // Block … … 184 175 AddAllowedChildSymbol(stat, stat); 185 176 AddAllowedChildSymbol(stat, block); 186 foreach (var s in controlSymbols) 187 AddAllowedChildSymbol(stat, s); 188 foreach (var s in robocodeFunctions.Symbols) 189 AddAllowedChildSymbol(stat, s); 177 AddAllowedChildSymbol(stat, controlStatements); 178 AddAllowedChildSymbol(stat, robocodeFunctions); 179 AddAllowedChildSymbol(stat, robocodeActions); 190 180 AddAllowedChildSymbol(stat, emptyEvent); 191 181 AddAllowedChildSymbol(stat, doNothing); … … 207 197 208 198 // Numerical Expressions 209 foreach (var s in functionSymbols.Concat(new[] { number })) 210 AddAllowedChildSymbol(numericalExpr, s); 211 foreach (var s in numericalOperators.Symbols) { 212 AddAllowedChildSymbol(numericalExpr, s); 213 foreach (var ne in functionSymbols.Concat(new[] { number })) 214 AddAllowedChildSymbol(s, ne); 215 foreach (var no in numericalOperators.Symbols) { 216 AddAllowedChildSymbol(s, no); 217 } 218 } 199 AddAllowedChildSymbol(numericalExpr, number); 200 AddAllowedChildSymbol(numericalExpr, robocodeFunctions); 201 AddAllowedChildSymbol(numericalExpr, numericalOperators); 202 AddAllowedChildSymbol(numericalOperators, number); 203 AddAllowedChildSymbol(numericalOperators, robocodeFunctions); 204 AddAllowedChildSymbol(numericalOperators, numericalOperators); 219 205 220 206 // Logical Expressions 221 207 AddAllowedChildSymbol(logicalExpr, logicalVal); 222 foreach (var s in logicalOperators.Symbols) { 223 AddAllowedChildSymbol(logicalExpr, s); 224 AddAllowedChildSymbol(s, logicalVal); 225 foreach (var lo in logicalOperators.Symbols) 226 AddAllowedChildSymbol(s, lo); 227 foreach (var ro in relationalOperators.Symbols) 228 AddAllowedChildSymbol(s, ro); 229 } 230 foreach (var s in relationalOperators.Symbols) 231 AddAllowedChildSymbol(s, numericalExpr); 232 233 // Functions 234 foreach (var f in robocodeFunctions.Symbols) { 235 if (f is Fire) AddAllowedChildSymbol(f, shotPower); 236 else AddAllowedChildSymbol(f, numericalExpr); 208 AddAllowedChildSymbol(logicalExpr, logicalOperators); 209 AddAllowedChildSymbol(logicalOperators, logicalVal); 210 AddAllowedChildSymbol(logicalOperators, logicalOperators); 211 AddAllowedChildSymbol(logicalOperators, relationalOperators); 212 AddAllowedChildSymbol(relationalOperators, numericalExpr); 213 214 // Functions and Actions 215 AddAllowedChildSymbol(robocodeFunctions, numericalExpr); 216 foreach (var a in robocodeActions.Symbols) { 217 if (a is Fire) AddAllowedChildSymbol(a, shotPower); 218 else AddAllowedChildSymbol(a, numericalExpr); 237 219 } 238 220 #endregion
Note: See TracChangeset
for help on using the changeset viewer.