Enum lexx::TokenTree
[−]
[src]
pub enum TokenTree { Token(Span, Token), Delimited(Span, Rc<Delimited>), Sequence(Span, Rc<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 SubstNt
s it finds.
The RHS of an MBE macro is the only place SubstNt
s are substituted.
Nothing special happens to misnamed or misplaced SubstNt
s.
Variants
Token(Span, Token)
A single token
Delimited(Span, Rc<Delimited>)
A delimited sequence of token trees
Sequence(Span, Rc<SequenceRepetition>)
A kleene-style repetition sequence with a span
Methods
impl TokenTree
[src]
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<Ident, Rc<NamedMatch>, RandomState>>
cx: &ExtCtxt,
mtch: &[TokenTree],
tts: &[TokenTree]
) -> ParseResult<HashMap<Ident, Rc<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.