Пример #1
0
        public override BaseComputable VisitSimpleValue([NotNull] SimpleValueContext context)
        {
            //simple constant
            if (context.NUM() != null)
            {
                var value = int.Parse(context.NUM().GetText());
                if (context.OPERATOR_1()?.GetText().Equals("-") ?? false)
                {
                    value = -value;
                }
                return(new SimpleValue(value));
            }

            //simple constant
            if (context.CHAR() != null)
            {
                return(new SimpleValue(context.CHAR().GetText()[1]));
            }

            //string
            if (context.STR() != null)
            {
                var str = context.STR().GetText();
                return(new Str(str.Substring(1, str.Length - 2)));
            }

            if (context.NEW() != null)
            {
                if (context.a2 != null)
                {
                    return(new Array(context.a2.logical_statement_1().Accept(this).GetValue()));
                }
                else
                {
                    return(new Structure(context.ID().GetText()));
                }
            }

            string variableName = context.ID().GetText();
            var    runnable     = _evaluationContext.GetVaribale(variableName);

            foreach (var args in context.args())
            {
                runnable = CallFunction(runnable, args);
            }
            runnable = Resolve(context, ref runnable);

            return(runnable);
        }
Пример #2
0
 public ref BaseComputable GetReference(SimpleValueContext context)
 {
     string  variableName = context.ID().GetText();
     ref var runnable     = ref _evaluationContext.GetVaribale(variableName);