Changeset 14328 for branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Parser/SymbolTable.cs
- Timestamp:
- 10/08/16 12:04:25 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Parser/SymbolTable.cs
r14323 r14328 1 1 using System; 2 2 using System.Collections.Generic; 3 using System.Linq;4 3 5 4 namespace HeuristicLab.Algorithms.PushGP … … 10 9 { 11 10 #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 }, 19 54 #endregion Code 20 55 21 56 #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 }, 30 75 #endregion Exec 31 76 32 77 #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 }, 36 91 #endregion Name 37 92 38 93 #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 }, 44 110 #endregion Boolean 45 111 46 112 #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 }, 60 136 #endregion Integer 61 137 62 138 #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 }, 76 163 #endregion Float 77 164 }; … … 81 168 OpCode opCode; 82 169 if (symbolTable.TryGetValue(operationName, out opCode)) return opCode; 83 else throw new NotSupportedException(" Symbol: " + operationName);170 else throw new NotSupportedException("Operation not supported: " + operationName); 84 171 } 85 172 … … 88 175 return symbolTable.TryGetValue(operationName, out opCode); 89 176 } 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.Key97 : null;98 }99 177 } 100 178 }
Note: See TracChangeset
for help on using the changeset viewer.