welly_parser::stmt

Enum Stmt

source
pub enum Stmt {
    Expr(MaybeExpr),
    Assign(MaybeExpr, AssignOp, MaybeExpr),
    If(MaybeExpr, Brace, MaybeElse),
    While(MaybeExpr, Brace, MaybeElse),
    For(MaybeExpr, Brace, MaybeElse),
    Switch(MaybeExpr, Vec<Case>, MaybeElse),
    Verb(Verb, MaybeExpr),
}
Expand description

Represents a statement, including the trailing ; if any.

Stmts frequently contain Exprs, and never two consecutively. We allow every such Expr to be optional, so that a later pass can report a helpful error when it’s missing.

Variants§

§

Expr(MaybeExpr)

E.g. print("Hello");.

§

Assign(MaybeExpr, AssignOp, MaybeExpr)

E.g. x += 1;.

§

If(MaybeExpr, Brace, MaybeElse)

E.g. if ... {...} else {...}.

Allow the condition Expr to be None, though it’s an error.

§

While(MaybeExpr, Brace, MaybeElse)

E.g. while ... {...} else {...}.

Allow the condition Expr to be None, though it’s an error.

§

For(MaybeExpr, Brace, MaybeElse)

E.g. for ... in ... {...} else {...}.

Allow an arbitrary Expr, or a missing one, though anything but ... in ... is an error.

§

Switch(MaybeExpr, Vec<Case>, MaybeElse)

E.g. switch ... case ... {...} case ... {...} else {...}.

Allow the discriminant Expr to be None, though it’s an error.

§

Verb(Verb, MaybeExpr)

E.g. return ...; or continue;.

Allow the Expr to be present or missing, though for some Verbs one of those cases is an error.

Trait Implementations§

source§

impl Debug for Stmt

source§

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

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

impl Tree for Stmt

source§

fn declare_keywords(declare: impl FnMut(&'static str, Self))
where Self: Sized,

declare() all the keywords whose parse trees are Selfs. Read more

Auto Trait Implementations§

§

impl Freeze for Stmt

§

impl !RefUnwindSafe for Stmt

§

impl !Send for Stmt

§

impl !Sync for Stmt

§

impl Unpin for Stmt

§

impl !UnwindSafe for Stmt

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