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); }
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); }