Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/30/11 16:59:50 (14 years ago)
Author:
mkommend
Message:

#1479: Added updated version of grammar editor.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GP.Grammar.Editor/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs

    r5809 r6337  
    2121
    2222using System.Collections.Generic;
    23 using System.Linq;
    2423using HeuristicLab.Common;
    2524using HeuristicLab.Core;
     
    9493       *
    9594       * BinaryOperator =
    96        *   "+" | "-" | "*" | "/" | "Power"
     95       *   "+" | "-" | "*" | "/" | "Power" | "Root"
    9796       *
    9897       * UnaryOperator =
     
    107106       */
    108107
     108      var arithmeticSymbols = new GroupSymbol("Arithmetic Functions", new List<ISymbol>() { add, sub, mul, div });
     109      var trigonometricSymbols = new GroupSymbol("Trigonometric Functions", new List<ISymbol>() { sin, cos, tan });
     110      var powerSymbols = new GroupSymbol("Power Functions", new List<ISymbol> { pow, root });
     111      var exponentialAndLogarithmicSymbols = new GroupSymbol("Exponential and Logarithmic Functions", new List<ISymbol> { exp, log });
     112      var terminalSymbols = new GroupSymbol("Terminals", new List<ISymbol> { constant, variableSymbol });
     113      var realValuedSymbols = new GroupSymbol("Real valued Symbols",
     114        new List<ISymbol>() { arithmeticSymbols, trigonometricSymbols, powerSymbols, exponentialAndLogarithmicSymbols, terminalSymbols });
     115
     116      AddSymbol(realValuedSymbols);
     117
     118      SetSubtreeCount(arithmeticSymbols, 2, 2);
     119      SetSubtreeCount(trigonometricSymbols, 1, 1);
     120      SetSubtreeCount(powerSymbols, 2, 2);
     121      SetSubtreeCount(exponentialAndLogarithmicSymbols, 1, 1);
     122      SetSubtreeCount(terminalSymbols, 0, 0);
     123
     124      AddAllowedChildSymbol(StartSymbol, realValuedSymbols);
     125      AddAllowedChildSymbol(DefunSymbol, realValuedSymbols);
     126      AddAllowedChildSymbol(realValuedSymbols, realValuedSymbols);
     127
     128      //var unaryBooleanFunctionSymbols = new List<Symbol>() { not };
     129      //var binaryBooleanFunctionSymbols = new List<Symbol>() { or, and };
     130      //var relationalFunctionSymbols = new List<Symbol>() { gt, lt };
     131      //var booleanSymbols = unaryBooleanFunctionSymbols.Concat(binaryBooleanFunctionSymbols).Concat(relationalFunctionSymbols);
     132
    109133      var allSymbols = new List<Symbol>() { add, sub, mul, div, mean, sin, cos, tan, log, pow, root, exp, @if, gt, lt, and, or, not, timeLag, integral, derivative, constant, variableSymbol, laggedVariable, variableCondition };
    110134
     
    112136      var binaryFunctionSymbols = new List<Symbol>() { add, sub, mul, div, mean, pow, root, variableCondition };
    113137
    114       var unaryBooleanFunctionSymbols = new List<Symbol>() { not };
    115       var binaryBooleanFunctionSymbols = new List<Symbol>() { or, and };
    116       var relationalFunctionSymbols = new List<Symbol>() { gt, lt };
    117       var terminalSymbols = new List<Symbol>() { variableSymbol, constant, laggedVariable };
    118       var realValuedSymbols = unaryFunctionSymbols.Concat(binaryFunctionSymbols).Concat(terminalSymbols).Concat(new List<Symbol>() { @if });
    119       var booleanSymbols = unaryBooleanFunctionSymbols.Concat(binaryBooleanFunctionSymbols).Concat(relationalFunctionSymbols);
    120 
    121       foreach (var symb in allSymbols)
    122         AddSymbol(symb);
    123 
    124       foreach (var unaryFun in unaryFunctionSymbols.Concat(unaryBooleanFunctionSymbols)) {
    125         SetSubtreeCount(unaryFun, 1, 1);
    126       }
    127       foreach (var binaryFun in binaryFunctionSymbols.Concat(binaryBooleanFunctionSymbols).Concat(relationalFunctionSymbols)) {
    128         SetSubtreeCount(binaryFun, 2, 2);
    129       }
    130 
    131       foreach (var terminalSymbol in terminalSymbols) {
    132         SetSubtreeCount(terminalSymbol, 0, 0);
    133       }
    134 
    135       SetSubtreeCount(@if, 3, 3);
     138
     139
     140      //var terminalSymbols = new List<Symbol>() { variableSymbol, constant, laggedVariable };
     141      //var realValuedSymbols = unaryFunctionSymbols.Concat(binaryFunctionSymbols).Concat(terminalSymbols).Concat(new List<Symbol>() { @if });
     142
     143
     144      //foreach (var symb in allSymbols)
     145      //  AddSymbol(symb);
     146
     147      //foreach (var unaryFun in unaryFunctionSymbols.Concat(unaryBooleanFunctionSymbols)) {
     148      //  SetSubtreeCount(unaryFun, 1, 1);
     149      //}
     150      //foreach (var binaryFun in binaryFunctionSymbols.Concat(binaryBooleanFunctionSymbols).Concat(relationalFunctionSymbols)) {
     151      //  SetSubtreeCount(binaryFun, 2, 2);
     152      //}
     153
     154      //foreach (var terminalSymbol in terminalSymbols) {
     155      //  SetSubtreeCount(terminalSymbol, 0, 0);
     156      //}
     157
     158      //SetSubtreeCount(@if, 3, 3);
    136159
    137160
    138161      // allow only real-valued expressions as child of the start symbol
    139       foreach (var symb in realValuedSymbols) {
    140         AddAllowedChildSymbol(StartSymbol, symb);
    141         AddAllowedChildSymbol(DefunSymbol, symb);
    142       }
    143 
    144       foreach (var symb in unaryFunctionSymbols) {
    145         foreach (var childSymb in realValuedSymbols) {
    146           AddAllowedChildSymbol(symb, childSymb);
    147         }
    148       }
    149 
    150       foreach (var symb in binaryFunctionSymbols) {
    151         foreach (var childSymb in realValuedSymbols) {
    152           AddAllowedChildSymbol(symb, childSymb);
    153         }
    154       }
    155 
    156       foreach (var childSymb in booleanSymbols) {
    157         AddAllowedChildSymbol(@if, childSymb, 0);
    158       }
    159       foreach (var childSymb in realValuedSymbols) {
    160         AddAllowedChildSymbol(@if, childSymb, 1);
    161         AddAllowedChildSymbol(@if, childSymb, 2);
    162       }
    163 
    164       foreach (var symb in relationalFunctionSymbols) {
    165         foreach (var childSymb in realValuedSymbols) {
    166           AddAllowedChildSymbol(symb, childSymb);
    167         }
    168       }
    169       foreach (var symb in binaryBooleanFunctionSymbols) {
    170         foreach (var childSymb in booleanSymbols) {
    171           AddAllowedChildSymbol(symb, childSymb);
    172         }
    173       }
    174       foreach (var symb in unaryBooleanFunctionSymbols) {
    175         foreach (var childSymb in booleanSymbols) {
    176           AddAllowedChildSymbol(symb, childSymb);
    177         }
    178       }
     162      //foreach (var symb in realValuedSymbols) {
     163      //  AddAllowedChildSymbol(StartSymbol, symb);
     164      //  AddAllowedChildSymbol(DefunSymbol, symb);
     165      //}
     166
     167      //foreach (var symb in unaryFunctionSymbols) {
     168      //  foreach (var childSymb in realValuedSymbols) {
     169      //    AddAllowedChildSymbol(symb, childSymb);
     170      //  }
     171      //}
     172
     173      //foreach (var symb in binaryFunctionSymbols) {
     174      //  foreach (var childSymb in realValuedSymbols) {
     175      //    AddAllowedChildSymbol(symb, childSymb);
     176      //  }
     177      //}
     178
     179      //foreach (var childSymb in booleanSymbols) {
     180      //  AddAllowedChildSymbol(@if, childSymb, 0);
     181      //}
     182      //foreach (var childSymb in realValuedSymbols) {
     183      //  AddAllowedChildSymbol(@if, childSymb, 1);
     184      //  AddAllowedChildSymbol(@if, childSymb, 2);
     185      //}
     186
     187      //foreach (var symb in relationalFunctionSymbols) {
     188      //  foreach (var childSymb in realValuedSymbols) {
     189      //    AddAllowedChildSymbol(symb, childSymb);
     190      //  }
     191      //}
     192      //foreach (var symb in binaryBooleanFunctionSymbols) {
     193      //  foreach (var childSymb in booleanSymbols) {
     194      //    AddAllowedChildSymbol(symb, childSymb);
     195      //  }
     196      //}
     197      //foreach (var symb in unaryBooleanFunctionSymbols) {
     198      //  foreach (var childSymb in booleanSymbols) {
     199      //    AddAllowedChildSymbol(symb, childSymb);
     200      //  }
     201      //}
    179202    }
    180203  }
Note: See TracChangeset for help on using the changeset viewer.