コード例 #1
0
        public override string VisitNativeMemberAccess([NotNull] sphereScript99Parser.NativeMemberAccessContext context)
        {
            if (currentLevel == targetLevel || (targetLevel == -1 && context.chainedMemberAccess() == null))
            {
                return(context.nativeFunctionName().GetText());
            }

            return(base.VisitNativeMemberAccess(context));
        }
コード例 #2
0
        public override IParseTree[] VisitNativeMemberAccess([NotNull] sphereScript99Parser.NativeMemberAccessContext context)
        {
            if (!CanVisitNatvieMemberAccess(context))
            {
                return(base.VisitNativeMemberAccess(context));
            }

            if (context.nativeArgumentList()?.enclosedArgumentList()?.enclosedArgumentListInner()?.enclosedArgument() != null)
            {
                return(context.nativeArgumentList().enclosedArgumentList().enclosedArgumentListInner().enclosedArgument().Select(x => x.children[0]).ToArray());
            }

            var freeArgumentList = context.nativeArgumentList()?.freeArgumentList();

            if (freeArgumentList != null)
            {
                var arguments = new List <IParseTree>();
                var optionalWhiteSpaceArgument = freeArgumentList?.firstFreeArgument()?.firstFreeArgumentOptionalWhiteSpace();
                if (optionalWhiteSpaceArgument != null)
                {
                    arguments.Add(optionalWhiteSpaceArgument.evalExpression()
                                  ?? optionalWhiteSpaceArgument.triggerArgument()
                                  ?? (IParseTree)optionalWhiteSpaceArgument.quotedLiteralArgument());
                }

                var mandatoryWhiteSpaceArgument = freeArgumentList?.firstFreeArgument()?.firstFreeArgumentMandatoryWhiteSpace();
                if (mandatoryWhiteSpaceArgument != null)
                {
                    arguments.Add(mandatoryWhiteSpaceArgument.assignmentArgument()
                                  ?? (IParseTree)mandatoryWhiteSpaceArgument.unquotedLiteralArgument());
                }

                arguments.AddRange(freeArgumentList.argument());

                return(arguments.ToArray());
            }

            return(Array.Empty <IParseTree>());
        }
コード例 #3
0
 protected abstract bool CanVisitNatvieMemberAccess(sphereScript99Parser.NativeMemberAccessContext context);
コード例 #4
0
 protected override bool CanVisitNatvieMemberAccess(sphereScript99Parser.NativeMemberAccessContext context)
 => true;
コード例 #5
0
 protected override bool CanVisitNatvieMemberAccess(sphereScript99Parser.NativeMemberAccessContext context)
 => context.chainedMemberAccess() == null;
コード例 #6
0
 public override string VisitNativeMemberAccess([NotNull] sphereScript99Parser.NativeMemberAccessContext context)
 {
     return(context.nativeFunctionName().GetText());
 }
コード例 #7
0
        public override bool VisitNativeMemberAccess([NotNull] sphereScript99Parser.NativeMemberAccessContext context)
        {
            parentTranspiler.Visit(context.nativeFunctionName());

            return(true);
        }