Exemple #1
0
        public Ust VisitNonWildcardTypeArguments(JavaParser.NonWildcardTypeArgumentsContext context)
        {
            var    type       = (TypeToken)Visit(context.typeList());
            string resultType = context.GetChild <ITerminalNode>(0) + type.TypeText + context.GetChild <ITerminalNode>(1);

            var result = new TypeToken(resultType, context.GetTextSpan());

            return(result);
        }
Exemple #2
0
        public UstNode VisitPrimary(JavaParser.PrimaryContext context)
        {
            TextSpan   textSpan       = context.GetTextSpan();
            var        child0Terminal = context.GetChild(0) as ITerminalNode;
            Expression result;

            if (child0Terminal != null)
            {
                switch (child0Terminal.Symbol.Type)
                {
                case JavaParser.LPAREN:
                    result = (Expression)Visit(context.expression());
                    return(result);

                case JavaParser.THIS:
                    result = new ThisReferenceToken(textSpan, FileNode);
                    return(result);

                case JavaParser.SUPER:
                    result = new BaseReferenceExpression(textSpan, FileNode);
                    return(result);

                case JavaParser.VOID:
                    var id = new IdToken("TypeOf", ((ITerminalNode)context.GetChild(2)).GetTextSpan(), FileNode);
                    var child0TerminalSpan = child0Terminal.GetTextSpan();
                    result = new InvocationExpression(id,
                                                      new ArgsNode(new Expression[] { new NullLiteral(child0TerminalSpan, FileNode) }, child0TerminalSpan, FileNode),
                                                      textSpan,
                                                      FileNode);
                    return(result);
                }
            }

            JavaParser.TypeTypeOrVoidContext type = context.typeTypeOrVoid();
            if (type != null)
            {
                var typeToken = (TypeToken)Visit(type);
                var id        = new IdToken("TypeOf", ((ITerminalNode)context.GetChild(2)).GetTextSpan(), FileNode);
                result = new InvocationExpression(id,
                                                  new ArgsNode(new Expression[] { typeToken }, typeToken.TextSpan, FileNode),
                                                  textSpan,
                                                  FileNode);
                return(result);
            }

            JavaParser.NonWildcardTypeArgumentsContext args = context.nonWildcardTypeArguments();
            if (args != null)
            {
                var typeToken = (TypeToken)Visit(args);

                throw new NotImplementedException();
            }

            return(Visit(context.GetChild(0)));
        }