Example #1
0
        public override Node VisitRuleset(DeltinScriptParser.RulesetContext context)
        {
            RuleNode[] rules = new RuleNode[context.ow_rule().Length];
            for (int i = 0; i < rules.Length; i++)
            {
                rules[i] = (RuleNode)VisitOw_rule(context.ow_rule()[i]);
            }

            Variable useGlobalVar;
            Variable usePlayerVar;

            Enum.TryParse <Variable>(context.useGlobalVar()?.PART().GetText(), out useGlobalVar);
            Enum.TryParse <Variable>(context.usePlayerVar()?.PART().GetText(), out usePlayerVar);

            DefinedNode[] definedVars = new DefinedNode[context.vardefine().Length];
            for (int i = 0; i < definedVars.Length; i++)
            {
                definedVars[i] = (DefinedNode)VisitVardefine(context.vardefine()[i]);
            }

            UserMethodNode[] userMethods = new UserMethodNode[context.user_method().Length];
            for (int i = 0; i < userMethods.Length; i++)
            {
                userMethods[i] = (UserMethodNode)VisitUser_method(context.user_method()[i]);
            }

            Node node = new RulesetNode(rules, useGlobalVar, usePlayerVar, definedVars, userMethods, Range.GetRange(context));

            CheckRange(node);
            return(node);
        }
Example #2
0
        public override Node VisitVardefine(DeltinScriptParser.VardefineContext context)
        {
            string variableName = context.PART(0).GetText();
            bool   isGlobal     = context.GLOBAL() != null;

            Variable?useVar = null;

            if (Enum.TryParse <Variable>(context.PART().ElementAtOrDefault(1)?.GetText(), out Variable setUseVar))
            {
                useVar = setUseVar;
            }

            int?useIndex = null;

            if (int.TryParse(context.number()?.GetText(), out int setUseIndex))
            {
                useIndex = setUseIndex;
            }

            Node node = new DefinedNode(isGlobal, variableName, useVar, useIndex, Range.GetRange(context));

            CheckRange(node);
            return(node);
        }