Struct ParserState

Source
pub struct ParserState {
    pub allow_then: bool,
    pub allow_of: bool,
    pub allow_loop_control: bool,
    pub allow_return: bool,
    pub expr_end_at_eol: bool,
}
Expand description

State that can be used to determine if certain parse trees are valid (e.g. if a checking if a break expression is inside a loop).

The state cannot be mutated directly; it can only be changed when parsing using the Parser::try_parse_with_state method.

Fields§

§allow_then: bool

Whether a then expression is allowed in the current context.

then expressions are only allowed after the conditions of if, while and loop expressions.

§allow_of: bool

Whether an of expression is allowed in the current context.

of expressions are only allowed after the range of sum and product expressions.

§allow_loop_control: bool

Whether loop control expressions are allowed in the current context.

Loop control expressions are break and continue expressions. They are only allowed inside loop expressions, such as while, loop, and for.

§allow_return: bool

Whether a return expression is allowed in the current context.

return expressions are only allowed inside function assignments.

§expr_end_at_eol: bool

Whether to require the current expression to end at the end of the line.

This is enabled on when parsing the expression of a return or break expression. The expression returned by the return / break expression must lie on the same line as the return / break keyword to prevent confusion in cases like:

if k > n return

sub = n - k

Without this requirement, the return expression would eagerly consume the assignment sub = n - k, resulting in the above code being treated as:

if k > n {
   return sub = n - k
}

Which is almost certainly not what the user intended.

Trait Implementations§

Source§

impl Clone for ParserState

Source§

fn clone(&self) -> ParserState

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ParserState

Source§

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

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

impl Default for ParserState

Source§

fn default() -> ParserState

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.