コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Call.cs プロジェクト: zenuas/Roku
 public Call(FunctionCallValue f)
 {
     Function = f;
 }