public void AddVariable(Variable var) { _variables.Add(var.Name, var); }
/// <summary> /// <para> Production E: </para> /// <para> E -> N = VE' </para> /// </summary> /// <exception cref="CalculatorException">On syntax error</exception> private void E() { if ( !SkipSpacesAndContinue() ) { return; } if (!Char.IsLetter(_initialInput[_index])) { throw new CalculatorException("Was expecting a letter.", _index); } // E -> N = VE' var name = N(); if (name == null || name == Variable.E.Name || name == Variable.PI.Name || name == Variable.ANS.Name ) { throw new CalculatorException("Variable name is reserved for constant value.", _index); } if (name == Calculate.Root || name == Calculate.Log || name == Command || name == Calculate.Command || name == Help.Command || name == Fraction.Command) { throw new CalculatorException("Variable name is reserved for existing operation.", _index); } if ( !SkipSpacesAndContinue() ) { return; } if (_initialInput[_index] != '=') { throw new CalculatorException("Was expecting '='.", _index); } _index++; var value = V(); var oldVariable = Variable.GetVariable(name); if (oldVariable != null) { oldVariable.Value = value; _variablesToSet.Add(oldVariable); } else { var newVariable = new Variable(name, value); _variablesToSet.Add(newVariable); Variable.Variables.Add(newVariable); } E_(); }