Beispiel #1
0
            public override object VisitCmd_create_var([NotNull] scheme_langParser.Cmd_create_varContext context)
            {
                var var_def = context.variable_definition();

                string var_type = var_def.variable_type()?.GetText();
                string var_name = var_def.variable_name()?.GetText();

                if (var_type == null || var_name == null)
                {
                    if (var_def.EQUALS() != null)
                    {
                        SetNewExpression(1);
                    }
                    return(base.VisitCmd_create_var(context));
                }

                if (!VariableManager.IsTypeValid(var_type, Config))
                {
                    Errors.Add(new ErrorDescriptor($"Type '{var_type}' is not recognized.", var_def.variable_type()));
                }

                VariableManager.CheckNewVariable(var_name, this, var_def.variable_name());

                CommandCreateVariable create_cmd = new CommandCreateVariable(var_type, var_name);

                currentFunc.AddCommand(create_cmd);

                if (var_def.EQUALS() != null)
                {
                    CommandSetVariable cmd = new CommandSetVariable(var_name, GetRegName(0));
                    currentFunc.AddCommand(cmd);
                    SetNewExpression(1);
                }

                return(base.VisitCmd_create_var(context));
            }