Struct LeafNode

Source
pub struct LeafNode<'input, Node: ParserNodeType<'input>, T: 'static> {
    pub symbol: <Node::TF as TokenFactory<'input>>::Tok,
    /* private fields */
}
Expand description

Generic leaf AST node

Fields§

§symbol: <Node::TF as TokenFactory<'input>>::Tok

Token, this leaf consist of

Implementations§

Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> LeafNode<'input, Node, T>

Source

pub fn new(symbol: <Node::TF as TokenFactory<'input>>::Tok) -> Self

creates new leaf node

Trait Implementations§

Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> CustomRuleContext<'input> for LeafNode<'input, Node, T>

Source§

type TF = <Node as ParserNodeType<'input>>::TF

Source§

type Ctx = Node

Type that describes type of context nodes, stored in this context
Source§

fn get_rule_index(&self) -> usize

Rule index that corresponds to this context type
Source§

fn get_node_text(&self, rule_names: &[&str]) -> String

Returns text representation of current node type, rule name for context nodes and token text for terminal nodes
Source§

fn get_alt_number(&self) -> isize

Source§

fn set_alt_number(&self, _alt_number: isize)

Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> Debug for LeafNode<'input, Node, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> ParseTree<'input> for LeafNode<'input, Node, T>

Source§

fn get_source_interval(&self) -> Interval

Return an {@link Interval} indicating the index in the {@link TokenStream} of the first and last token associated with this subtree. If this node is a leaf, then the interval represents a single token and has interval i..i for token index i.
Source§

fn get_text(&self) -> String

Return combined text of this AST node. To create resulting string it does traverse whole subtree, also it includes only tokens added to the parse tree Read more
Source§

fn to_string_tree( &self, r: &dyn Recognizer<'input, TF = Self::TF, Node = Self::Ctx>, ) -> String

Print out a whole tree, not just a node, in LISP format (root child1 .. childN). Print just a node if this is a leaf. We have to know the recognizer so we can get rule names.
Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> ParserRuleContext<'input> for LeafNode<'input, Node, T>

Source§

fn set_exception(&self, _e: ANTLRError)

Source§

fn set_start(&self, _t: Option<<Self::TF as TokenFactory<'input>>::Tok>)

Source§

fn start<'a>(&'a self) -> Ref<'a, <Self::TF as TokenFactory<'input>>::Inner>
where 'input: 'a,

Get the initial token in this context. Note that the range from start to stop is inclusive, so for rules that do not consume anything (for example, zero length or error productions) this token may exceed stop.
Source§

fn start_mut<'a>( &'a self, ) -> RefMut<'a, <Self::TF as TokenFactory<'input>>::Tok>
where 'input: 'a,

Source§

fn set_stop(&self, _t: Option<<Self::TF as TokenFactory<'input>>::Tok>)

Source§

fn stop<'a>(&'a self) -> Ref<'a, <Self::TF as TokenFactory<'input>>::Inner>
where 'input: 'a,

Get the final token in this context. Note that the range from start to stop is inclusive, so for rules that do not consume anything (for example, zero length or error productions) this token may precede start.
Source§

fn stop_mut<'a>(&'a self) -> RefMut<'a, <Self::TF as TokenFactory<'input>>::Tok>
where 'input: 'a,

Source§

