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); }
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); }