Exemplo n.º 1
0
 private string GetFuncArg(string argName, FuncArgs funcArgs)
 {
     if (argName.Substring(0, 1) == ":")
     {
         if (funcArgs.ContainsKey(argName))
         {
             return(funcArgs[argName]);
         }
         else
         {
             throw new SyntaxError(string.Format("Undefined variable {0}.", argName));
         }
     }
     return(argName);
 }
Exemplo n.º 2
0
        private void FUNC_LET(Tokens tokens, FuncArgs funcArgs)
        {
            Token funcNameToken = tokens.GetNextToken();

            tokens.ConsumeSpaces();

            Token varNameToken = tokens.GetNextToken();

            tokens.ConsumeSpaces();

            Token equalToken = tokens.GetNextToken();

            tokens.ConsumeSpaces();

            string val = string.Empty;

            if (tokens.InpectNextToken().Value == "(")
            {
                val = this.Expression(tokens, funcArgs);
            }
            else
            {
                val = this.GetFuncArg(tokens.GetNextToken().Value, funcArgs);
            }

            string varName = varNameToken.Value;

            if (funcArgs.ContainsKey(varName))
            {
                funcArgs[varName] = val;
            }
            else
            {
                funcArgs.Add(varName, val);
            }

            this.Next(tokens, funcArgs);
        }