Struct BaseParserRuleContext

Source
pub struct BaseParserRuleContext<'input, Ctx: CustomRuleContext<'input>> {
    pub exception: Option<Box<ANTLRError>>,
    /* private fields */
}
Expand description

Default rule context implementation that keeps everything provided by parser

Fields§

§exception: Option<Box<ANTLRError>>

error if there was any in this node

Implementations§

Source§

impl<'input, Ctx: CustomRuleContext<'input> + 'input> BaseParserRuleContext<'input, Ctx>

Source

pub fn new_parser_ctx( parent_ctx: Option<Rc<<Ctx::Ctx as ParserNodeType<'input>>::Type>>, invoking_state: isize, ext: Ctx, ) -> Self

Source

pub fn copy_from<T: ParserRuleContext<'input, TF = Ctx::TF, Ctx = Ctx::Ctx> + ?Sized>( ctx: &T, ext: Ctx, ) -> Self

Trait Implementations§

Source§

impl<'input, Ctx: CustomRuleContext<'input>> Borrow<Ctx> for BaseParserRuleContext<'input, Ctx>

Source§

fn borrow(&self) -> &Ctx

Immutably borrows from an owned value. Read more
Source§

impl<'input, Ctx: CustomRuleContext<'input>> BorrowMut<Ctx> for BaseParserRuleContext<'input, Ctx>

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<'input, Ctx: CustomRuleContext<'input>> CustomRuleContext<'input> for BaseParserRuleContext<'input, Ctx>

Source§

type TF = <Ctx as CustomRuleContext<'input>>::TF

Source§

type Ctx = <Ctx as CustomRuleContext<'input>>::Ctx

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_alt_number(&self) -> isize

Source§

fn set_alt_number(&self, _alt_number: isize)

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§

impl<'input, Ctx: CustomRuleContext<'input>> Debug for BaseParserRuleContext<'input, Ctx>

Source§

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

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

impl<'input, Ctx: CustomRuleContext<'input>> DerefMut for BaseParserRuleContext<'input, Ctx>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<'input, Ctx: CustomRuleContext<'input> + TidAble<'input>> ParseTree<'input> for BaseParserRuleContext<'input, Ctx>

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, Ctx: CustomRuleContext<'input> + TidAble<'input>> ParserRuleContext<'input> for BaseParserRuleContext<'input, Ctx>

Source§

fn set_exception(&self, _e: ANTLRError)

Source§

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

Source§

fn start<'a>(&'a self) -> Ref<'a, <Ctx::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<<Ctx::TF as TokenFactory<'input>>::Tok>)

Source§

fn stop<'a>(&'a self) -> Ref<'a, <Ctx::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<<Ctx::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, Ctx: CustomRuleContext<'input>> RuleContext<'input> for BaseParserRuleContext<'input, Ctx>

Source§

fn get_invoking_state(&self) -> isize

Internal parser state
Source§

fn set_invoking_state(&self, t: isize)

Sets internal parser state
Source§

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

Get parent context
Source§

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

Set parent context
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§

impl<'input, Ctx: CustomRuleContext<'input>> Tree<'input> for BaseParserRuleContext<'input, Ctx>

Source§

fn get_parent(&self) -> Option<Rc<<Ctx::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, Ctx: CustomRuleContext<'input>> Deref for BaseParserRuleContext<'input, Ctx>

Source§

type Target = Ctx

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'i, Ctx> TidAble<'i> for BaseParserRuleContext<'i, Ctx>
where Ctx: CustomRuleContext<'i> + TidAble<'i>,

Auto Trait Implementations§

§

impl<'input, Ctx> !Freeze for BaseParserRuleContext<'input, Ctx>

§

impl<'input, Ctx> !RefUnwindSafe for BaseParserRuleContext<'input, Ctx>

§

impl<'input, Ctx> !Send for BaseParserRuleContext<'input, Ctx>

§

impl<'input, Ctx> !Sync for BaseParserRuleContext<'input, Ctx>

§

impl<'input, Ctx> Unpin for BaseParserRuleContext<'input, Ctx>
where Ctx: Unpin, <<Ctx as CustomRuleContext<'input>>::TF as TokenFactory<'input>>::Tok: Unpin,

§

impl<'input, Ctx> !UnwindSafe for BaseParserRuleContext<'input, Ctx>

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.