public override bool VisitOperand([NotNull] injectionParser.OperandContext context) { var varName = context.SYMBOL()?.GetText(); if (!string.IsNullOrEmpty(varName)) { if (!varNames.Contains(varName) && !metadata.TryGetIntrinsicVariable(varName, out _) && !metadata.ShortcutVariableExists(varName) && !metadata.GlobalVariableExists(varName)) { messages.Add(new Message(context.Start.Line, context.Start.Column, context.Stop.Line, context.Stop.Column, MessageSeverity.Warning, MessageCodes.UndefinedVariable, $"Variable not found '{varName}'.")); } } else { var dimName = context.indexedSymbol()?.SYMBOL()?.GetText(); if (!string.IsNullOrEmpty(dimName) && !varNames.Contains(dimName)) { messages.Add(new Message(context.Start.Line, context.Start.Column, context.Stop.Line, context.Stop.Column, MessageSeverity.Warning, MessageCodes.UndefinedVariable, $"Variable not found '{dimName}'.")); } } return(base.VisitOperand(context)); }
public override InjectionValue VisitOperand([NotNull] injectionParser.OperandContext context) { var name = context.SYMBOL()?.GetText(); if (!string.IsNullOrEmpty(name)) { if (metadata.TryGetIntrinsicVariable(name, out var intrinsicVariable)) { return(intrinsicVariable.Call(Array.Empty <InjectionValue>())); } if (semanticScope.TryGetVar(name, out var variable)) { return(variable); } throw new ScriptFailedException($"Variable undefined - {name}", context.Start.Line); } return(base.VisitOperand(context)); }