private static IFormulaToken CreateToken(FormulaEditorKey key, LocalVariable localVariable, GlobalVariable globalVariable)
{
switch (key)
{
// Constants
case FormulaEditorKey.D0: return FormulaTokenFactory.CreateDigitToken(0);
case FormulaEditorKey.D1: return FormulaTokenFactory.CreateDigitToken(1);
case FormulaEditorKey.D2: return FormulaTokenFactory.CreateDigitToken(2);
case FormulaEditorKey.D3: return FormulaTokenFactory.CreateDigitToken(3);
case FormulaEditorKey.D4: return FormulaTokenFactory.CreateDigitToken(4);
case FormulaEditorKey.D5: return FormulaTokenFactory.CreateDigitToken(5);
case FormulaEditorKey.D6: return FormulaTokenFactory.CreateDigitToken(6);
case FormulaEditorKey.D7: return FormulaTokenFactory.CreateDigitToken(7);
case FormulaEditorKey.D8: return FormulaTokenFactory.CreateDigitToken(8);
case FormulaEditorKey.D9: return FormulaTokenFactory.CreateDigitToken(9);
case FormulaEditorKey.DecimalSeparator: return FormulaTokenFactory.CreateDecimalSeparatorToken();
case FormulaEditorKey.ParameterSeparator: return FormulaTokenFactory.CreateParameterSeparatorToken();
case FormulaEditorKey.Pi: return FormulaTokenFactory.CreatePiToken();
case FormulaEditorKey.True: return FormulaTokenFactory.CreateTrueToken();
case FormulaEditorKey.False: return FormulaTokenFactory.CreateFalseToken();
// Operators
case FormulaEditorKey.Plus: return FormulaTokenFactory.CreatePlusToken();
case FormulaEditorKey.Minus: return FormulaTokenFactory.CreateMinusToken();
case FormulaEditorKey.Multiply: return FormulaTokenFactory.CreateMultiplyToken();
case FormulaEditorKey.Divide: return FormulaTokenFactory.CreateDivideToken();
case FormulaEditorKey.Caret: return FormulaTokenFactory.CreateCaretToken();
case FormulaEditorKey.Equals: return FormulaTokenFactory.CreateEqualsToken();
case FormulaEditorKey.NotEquals: return FormulaTokenFactory.CreateNotEqualsToken();
case FormulaEditorKey.Greater: return FormulaTokenFactory.CreateGreaterToken();
case FormulaEditorKey.GreaterEqual: return FormulaTokenFactory.CreateGreaterEqualToken();
case FormulaEditorKey.Less: return FormulaTokenFactory.CreateLessToken();
case FormulaEditorKey.LessEqual: return FormulaTokenFactory.CreateLessEqualToken();
case FormulaEditorKey.And: return FormulaTokenFactory.CreateAndToken();
case FormulaEditorKey.Or: return FormulaTokenFactory.CreateOrToken();
case FormulaEditorKey.Not: return FormulaTokenFactory.CreateNotToken();
case FormulaEditorKey.Mod: return FormulaTokenFactory.CreateModToken();
// Functions
case FormulaEditorKey.Exp: return FormulaTokenFactory.CreateExpToken();
case FormulaEditorKey.Log: return FormulaTokenFactory.CreateLogToken();
case FormulaEditorKey.Ln: return FormulaTokenFactory.CreateLnToken();
case FormulaEditorKey.Min: return FormulaTokenFactory.CreateMinToken();
case FormulaEditorKey.Max: return FormulaTokenFactory.CreateMaxToken();
case FormulaEditorKey.Sin: return FormulaTokenFactory.CreateSinToken();
case FormulaEditorKey.Cos: return FormulaTokenFactory.CreateCosToken();
case FormulaEditorKey.Tan: return FormulaTokenFactory.CreateTanToken();
case FormulaEditorKey.Arcsin: return FormulaTokenFactory.CreateArcsinToken();
case FormulaEditorKey.Arccos: return FormulaTokenFactory.CreateArccosToken();
case FormulaEditorKey.Arctan: return FormulaTokenFactory.CreateArctanToken();
case FormulaEditorKey.Sqrt: return FormulaTokenFactory.CreateSqrtToken();
case FormulaEditorKey.Abs: return FormulaTokenFactory.CreateAbsToken();
case FormulaEditorKey.Round: return FormulaTokenFactory.CreateRoundToken();
case FormulaEditorKey.Random: return FormulaTokenFactory.CreateRandomToken();
// Sensors
case FormulaEditorKey.AccelerationX: return FormulaTokenFactory.CreateAccelerationXToken();
case FormulaEditorKey.AccelerationY: return FormulaTokenFactory.CreateAccelerationYToken();
case FormulaEditorKey.AccelerationZ: return FormulaTokenFactory.CreateAccelerationZToken();
case FormulaEditorKey.Compass: return FormulaTokenFactory.CreateCompassToken();
case FormulaEditorKey.InclinationX: return FormulaTokenFactory.CreateInclinationXToken();
case FormulaEditorKey.InclinationY: return FormulaTokenFactory.CreateInclinationYToken();
case FormulaEditorKey.Loudness: return FormulaTokenFactory.CreateLoudnessToken();
// Properties
case FormulaEditorKey.Brightness: return FormulaTokenFactory.CreateBrightnessToken();
case FormulaEditorKey.Layer: return FormulaTokenFactory.CreateLayerToken();
case FormulaEditorKey.Transparency: return FormulaTokenFactory.CreateTransparencyToken();
case FormulaEditorKey.PositionX: return FormulaTokenFactory.CreatePositionXToken();
case FormulaEditorKey.PositionY: return FormulaTokenFactory.CreatePositionYToken();
case FormulaEditorKey.Rotation: return FormulaTokenFactory.CreateRotationToken();
case FormulaEditorKey.Size: return FormulaTokenFactory.CreateSizeToken();
// Variables
case FormulaEditorKey.LocalVariable: return FormulaTokenFactory.CreateLocalVariableToken(localVariable);
case FormulaEditorKey.GlobalVariable: return FormulaTokenFactory.CreateGlobalVariableToken(globalVariable);
// brackets
case FormulaEditorKey.OpeningParenthesis: return FormulaTokenFactory.CreateParenthesisToken(true);
case FormulaEditorKey.ClosingParenthesis: return FormulaTokenFactory.CreateParenthesisToken(false);
default: throw new ArgumentOutOfRangeException("key");
}
}