Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/08/16 12:04:25 (8 years ago)
Author:
pkimmesw
Message:

#2665 Set .NET version to 4.5, C# version to 5.0, Added expression templates and factory

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Parser/SymbolTable.cs

    r14323 r14328  
    11using System;
    22using System.Collections.Generic;
    3 using System.Linq;
    43
    54namespace HeuristicLab.Algorithms.PushGP
     
    109        {
    1110            #region Code
    12             { "CODE.NOOP", OpCode.CodeNoop },
    13             { "CODE.PUSH", OpCode.CodePush },
    14             { "CODE.IF", OpCode.CodeIf },
    15             { "CODE.DEFINE", OpCode.CodeDefine },
    16             { "CODE.DUP", OpCode.CodeDup },
    17             { "CODE.QUOTE", OpCode.CodeQuote },
    18             { "CODE.DO", OpCode.CodeDo },
     11            { Symbols.CodeIf, OpCode.CodeIf },
     12            { Symbols.CodeDefine, OpCode.CodeDefine },
     13            { Symbols.CodeDuplicate, OpCode.CodeDuplicate },
     14            { Symbols.CodeQuote, OpCode.CodeQuote },
     15            { Symbols.CodeDo, OpCode.CodeDo },
     16            { Symbols.CodeEquals, OpCode.CodeEquals },
     17            { Symbols.CodeAppend, OpCode.CodeAppend },
     18            { Symbols.CodeAtom, OpCode.CodeAtom },
     19            { Symbols.CodeCar, OpCode.CodeCar },
     20            { Symbols.CodeCdr, OpCode.CodeCdr },
     21            { Symbols.CodeCons, OpCode.CodeCons },
     22            { Symbols.CodeContainer, OpCode.CodeContainer },
     23            { Symbols.CodeContains, OpCode.CodeContains },
     24            { Symbols.CodeDefinition, OpCode.CodeDefinition },
     25            { Symbols.CodeDiscrepancy, OpCode.CodeDiscrepancy },
     26            { Symbols.CodeDoX, OpCode.CodeDoX },
     27            { Symbols.CodeDoXCount, OpCode.CodeDoXCount },
     28            { Symbols.CodeDoXRange, OpCode.CodeDoXRange },
     29            { Symbols.CodeDoXTimes, OpCode.CodeDoXTimes },
     30            { Symbols.CodeExtract, OpCode.CodeExtract },
     31            { Symbols.CodeFlush, OpCode.CodeFlush },
     32            { Symbols.CodeFromFloat, OpCode.CodeFromFloat },
     33            { Symbols.CodeFromInteger, OpCode.CodeFromInteger },
     34            { Symbols.CodeFromName, OpCode.CodeFromName },
     35            { Symbols.CodeInsert, OpCode.CodeInsert },
     36            { Symbols.CodeInstructions, OpCode.CodeInstructions },
     37            { Symbols.CodeLength, OpCode.CodeLength },
     38            { Symbols.CodeList, OpCode.CodeList },
     39            { Symbols.CodeMember, OpCode.CodeMember },
     40            { Symbols.CodeNoop, OpCode.CodeNoop },
     41            { Symbols.CodeNth, OpCode.CodeNth },
     42            { Symbols.CodeNthCdr, OpCode.CodeNthCdr },
     43            { Symbols.CodeNull, OpCode.CodeNull },
     44            { Symbols.CodePosition, OpCode.CodePosition },
     45            { Symbols.CodeRand, OpCode.CodeRand },
     46            { Symbols.CodeRot, OpCode.CodeRot },
     47            { Symbols.CodeShove, OpCode.CodeShove },
     48            { Symbols.CodeSize, OpCode.CodeSize },
     49            { Symbols.CodeStackDepth, OpCode.CodeStackDepth },
     50            { Symbols.CodeSubst, OpCode.CodeSubst },
     51            { Symbols.CodeSwap, OpCode.CodeSwap },
     52            { Symbols.CodeYank, OpCode.CodeYank },
     53            { Symbols.CodeYankDuplicate, OpCode.CodeYankDuplicate },
    1954            #endregion Code
    2055
    2156            #region Exec
    22             { "EXEC.EXPAND", OpCode.ExecExpand },
    23             { "EXEC.PUSH", OpCode.ExecPush },
    24             { "EXEC.IF", OpCode.ExecIf },
    25             { "EXEC.DEFINE", OpCode.ExecDefine },
    26             { "EXEC.DUP", OpCode.ExecDup },
    27             { "EXEC.POP", OpCode.ExecPop },
    28             { "EXEC.Y", OpCode.ExecY },
    29             { "EXEC.DO*RANGE", OpCode.ExecDoXRange },
     57            { Symbols.ExecIf, OpCode.ExecIf },
     58            { Symbols.ExecDefine, OpCode.ExecDefine },
     59            { Symbols.ExecDuplicate, OpCode.ExecDuplicate },
     60            { Symbols.ExecPop, OpCode.ExecPop },
     61            { Symbols.ExecY, OpCode.ExecY },
     62            { Symbols.ExecDoXRange, OpCode.ExecDoXRange },
     63            { Symbols.ExecEquals, OpCode.ExecEquals },
     64            { Symbols.ExecDoXCount, OpCode.ExecDoXCount },
     65            { Symbols.ExecDoXTimes, OpCode.ExecDoXTimes },
     66            { Symbols.ExecFlush, OpCode.ExecFlush },
     67            { Symbols.ExecK, OpCode.ExecK },
     68            { Symbols.ExecRot, OpCode.ExecRot },
     69            { Symbols.ExecS, OpCode.ExecS },
     70            { Symbols.ExecShove, OpCode.ExecShove },
     71            { Symbols.ExecStackDepth, OpCode.ExecStackDepth },
     72            { Symbols.ExecSwap, OpCode.ExecSwap },
     73            { Symbols.ExecYank, OpCode.ExecYank },
     74            { Symbols.ExecYankDuplicate, OpCode.ExecYankDuplicate },
    3075            #endregion Exec
    3176
    3277            #region Name
    33             { "NAME.DEFINE*EXEC", OpCode.NameDefineXExec },
    34             { "NAME.POP", OpCode.NamePop },
    35             { "NAME.DUP", OpCode.NameDup },
     78            { Symbols.NamePop, OpCode.NamePop },
     79            { Symbols.NameDuplicate, OpCode.NameDuplicate },
     80            { Symbols.NameEquals, OpCode.NameEquals },
     81            { Symbols.NameFlush, OpCode.NameFlush },
     82            { Symbols.NameQuote, OpCode.NameQuote },
     83            { Symbols.NameRand, OpCode.NameRand },
     84            { Symbols.NameRandBoundName, OpCode.NameRand },
     85            { Symbols.NameRot, OpCode.NameRot },
     86            { Symbols.NameShove, OpCode.NameShove },
     87            { Symbols.NameStackDepth, OpCode.NameStackDepth },
     88            { Symbols.NameSwap, OpCode.NameSwap },
     89            { Symbols.NameYank, OpCode.NameYank },
     90            { Symbols.NameYankDuplicate, OpCode.NameYankDuplicate },
    3691            #endregion Name
    3792
    3893            #region Boolean
    39             { "BOOLEAN.PUSH", OpCode.BooleanPush },
    40             { "BOOLEAN.POP", OpCode.BooleanPop },
    41             { "BOOLEAN.DUP", OpCode.BooleanDup },
    42             { "BOOLEAN.AND", OpCode.BooleanAnd },
    43             { "BOOLEAN.OR", OpCode.BooleanOr },
     94            { Symbols.BooleanPop, OpCode.BooleanPop },
     95            { Symbols.BooleanDuplicate, OpCode.BooleanDuplicate },
     96            { Symbols.BooleanAnd, OpCode.BooleanAnd },
     97            { Symbols.BooleanOr, OpCode.BooleanOr },
     98            { Symbols.BooleanEquals, OpCode.BooleanEquals },
     99            { Symbols.BooleanFlush, OpCode.BooleanFlush },
     100            { Symbols.BooleanFromFloat, OpCode.BooleanFromFloat },
     101            { Symbols.BooleanFromInteger, OpCode.BooleanFromInteger },
     102            { Symbols.BooleanNot, OpCode.BooleanNot },
     103            { Symbols.BooleanRand, OpCode.BooleanRand },
     104            { Symbols.BooleanRot, OpCode.BooleanRot },
     105            { Symbols.BooleanShove, OpCode.BooleanShove },
     106            { Symbols.BooleanStackDepth, OpCode.BooleanStackDepth },
     107            { Symbols.BooleanSwap, OpCode.BooleanSwap },
     108            { Symbols.BooleanYank, OpCode.BooleanYank },
     109            { Symbols.BooleanYankDuplicate, OpCode.BooleanYankDuplicate },
    44110            #endregion Boolean
    45111
    46112            #region Integer
    47             { "INTEGER.PUSH", OpCode.IntegerPush },
    48             { "INTEGER.POP", OpCode.IntegerPop },
    49             { "INTEGER.DUP", OpCode.IntegerDup },
    50             { "INTEGER.DEFINE", OpCode.IntegerDefine },
    51             { "INTEGER.+", OpCode.IntegerAdd },
    52             { "INTEGER.-", OpCode.IntegerSubtract },
    53             { "INTEGER.*", OpCode.IntegerMultiply },
    54             { "INTEGER./", OpCode.IntegerDivide },
    55             { "INTEGER.<", OpCode.IntegerSmallerThan },
    56             { "INTEGER.>", OpCode.IntegerGreaterThan },
    57             { "INTEGER.=", OpCode.IntegerEquals },
    58             { "INTEGER.MIN", OpCode.IntegerMin },
    59             { "INTEGER.MAX", OpCode.IntegerMax },
     113            { Symbols.IntegerPop, OpCode.IntegerPop },
     114            { Symbols.IntegerDuplicate, OpCode.IntegerDuplicate },
     115            { Symbols.IntegerDefine, OpCode.IntegerDefine },
     116            { Symbols.IntegerAdd, OpCode.IntegerAdd },
     117            { Symbols.IntegerSubtract, OpCode.IntegerSubtract },
     118            { Symbols.IntegerMultiply, OpCode.IntegerMultiply },
     119            { Symbols.IntegerDivide, OpCode.IntegerDivide },
     120            { Symbols.IntegerSmallerThan, OpCode.IntegerSmallerThan },
     121            { Symbols.IntegerGreaterThan, OpCode.IntegerGreaterThan },
     122            { Symbols.IntegerEquals, OpCode.IntegerEquals },
     123            { Symbols.IntegerMin, OpCode.IntegerMin },
     124            { Symbols.IntegerMax, OpCode.IntegerMax },
     125            { Symbols.IntegerModulo, OpCode.IntegerModulo },
     126            { Symbols.IntegerFlush, OpCode.IntegerFlush },
     127            { Symbols.IntegerFromBoolean, OpCode.IntegerFromBoolean },
     128            { Symbols.IntegerFromFloat, OpCode.IntegerFromFloat },
     129            { Symbols.IntegerRand, OpCode.IntegerRand },
     130            { Symbols.IntegerRot, OpCode.IntegerRot },
     131            { Symbols.IntegerShove, OpCode.IntegerShove },
     132            { Symbols.IntegerStackDepth, OpCode.IntegerStackDepth },
     133            { Symbols.IntegerSwap, OpCode.IntegerSwap },
     134            { Symbols.IntegerYank, OpCode.IntegerYank },
     135            { Symbols.IntegerYankDuplicate, OpCode.IntegerYankDuplicate },
    60136            #endregion Integer
    61137
    62138            #region Float
    63             { "FLOAT.PUSH", OpCode.FloatPush },
    64             { "FLOAT.POP", OpCode.FloatPop },
    65             { "FLOAT.DUP", OpCode.FloatDup },
    66             { "FLOAT.DEFINE", OpCode.FloatDefine },
    67             { "FLOAT.+", OpCode.FloatAdd },
    68             { "FLOAT.-", OpCode.FloatSubtract },
    69             { "FLOAT.*", OpCode.FloatMultiply },
    70             { "FLOAT./", OpCode.FloatDivide },
    71             { "FLOAT.<", OpCode.FloatSmallerThan },
    72             { "FLOAT.>", OpCode.FloatGreaterThan },
    73             { "FLOAT.=", OpCode.FloatEquals },
    74             { "FLOAT.MIN", OpCode.FloatMin },
    75             { "FLOAT.MAX", OpCode.FloatMax },
     139            { Symbols.FloatPop, OpCode.FloatPop },
     140            { Symbols.FloatDuplicate, OpCode.FloatDuplicate },
     141            { Symbols.FloatDefine, OpCode.FloatDefine },
     142            { Symbols.FloatAdd, OpCode.FloatAdd },
     143            { Symbols.FloatSubtract, OpCode.FloatSubtract },
     144            { Symbols.FloatMultiply, OpCode.FloatMultiply },
     145            { Symbols.FloatDivide, OpCode.FloatDivide },
     146            { Symbols.FloatSmallerThan, OpCode.FloatSmallerThan },
     147            { Symbols.FloatGreaterThan, OpCode.FloatGreaterThan },
     148            { Symbols.FloatEquals, OpCode.FloatEquals },
     149            { Symbols.FloatMin, OpCode.FloatMin },
     150            { Symbols.FloatMax, OpCode.FloatMax },
     151            { Symbols.FloatCos, OpCode.FloatCos },
     152            { Symbols.FloatSin, OpCode.FloatSin },
     153            { Symbols.FloatTan, OpCode.FloatTan },
     154            { Symbols.FloatFromBoolean, OpCode.FloatFromBoolean },
     155            { Symbols.FloatFromInteger, OpCode.FloatFromInteger },
     156            { Symbols.FloatRand, OpCode.FloatRand },
     157            { Symbols.FloatRot, OpCode.FloatRot },
     158            { Symbols.FloatShove, OpCode.FloatShove },
     159            { Symbols.FloatStackDepth, OpCode.FloatStackDepth },
     160            { Symbols.FloatSwap, OpCode.FloatSwap },
     161            { Symbols.FloatYank, OpCode.FloatYank },
     162            { Symbols.FloatYankDuplicate, OpCode.FloatYankDuplicate },
    76163            #endregion Float
    77164        };
     
    81168            OpCode opCode;
    82169            if (symbolTable.TryGetValue(operationName, out opCode)) return opCode;
    83             else throw new NotSupportedException("Symbol: " + operationName);
     170            else throw new NotSupportedException("Operation not supported: " + operationName);
    84171        }
    85172
     
    88175            return symbolTable.TryGetValue(operationName, out opCode);
    89176        }
    90 
    91         public static string GetSymbol(OpCode opCode)
    92         {
    93             var symbol = symbolTable.SingleOrDefault(pair => pair.Value == opCode);
    94 
    95             return !symbol.Equals(default(KeyValuePair<string, OpCode>))
    96                 ? symbol.Key
    97                 : null;
    98         }
    99177    }
    100178}
Note: See TracChangeset for help on using the changeset viewer.