private IValue GetIValueFromDslToken() { IValue returnValue = null; DslObject obj = GetObject(_lookaheadFirst); if (obj == DslObject.Variable) { returnValue = new VariableValue(); var varName = _lookaheadFirst.Value; if (varName.StartsWith("[") && varName.EndsWith("]")) { varName = varName.Remove(varName.Length - 1).Substring(1); } (returnValue as VariableValue).VariableName = varName; DiscardToken(); } else if (obj == DslObject.FixedValue) { returnValue = new FixedValue(); (returnValue as FixedValue).Value = _lookaheadFirst.Value; DiscardToken(); } else if (obj == DslObject.NULL) { returnValue = new NullValue(); DiscardToken(); } else if (obj == DslObject.DataType) { returnValue = new DataTypeValue(); (returnValue as DataTypeValue).TypeName = _lookaheadFirst.Value; DiscardToken(); } else if (obj == DslObject.Function) { returnValue = new FunctionCallValue(); var x = returnValue as FunctionCallValue; x.FunctionName = _lookaheadFirst.Value.Remove(_lookaheadFirst.Value.Length - 1); DiscardToken(); while (_lookaheadFirst.TokenType != TokenType.CloseParenthesis) { x.Parameters.Add(GetIValueFromDslToken()); if (!(_lookaheadFirst.TokenType == TokenType.Comma || _lookaheadFirst.TokenType == TokenType.CloseParenthesis)) { throw new ArgumentException(", or ) expected " + _lookaheadFirst.Value + " found"); } if (_lookaheadFirst.TokenType == TokenType.Comma) { DiscardToken(); } } DiscardToken(); } return(returnValue); }
public Call(FunctionCallValue f) { Function = f; }