Skip to main content

PrattDef

Struct PrattDef 

Source
pub struct PrattDef {
    pub operand: Box<Option<Combinator>>,
    pub prefix_ops: Vec<PrefixOp>,
    pub infix_ops: Vec<InfixOp>,
    pub postfix_ops: Vec<PostfixOp>,
    pub ternary: Option<TernaryOp>,
}
Expand description

Pratt parsing definition for expression parsing Pratt expression parser definition.

IMPORTANT: The parser generator does NOT handle whitespace automatically. All whitespace handling must be done explicitly in the grammar DSL. This includes whitespace between operators and operands.

For expressions with postfix operators followed by infix operators (e.g., “a.x * b”), the grammar must ensure whitespace is consumed. Common patterns:

  1. Have the operand rule consume surrounding whitespace
  2. Use pattern-based operators that include whitespace in their patterns
  3. Structure the grammar so postfix chains are parsed as complete units

DO NOT add automatic/hardcoded whitespace handling to the parser generator.

Fields§

§operand: Box<Option<Combinator>>

The operand parser (primary expressions)

§prefix_ops: Vec<PrefixOp>

Prefix operators

§infix_ops: Vec<InfixOp>

Infix operators

§postfix_ops: Vec<PostfixOp>

Postfix operators

§ternary: Option<TernaryOp>

Ternary operator (if any)

Trait Implementations§

Source§

impl Clone for PrattDef

Source§

fn clone(&self) -> PrattDef

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 PrattDef

Source§

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

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

impl Default for PrattDef

Source§

fn default() -> PrattDef

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.