fn add_child(&self, _child: Rc<<Self::Ctx as ParserNodeType<'input>>::Type>)

Source§

fn remove_last_child(&self)

Source§

fn child_of_type<T>(&self, pos: usize) -> Option<Rc<T>>
where T: ParserRuleContext<'input, TF = Self::TF, Ctx = Self::Ctx> + 'input, Self: Sized,

Source§

fn children_of_type<T>(&self) -> Vec<Rc<T>>
where T: ParserRuleContext<'input, TF = Self::TF, Ctx = Self::Ctx> + 'input, Self: Sized,

Source§

fn get_token( &self, ttype: isize, pos: usize, ) -> Option<Rc<TerminalNode<'input, Self::Ctx>>>

Source§

fn get_tokens(&self, ttype: isize) -> Vec<Rc<TerminalNode<'input, Self::Ctx>>>

Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> RuleContext<'input> for LeafNode<'input, Node, T>

Source§

fn get_invoking_state(&self) -> isize

Internal parser state
Source§

fn set_invoking_state(&self, _t: isize)

Sets internal parser state
Source§

fn is_empty(&self) -> bool

A context is empty if there is no invoking state; meaning nobody called current context. Which is usually true for the root of the syntax tree
Source§

fn get_parent_ctx( &self, ) -> Option<Rc<<Self::Ctx as ParserNodeType<'input>>::Type>>

Get parent context
Source§

fn set_parent( &self, _parent: &Option<Rc<<Self::Ctx as ParserNodeType<'input>>::Type>>, )

Set parent context
Source§

impl<'input, Node: ParserNodeType<'input>, T: 'static> Tree<'input> for LeafNode<'input, Node, T>

Source§

fn get_parent(&self) -> Option<Rc<<Self::Ctx as ParserNodeType<'input>>::Type>>

Source§

fn has_parent(&self) -> bool

Source§

fn get_payload(&self) -> Box<dyn Any>

Source§

fn get_child( &self, _i: usize, ) -> Option<Rc<<Self::Ctx as ParserNodeType<'input>>::Type>>

Source§

fn get_child_count(&self) -> usize

Source§

fn get_children<'a>( &'a self, ) -> Box<dyn Iterator<Item = Rc<<Self::Ctx as ParserNodeType<'input>>::Type>> + 'a>
where 'input: 'a,

Source§

impl<'input, Node, T: 'static> TidAble<'input> for LeafNode<'input, Node, T>
where Node: ParserNodeType<'input> + TidAble<'input>,

Auto Trait Implementations§

§

impl<'input, Node, T> Freeze for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: Freeze,

§

impl<'input, Node, T> RefUnwindSafe for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: RefUnwindSafe, T: RefUnwindSafe,

§

impl<'input, Node, T> Send for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: Send, T: Send,

§

impl<'input, Node, T> Sync for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: Sync, T: Sync,

§

impl<'input, Node, T> Unpin for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: Unpin, T: Unpin,

§

impl<'input, Node, T> UnwindSafe for LeafNode<'input, Node, T>
where <<Node as ParserNodeType<'input>>::TF as TokenFactory<'input>>::Tok: UnwindSafe, T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AnyExt for T
where T: Any + ?Sized,

Source§

fn downcast_ref<T>(this: &Self) -> Option<&T>
where T: Any,

Attempts to downcast this to T behind reference
Source§

fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>
where T: Any,

Attempts to downcast this to T behind mutable reference
Source§

fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Any,

Attempts to downcast this to T behind Rc pointer
Source§

fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Any,

Attempts to downcast this to T behind Arc pointer
Source§

fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Any,

Attempts to downcast this to T behind Box pointer
Source§

fn downcast_move<T>(this: Self) -> Option<T>
where T: Any, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, X> CoerceTo<T> for X
where T: CoerceFrom<X> + ?Sized,

Source§

fn coerce_rc_to(self: Rc<X>) -> Rc<T>

Source§

fn coerce_box_to(self: Box<X>) -> Box<T>

Source§

fn coerce_ref_to(&self) -> &T

Source§

fn coerce_mut_to(&mut self) -> &mut T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'input, T> RuleContextExt<'input> for T
where T: ParserRuleContext<'input> + 'input + ?Sized,

Source§

fn to_string<Z>( self: &Rc<T>, rule_names: Option<&[&str]>, stop: Option<Rc<Z>>, ) -> String
where Z: ParserRuleContext<'input, Ctx = <T as CustomRuleContext<'input>>::Ctx, TF = <T as CustomRuleContext<'input>>::TF> + 'input + ?Sized, <T as CustomRuleContext<'input>>::Ctx: ParserNodeType<'input, Type = Z>, T: CoerceTo<Z>,

Prints list of parent rules
Source§

fn accept_children<V>(&self, visitor: &mut V)
where V: ParseTreeVisitor<'input, <T as CustomRuleContext<'input>>::Ctx> + ?Sized, <<T as CustomRuleContext<'input>>::Ctx as ParserNodeType<'input>>::Type: VisitableDyn<V>,

Source§

impl<'a, T> Tid<'a> for T
where T: TidAble<'a> + ?Sized,

Source§

fn self_id(&self) -> TypeId

Returns type id of the type of self Read more
Source§

fn id() -> TypeId

Returns type id of this type
Source§

impl<'a, X> TidExt<'a> for X
where X: Tid<'a> + ?Sized,

Source§

fn is<T>(&self) -> bool
where T: Tid<'a>,

Returns true if type behind self is equal to the type of T.
Source§

fn downcast_ref<'b, T>(&'b self) -> Option<&'b T>
where T: Tid<'a>,

Attempts to downcast self to T behind reference
Source§

fn downcast_mut<'b, T>(&'b mut self) -> Option<&'b mut T>
where T: Tid<'a>,

Attempts to downcast self to T behind mutable reference
Source§

fn downcast_rc<T>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Tid<'a>,

Attempts to downcast self to T behind Rc pointer
Source§

fn downcast_arc<T>(self: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Tid<'a>,

Attempts to downcast self to T behind Arc pointer
Source§

fn downcast_box<T>(self: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Tid<'a>,

Attempts to downcast self to T behind Box pointer
Source§

fn downcast_move<T>(self) -> Option<T>
where T: Tid<'a>, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.