Beispiel #1
0
        public override object VisitCallExp(bhlParser.CallExpContext ctx)
        {
            var name     = ctx.NAME();
            var chainExp = ctx.chainExp();

            if (chainExp != null)
            {
                foreach (var chainExpItem in chainExp)
                {
                    if (chainExpItem.callArgs() is bhlParser.CallArgsContext callArgs)
                    {
                        if (name != null)
                        {
                            AddSemanticToken(name, SemanticTokenTypes.function);
                            name = null;
                        }

                        Visit(callArgs);
                    }
                    else if (chainExpItem.memberAccess() is bhlParser.MemberAccessContext memberAccess)
                    {
                        if (name != null)
                        {
                            AddSemanticToken(name, SemanticTokenTypes.variable);
                        }

                        name = memberAccess.NAME();

                        Visit(memberAccess);
                    }
                    else if (chainExpItem.arrAccess() is bhlParser.ArrAccessContext arrAccess)
                    {
                        if (name != null)
                        {
                            AddSemanticToken(name, SemanticTokenTypes.variable);
                        }

                        name = null;

                        Visit(arrAccess);
                    }
                }

                if (name != null)
                {
                    AddSemanticToken(name, SemanticTokenTypes.variable);
                }
            }
            return(null);
        }