Example #1
0
        public void Parse(ref string[] program)
        {
            string token = ParseUtils.GetToken(ref program);

            WooScript._Log.AddMsg("Found function, target \"" + token + "\"");
            WooScript._Log.Indent();
            if (WooScript.IsFloatVariable(token))
            {
                _ReturnType = VarType.varFloat;
                _Var        = token;
            }
            else if (WooScript.IsVecVariable(token))
            {
                _ReturnType = VarType.varVector;
                _Var        = token;
            }
            else
            {
                throw new ParseException("Expected \"" + token + "\" to be a float or vector variable");
            }

            string assignOp = ParseUtils.GetToken(ref program);

            _AssignOp = WooScript.GetAssignOp(assignOp);

            _Expression = ExpressionBuilder.Parse(ref program);

            if (_ReturnType == VarType.varVector &&
                (_Expression.GetExpressionType() != VarType.varVector))
            {
                throw new ParseException("Target token is \"" + token + "\" which is a vector, expression isn't...");
            }

            if (_ReturnType == VarType.varFloat &&
                (_Expression.GetExpressionType() != VarType.varFloat))
            {
                throw new ParseException("Target token is \"" + token + "\" which is a float, expression isn't...");
            }
        }