Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CharExpressions.cs @ 14952

Last change on this file since 14952 was 14952, checked in by pkimmesw, 7 years ago

#2665 Added IsNoop to Expression, Made Expressions storable, Fixed Debugger, Fixed and improved problem data and result visualisation, Added custom ErcOption view, Added problem difficulty to problem data name

File size: 4.0 KB
Line 
1namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
2  using System;
3  using Attributes;
4  using Interpreter;
5  using Persistence.Default.CompositeSerializers.Storable;
6  using Stack;
7
8  [PushExpression(StackTypes.Char, "CHAR.ISWHITESPACE", StackTypes.Boolean)]
9  [StorableClass]
10  public class CharIsWhitespaceExpression : StatelessExpression {
11    public CharIsWhitespaceExpression() { }
12    [StorableConstructor]
13    public CharIsWhitespaceExpression(bool deserializing) : base(deserializing) { }
14
15    public override bool IsNoop(IInternalPushInterpreter interpreter) {
16      return interpreter.CharStack.IsEmpty;
17    }
18
19    public override void Eval(IInternalPushInterpreter interpreter) {
20      var c = interpreter.CharStack.Pop();
21      interpreter.BooleanStack.Push(char.IsWhiteSpace(c));
22    }
23  }
24
25  [PushExpression(StackTypes.Char, "CHAR.ISLETTER", StackTypes.Boolean)]
26  [StorableClass]
27  public class CharIsLetterExpression : StatelessExpression {
28    public CharIsLetterExpression() { }
29    [StorableConstructor]
30    public CharIsLetterExpression(bool deserializing) : base(deserializing) { }
31
32    public override bool IsNoop(IInternalPushInterpreter interpreter) {
33      return interpreter.CharStack.IsEmpty;
34    }
35
36    public override void Eval(IInternalPushInterpreter interpreter) {
37      var c = interpreter.CharStack.Pop();
38      interpreter.BooleanStack.Push(char.IsLetter(c));
39    }
40  }
41
42  [PushExpression(StackTypes.Char, "CHAR.ISDIGIT", StackTypes.Boolean)]
43  [StorableClass]
44  public class CharIsDigitExpression : StatelessExpression {
45    public CharIsDigitExpression() { }
46    [StorableConstructor]
47    public CharIsDigitExpression(bool deserializing) : base(deserializing) { }
48
49    public override bool IsNoop(IInternalPushInterpreter interpreter) {
50      return interpreter.CharStack.IsEmpty;
51    }
52
53    public override void Eval(IInternalPushInterpreter interpreter) {
54      var c = interpreter.CharStack.Pop();
55      interpreter.BooleanStack.Push(char.IsDigit(c));
56    }
57  }
58
59  [PushExpression(StackTypes.Char, "CHAR.FROMINTEGER", StackTypes.Integer)]
60  [StorableClass]
61  public class CharFromIntegerExpression : StatelessExpression {
62    public CharFromIntegerExpression() { }
63    [StorableConstructor]
64    public CharFromIntegerExpression(bool deserializing) : base(deserializing) { }
65
66    public override bool IsNoop(IInternalPushInterpreter interpreter) {
67      return interpreter.IntegerStack.IsEmpty;
68    }
69
70    public override void Eval(IInternalPushInterpreter interpreter) {
71      var value = (int)Math.Abs(interpreter.IntegerStack.Pop() % 128);
72      var c = Convert.ToChar(value);
73
74      interpreter.CharStack.Push(c);
75    }
76  }
77
78  [PushExpression(StackTypes.Char, "CHAR.FROMFLOAT", StackTypes.Float)]
79  [StorableClass]
80  public class CharFromFloatExpression : StatelessExpression {
81    public CharFromFloatExpression() { }
82    [StorableConstructor]
83    public CharFromFloatExpression(bool deserializing) : base(deserializing) { }
84
85    public override bool IsNoop(IInternalPushInterpreter interpreter) {
86      return interpreter.FloatStack.IsEmpty;
87    }
88
89    public override void Eval(IInternalPushInterpreter interpreter) {
90      var value = (int)Math.Abs(interpreter.FloatStack.Pop() % 128);
91      var c = Convert.ToChar(value);
92
93      interpreter.CharStack.Push(c);
94    }
95  }
96
97  [PushExpression(StackTypes.Char, "CHAR.ALLFROMSTRING", StackTypes.String)]
98  [StorableClass]
99  public class CharAllFromStringExpression : StatelessExpression {
100    public CharAllFromStringExpression() { }
101    [StorableConstructor]
102    public CharAllFromStringExpression(bool deserializing) : base(deserializing) { }
103
104    public override bool IsNoop(IInternalPushInterpreter interpreter) {
105      return interpreter.StringStack.IsEmpty;
106    }
107
108    public override void Eval(IInternalPushInterpreter interpreter) {
109      var chars = interpreter.StringStack.Pop().ToCharArray();
110      interpreter.CharStack.Push(chars);
111    }
112  }
113
114}
Note: See TracBrowser for help on using the repository browser.