# May have disappeared in the AST
var next_token: nullable Token = null
+ # Is `self` a token discarded from the AST?
+ #
+ # Loose tokens are not present in the AST.
+ # It means they were identified by the lexer but were discarded by the parser.
+ # It also means that they are not visited or manipulated by AST-related functions.
+ #
+ # Each loose token is attached to the non-loose token that precedes or follows it.
+ # The rules are the following:
+ #
+ # * tokens that follow a non-loose token on a same line are attached to it.
+ # See `next_looses`.
+ # * other tokens, thus that precede a non-loose token on the same line or the next one,
+ # are attached to this one. See `prev_looses`.
+ #
+ # Loose tokens are mostly end of lines (`TEol`) and comments (`TComment`).
+ # Whitespace are ignored by the lexer, so they are not even considered as loose tokens.
+ # See `blank_before` to get the whitespace that separate tokens.
+ var is_loose = false
+
+ # Loose tokens that precede `self`.
+ #
+ # These tokens start the line or belong to a line with only loose tokens.
+ var prev_looses = new Array[Token] is lazy
+
+ # Loose tokens that follow `self`
+ #
+ # These tokens are on the same line than `self`.
+ var next_looses = new Array[Token] is lazy
+
# The verbatim blank text between `prev_token` and `self`
fun blank_before: String
do
super TokenLiteral
end
+# A literal binary integer
+class TBinNumber
+ super TokenLiteral
+end
+
+# A literal octal integer
+class TOctNumber
+ super TokenLiteral
+end
+
+# A literal decimal byte
+class TBytenum
+ super TokenLiteral
+end
+
+# A literal hexadecimal byte
+class THexBytenum
+ super TokenLiteral
+end
+
+# A literal binary byte
+class TBinBytenum
+ super TokenLiteral
+end
+
+# A literal octal byte
+class TOctBytenum
+ super TokenLiteral
+end
+
# A literal floating point number
class TFloat
super TokenLiteral
var n_hex_number: THexNumber is writable, noinit
end
+# An integer literal in binary format
+class ABinIntExpr
+ super AIntExpr
+
+ # The binary token
+ var n_bin_number: TBinNumber is writable, noinit
+end
+
+# An integer literal in octal format
+class AOctIntExpr
+ super AIntExpr
+
+ # The octal token
+ var n_oct_number: TOctNumber is writable, noinit
+end
+
+# An byte literal
+class AByteExpr
+ super AExpr
+end
+
+# An byte literal in decimal format
+class ADecByteExpr
+ super AByteExpr
+
+ # The decimal token
+ var n_bytenum: TBytenum is writable, noinit
+end
+
+# An byte literal in hexadecimal format
+class AHexByteExpr
+ super AByteExpr
+
+ # The hexadecimal token
+ var n_hex_bytenum: THexBytenum is writable, noinit
+end
+
+# An byte literal in binary format
+class ABinByteExpr
+ super AByteExpr
+
+ # The binary token
+ var n_bin_bytenum: TBinBytenum is writable, noinit
+end
+
+# An byte literal in octal format
+class AOctByteExpr
+ super AByteExpr
+
+ # The octal token
+ var n_oct_bytenum: TOctBytenum is writable, noinit
+end
+
# A float literal
class AFloatExpr
super AExpr