Enum lexx::TokenTree [] [src]

pub enum TokenTree {
    Token(SpanToken),
    Delimited(SpanRc<Delimited>),
    Sequence(SpanRc<SequenceRepetition>),
}

When the main rust parser encounters a syntax-extension invocation, it parses the arguments to the invocation as a token-tree. This is a very loose structure, such that all sorts of different AST-fragments can be passed to syntax extensions using a uniform type.

If the syntax extension is an MBE macro, it will attempt to match its LHS token tree against the provided token tree, and if it finds a match, will transcribe the RHS token tree, splicing in any captured macro_parser::matched_nonterminals into the SubstNts it finds.

The RHS of an MBE macro is the only place SubstNts are substituted. Nothing special happens to misnamed or misplaced SubstNts.

Variants

Token(SpanToken)

A single token

Delimited(SpanRc<Delimited>)

A delimited sequence of token trees

Sequence(SpanRc<SequenceRepetition>)

A kleene-style repetition sequence with a span

Methods

impl TokenTree

fn len(&self) -> usize

fn get_tt(&self, index: usize) -> TokenTree

fn get_span(&self) -> Span

Returns the Span corresponding to this token tree.

fn parse(cx: &ExtCtxt, mtch: &[TokenTree], tts: &[TokenTree]) -> ParseResult<HashMap<IdentRc<NamedMatch>, RandomState>>

Use this token tree as a matcher to parse given tts.

fn eq_unspanned(&self, other: &TokenTree) -> bool

Check if this TokenTree is equal to the other, regardless of span information.

fn span(&self) -> Span

Retrieve the TokenTree's span.

fn eq_token(&self, t: Token) -> bool

Indicates if the stream is a token that is equal to the provided token.

fn is_ident(&self) -> bool

Indicates if the token is an identifier.

fn maybe_ident(&self) -> Option<Ident>

Returns an identifier.

fn maybe_lit(&self) -> Option<Lit>

Returns a Token literal.

fn maybe_str(&self) -> Option<Spanned<LitKind>>

Returns an AST string literal.

Trait Implementations

impl ToTokens for TokenTree

fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree>

impl Hash for TokenTree

fn hash<__H>(&self, __arg_0: &mut __H) where __H: Hasher

impl Decodable for TokenTree

fn decode<__D>(__arg_0: &mut __D) -> Result<TokenTree, __D::Error> where __D: Decoder

impl Encodable for TokenTree

fn encode<__S>(&self, __arg_0: &mut __S) -> Result<(), __S::Error> where __S: Encoder

impl Eq for TokenTree

impl PartialEq<TokenTree> for TokenTree

fn eq(&self, __arg_0: &TokenTree) -> bool

fn ne(&self, __arg_0: &TokenTree) -> bool

impl Clone for TokenTree

fn clone(&self) -> TokenTree

impl Debug for TokenTree

fn fmt(&self, __arg_0: &mut Formatter) -> Result<()Error>