Changeset 5686 for branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
- Timestamp:
- 03/15/11 13:34:38 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
r5580 r5686 29 29 [StorableClass] 30 30 [Item("TypeCoherentExpressionGrammar", "Represents a grammar for functional expressions in which special syntactic constraints are enforced so that boolean and real-valued expressions are not mixed.")] 31 public class TypeCoherentExpressionGrammar : DefaultSymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {31 public class TypeCoherentExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar { 32 32 33 33 [StorableConstructor] … … 123 123 124 124 foreach (var unaryFun in unaryFunctionSymbols.Concat(unaryBooleanFunctionSymbols)) { 125 SetMinSubtreeCount(unaryFun, 1); 126 SetMaxSubtreeCount(unaryFun, 1); 125 SetSubtreeCount(unaryFun, 1, 1); 127 126 } 128 127 foreach (var binaryFun in binaryFunctionSymbols.Concat(binaryBooleanFunctionSymbols).Concat(relationalFunctionSymbols)) { 129 SetMinSubtreeCount(binaryFun, 2); 130 SetMaxSubtreeCount(binaryFun, 2); 128 SetSubtreeCount(binaryFun, 2, 2); 131 129 } 132 130 133 131 foreach (var terminalSymbol in terminalSymbols) { 134 SetMinSubtreeCount(terminalSymbol, 0); 135 SetMaxSubtreeCount(terminalSymbol, 0); 132 SetSubtreeCount(terminalSymbol, 0, 0); 136 133 } 137 134 138 SetMinSubtreeCount(@if, 3); 139 SetMaxSubtreeCount(@if, 3); 135 SetSubtreeCount(@if, 3, 3); 140 136 141 137 142 138 // allow only real-valued expressions as child of the start symbol 143 139 foreach (var symb in realValuedSymbols) { 144 SetAllowedChild(StartSymbol, symb, 0);140 AddAllowedChildSymbol(StartSymbol, symb); 145 141 } 146 142 147 143 foreach (var symb in unaryFunctionSymbols) { 148 144 foreach (var childSymb in realValuedSymbols) { 149 SetAllowedChild(symb, childSymb, 0);145 AddAllowedChildSymbol(symb, childSymb); 150 146 } 151 147 } … … 153 149 foreach (var symb in binaryFunctionSymbols) { 154 150 foreach (var childSymb in realValuedSymbols) { 155 SetAllowedChild(symb, childSymb, 0); 156 SetAllowedChild(symb, childSymb, 1); 151 AddAllowedChildSymbol(symb, childSymb); 157 152 } 158 153 } 159 154 160 155 foreach (var childSymb in booleanSymbols) { 161 SetAllowedChild(@if, childSymb, 0);156 AddAllowedChildSymbol(@if, childSymb, 0); 162 157 } 163 158 foreach (var childSymb in realValuedSymbols) { 164 SetAllowedChild(@if, childSymb, 1);165 SetAllowedChild(@if, childSymb, 2);159 AddAllowedChildSymbol(@if, childSymb, 1); 160 AddAllowedChildSymbol(@if, childSymb, 2); 166 161 } 167 162 168 163 foreach (var symb in relationalFunctionSymbols) { 169 164 foreach (var childSymb in realValuedSymbols) { 170 SetAllowedChild(symb, childSymb, 0); 171 SetAllowedChild(symb, childSymb, 1); 165 AddAllowedChildSymbol(symb, childSymb); 172 166 } 173 167 } 174 168 foreach (var symb in binaryBooleanFunctionSymbols) { 175 169 foreach (var childSymb in booleanSymbols) { 176 SetAllowedChild(symb, childSymb, 0); 177 SetAllowedChild(symb, childSymb, 1); 170 AddAllowedChildSymbol(symb, childSymb); 178 171 } 179 172 } 180 173 foreach (var symb in unaryBooleanFunctionSymbols) { 181 174 foreach (var childSymb in booleanSymbols) { 182 SetAllowedChild(symb, childSymb, 0);175 AddAllowedChildSymbol(symb, childSymb); 183 176 } 184 177 }
Note: See TracChangeset
for help on using the changeset viewer.