- Timestamp:
- 06/14/13 11:03:13 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Robocode/HeuristicLab.Problems.Robocode/Symbols/Branches/IfStatement.cs
r9565 r9630 3 3 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 4 5 namespace HeuristicLab.Problems.Robocode 6 { 7 [StorableClass] 8 public class IfStatement : CodeNode 9 { 10 public override int MinimumArity { get { return 2; } } 11 public override int MaximumArity { get { return 3; } } 5 namespace HeuristicLab.Problems.Robocode { 6 [StorableClass] 7 public class IfStatement : CodeNode { 8 public override int MinimumArity { get { return 2; } } 9 public override int MaximumArity { get { return 3; } } 12 10 13 14 11 [Storable] 12 public override string Prefix { get; set; } 15 13 16 17 14 [Storable] 15 public override string Suffix { get; set; } 18 16 19 [StorableConstructor] 20 private IfStatement(bool deserializing) : base(deserializing) { } 21 private IfStatement(IfStatement original, Cloner cloner) 22 : base(original, cloner) 23 { 24 this.Prefix = "if("; 25 this.Suffix = ")"; 26 } 17 [StorableConstructor] 18 private IfStatement(bool deserializing) : base(deserializing) { } 19 private IfStatement(IfStatement original, Cloner cloner) 20 : base(original, cloner) { 21 } 27 22 28 public IfStatement() 29 : base("IfStatement", "An IfStatement.") 30 { 31 this.Prefix = "if("; 32 this.Suffix = ")"; 33 } 23 public IfStatement() 24 : base("IfStatement", "An IfStatement.") { 25 this.Prefix = "if("; 26 this.Suffix = ")"; 27 } 34 28 35 public override IDeepCloneable Clone(Cloner cloner) 36 { 37 return new IfStatement(this, cloner); 38 } 29 public override IDeepCloneable Clone(Cloner cloner) { 30 return new IfStatement(this, cloner); 31 } 39 32 40 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) 41 { 42 string condition = "", ifTrue = "", ifElse = ""; 43 foreach (ISymbolicExpressionTreeNode c in children) 44 { 45 if(c.Symbol is LogicalExpression) 46 condition = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 47 else if(c.Symbol is Block) 48 ifTrue = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 49 else if(c.Symbol is ElseStatement || c.Symbol is DoNothing) 50 ifElse = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 51 else 52 throw new System.Exception("Unexpected Child node."); 53 } 54 return this.Prefix + " " + condition + " " + this.Suffix + 55 "\r\n" + ifTrue + "\r\n" + ifElse + "\r\n"; 56 } 33 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) { 34 string condition = "", ifTrue = "", ifElse = ""; 35 foreach (ISymbolicExpressionTreeNode c in children) { 36 if (c.Symbol is LogicalExpression) 37 condition = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 38 else if (c.Symbol is Block) 39 ifTrue = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 40 else if (c.Symbol is ElseStatement || c.Symbol is DoNothing) 41 ifElse = ((CodeNode)c.Symbol).Interpret(c, c.Subtrees); 42 else 43 throw new System.Exception("Unexpected Child node."); 44 } 45 return this.Prefix + " " + condition + " " + this.Suffix + 46 "\r\n" + ifTrue + "\r\n" + ifElse + "\r\n"; 57 47 } 48 } 58 49 }
Note: See TracChangeset
for help on using the changeset viewer.