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 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(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
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>>
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.