/// <summary> /// Logs severity to console. /// </summary> /// <param name="settings">Settings for interpreter</param> /// <param name="exp">The functiona call expression</param> public static string Log(LangSettings settings, FunctionCallExpr exp) { if (!settings.EnableLogging) return string.Empty; var funcname = exp.ToQualifiedName(); var severity =funcname.Substring(funcname.IndexOf(".") + 1); var message = BuildMessage(exp.ParamList); Console.WriteLine(severity.ToUpper() + " : " + message); return message; }
/// <summary> /// Logs a call to the console. /// </summary> /// <param name="exp"></param> public void Log(FunctionCallExpr exp) { var settings = this.Ctx.Settings; if (!settings.EnablePrinting) return; var funcname = exp.ToQualifiedName(); var severity = funcname.Substring(funcname.IndexOf(".") + 1); var message = BuildMessage(exp.ParamList); Console.WriteLine(severity.ToUpper() + " : " + message); }
/// <summary> /// Checks function call expressions for correct number of parameters. /// </summary> /// <param name="semActs">The semantic analyser</param> /// <param name="exp">The functioncallexpression</param> private SemanticCheckResult CheckFunctionCall(SemActs semActs, FunctionCallExpr exp) { var functionName = exp.ToQualifiedName(); var exists = exp.SymScope.IsFunction(functionName); // 1. Function does not exist. if (!exists) { return AddErrorCode(ErrorCodes.Func1000, exp, functionName); } var sym = exp.SymScope.GetSymbol(functionName) as SymbolFunction; var func = sym.FuncExpr as FunctionExpr; // 5. Check that named parameters exist. foreach(var argExpr in exp.ParamListExpressions) { if(argExpr.IsNodeType(NodeTypes.SysNamedParameter)) { var argName = ((NamedParameterExpr) argExpr).Name; if (!func.Meta.ArgumentsLookup.ContainsKey(argName)) AddErrorCode(ErrorCodes.Func1002, exp, argName); } } return SemanticCheckResult.Valid; }