示例#1
0
        public override Expression VisitRefLocal([NotNull] LogicScriptParser.RefLocalContext context)
        {
            if (Context.IsInConstant)
            {
                Context.Errors.AddError("You can only reference constants from other constants", context.Span(), true);
            }

            var @ref = new ReferenceVisitor(Context).Visit(context);

            return(new ReferenceExpression(context.Span(), @ref));
        }
示例#2
0
        public override Reference VisitRefLocal([NotNull] LogicScriptParser.RefLocalContext context)
        {
            var name = context.VARIABLE().GetText().TrimStart('$');

            if (!Context.Locals.TryGetValue(name, out var local))
            {
                Context.Errors.AddError($"Local variable ${name} is not declared", context.Span());
                return(new LocalReference(context.Span(), name, default));
            }

            return(new LocalReference(context.Span(), name, local));
        }