Class LongLiteralExpr

    • Field Detail

      • MAX_63_BIT_UNSIGNED_VALUE_AS_BIG_INTEGER

        public static final BigInteger MAX_63_BIT_UNSIGNED_VALUE_AS_BIG_INTEGER
    • Constructor Detail

      • LongLiteralExpr

        public LongLiteralExpr()
      • LongLiteralExpr

        public LongLiteralExpr​(String value)
      • LongLiteralExpr

        public LongLiteralExpr​(TokenRange tokenRange,
                               String value)
        This constructor is used by the parser and is considered private.
      • LongLiteralExpr

        @Deprecated
        public LongLiteralExpr​(long value)
        Deprecated.
        This function is deprecated in favor of LongLiteralExpr(String). Please refer to the asNumber() function for valid formats and how to construct literals holding negative values.
    • Method Detail

      • accept

        public <R,​A> R accept​(GenericVisitor<R,​A> v,
                                    A arg)
        Description copied from interface: Visitable
        Accept method for visitor support.
        Type Parameters:
        R - the type of the return value of the visitor
        A - the type the user argument passed to the visitor
        Parameters:
        v - the visitor implementation
        arg - the argument passed to the visitor (of type A)
        Returns:
        the result of the visit (of type R)
      • accept

        public <A> void accept​(VoidVisitor<A> v,
                               A arg)
        Description copied from interface: Visitable
        Accept method for visitor support.
        Type Parameters:
        A - the type the argument passed for the visitor
        Parameters:
        v - the visitor implementation
        arg - any value relevant for the visitor (of type A)
      • asLong

        @Deprecated
        public long asLong()
        Deprecated.
        This function has issues with corner cases, such as 9223372036854775808L, so please use asNumber(). It will be made private or merged with asNumber() in future releases
        Returns:
        the literal value as an long while respecting different number representations
      • asNumber

        public Number asNumber()
        This function returns a representation of the literal value as a number. This will return a long, except for the case when the literal has the value 9223372036854775808L. This special literal is only allowed in the expression -9223372036854775808L which represents Long.MIN_VALUE). However 9223372036854775808 (2^63) is out of range of long, which is -(2^63) to (2^63)-1 and thus a BigInteger must be returned.

        Note, that this function will NOT return a negative number if the literal was specified in decimal, since according to the language specification (chapter 3.10.1) an expression such as -1L is represented by a unary * expression with a minus operator and the literal 1L. It is however possible to represent negative * numbers in a literal directly, i.e. by using the binary or hexadecimal representation. For example 0xffff_ffff_ffff_ffffL represents the value -1L.

        Returns:
        the literal value as a number while respecting different number representations