Skip to main content

Atomic

Enum Atomic 

Source
pub enum Atomic {
Show 19 variants Length(LengthTok), Float(FloatTok), Int(IntTok), Literal(LiteralTok), True(KwTrue), False(KwFalse), Ctor(CtorTok), Var(VarTok), VarWithMod(VarWithModTok), OpRef(OpNameTok), Command { kw: CommandTok, name: AnyHorzCmdTok, }, Unit { paren: UnitParen, }, Paren { paren: ParenGroup<()>, inner: Box<ParenBody>, }, OpenModule { grp: OpenModuleGroup<()>, body: Box<ParenBody>, }, Record { rec: RecordGroup<()>, body: RecordBody, }, List { list: ListGroup<()>, items: Vec<ListItem>, }, InlineText { igrp: InlineGroup<()>, elems: Vec<InlineElem>, }, BlockText { bgrp: BlockGroup<()>, elems: Vec<BlockElem>, }, MathText { mgrp: MathGroup<()>, elems: Vec<MathErased>, },
}
Expand description

nxbot (plus the ctor-head case usually found in nxun): an atomic expression.

Variants§

§

Length(LengthTok)

§

Float(FloatTok)

§

Int(IntTok)

§

Literal(LiteralTok)

§

True(KwTrue)

§

False(KwFalse)

§

Ctor(CtorTok)

A bare constructor, e.g. None, or the head of Some 1.

§

Var(VarTok)

§

VarWithMod(VarWithModTok)

Mod.x — a module-qualified variable (VARWITHMOD).

§

OpRef(OpNameTok)

( ‹op› ) — a bare reference to a (possibly user-defined) operator as a first-class value, e.g. (+++), (-->) (nxbot’s LPAREN binop RPAREN alternative — the same syntax super::BindName accepts in binding position, here used as an ordinary atomic expression). Resolves via the same name BinOpTok::op_text yields, exactly like Var (elaborate.rs).

§

Command

command \cmd (upstream nxapp: COMMAND hcmdUTContentOf(mods, csnm)): a first-class value that simply names an inline command’s own binding — no argument tail, so modeling it as an atom (rather than upstream’s nxapp level) is strictly simpler and covers every bundled usage (always parenthesized, e.g. (command \math)). Only the horizontal form is spelled upstream; if a package ever writes command +cmd/a math form, extend with an AnyVertCmdTok/math alternative then.

§

Unit

()

Fields

§

Paren

( expr ) or ( expr, expr, … ) (the latter elaborates to a tuple).

Fields

§

OpenModule

Mod.(e)open Mod in e (nxbot’s OPENMODULE nxlet RPAREN production). Reuses ParenBody exactly like Atomic::Paren above (so Mod.(e, e, …) would elaborate to a tuple the same way, though no bundled package writes it that way) — the Mod.( sigil is the open delimiter (OpenModuleTok, carrying the module name), closed by a plain ). Elaborated via the same machinery as Expr::OpenIn (elaborate.rs’s open_module helper).

§

Record

(| label = expr; … |) or (| base with label = expr; … |) (nxrecordsynt; see RecordBody).

Fields

§

List

[ expr; … ]

Fields

§items: Vec<ListItem>
§

InlineText

{ inline text }

Fields

§

BlockText

'< block text >

Fields

§

MathText

${ math } (nxbot’s BMATHGRP mathblock EMATHGRP case).

Fields

Trait Implementations§

Source§

impl Clone for Atomic

Source§

fn clone(&self) -> Atomic

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Atomic

Source§

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

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

impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for Atomic
where __SyanMacro_Atom: Spanned + Clone, LengthTok: Parse<__SyanMacro_Atom>, FloatTok: Parse<__SyanMacro_Atom>, IntTok: Parse<__SyanMacro_Atom>, LiteralTok: Parse<__SyanMacro_Atom>, KwTrue: Parse<__SyanMacro_Atom>, KwFalse: Parse<__SyanMacro_Atom>, CtorTok: Parse<__SyanMacro_Atom>, VarTok: Parse<__SyanMacro_Atom>, VarWithModTok: Parse<__SyanMacro_Atom>, OpNameTok: Parse<__SyanMacro_Atom>, CommandTok: Parse<__SyanMacro_Atom>, AnyHorzCmdTok: Parse<__SyanMacro_Atom>, UnitParen: Parse<__SyanMacro_Atom>, ParenGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_paren_Atomic_Paren_7059716982297851496: Parse<__SyanMacro_Atom>, OpenModuleGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_grp_Atomic_OpenModule_7059716982297851496: Parse<__SyanMacro_Atom>, RecordGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_rec_Atomic_Record_7059716982297851496: Parse<__SyanMacro_Atom>, ListGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_list_Atomic_List_7059716982297851496: Parse<__SyanMacro_Atom>, InlineGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_igrp_Atomic_InlineText_7059716982297851496: Parse<__SyanMacro_Atom>, BlockGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_bgrp_Atomic_BlockText_7059716982297851496: Parse<__SyanMacro_Atom>, MathGroup<()>: GroupShape<__SyanMacro_Atom>, __SyanSubstructOfOwn_mgrp_Atomic_MathText_7059716982297851496: Parse<__SyanMacro_Atom>,

Source§

type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>

Every error must be convertible to the universal one, so a field’s failure can become the enclosing type’s failure with no per-field where-predicate. Stating it HERE rather than at each derived impl is what keeps it out of the obligation graph: a per-field <FieldTy as Parse<Atom>>::Error: Into<…> predicate re-creates a projection cycle on a recursive field (E0275), which decycle’s bound-peeling does not break.
Source§

fn parse_stream<__SyanMacro_S: ParseStream<Atom = __SyanMacro_Atom>>( __syan_stream: &mut __SyanMacro_S, ) -> Result<Self, Self::Error>

Parse from a reborrowable stream. Read more
Source§

fn parse(stream: impl IntoParseStream<Atom = Atom>) -> Result<Self, Self::Error>

Parse from anything that can become a stream — String, TokenStream, an existing stream. Read more
Source§

fn attempt(self) -> Attempt<Self>

Wrap this value in Attempt, the atomic-parse marker: parsing an Attempt<Self> parses Self but rewinds the stream on failure (it requires Atom: Clone). This is the value constructor; value.attempt() is sugar for Attempt(value).
Source§

impl PartialEq for Atomic

Source§

fn eq(&self, other: &Atomic) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Atomic

Source§

impl<__SyanMacro_Atom> Unparse<__SyanMacro_Atom> for Atomic
where LengthTok: Unparse<__SyanMacro_Atom>, FloatTok: Unparse<__SyanMacro_Atom>, IntTok: Unparse<__SyanMacro_Atom>, LiteralTok: Unparse<__SyanMacro_Atom>, KwTrue: Unparse<__SyanMacro_Atom>, KwFalse: Unparse<__SyanMacro_Atom>, CtorTok: Unparse<__SyanMacro_Atom>, VarTok: Unparse<__SyanMacro_Atom>, VarWithModTok: Unparse<__SyanMacro_Atom>, OpNameTok: Unparse<__SyanMacro_Atom>, CommandTok: Unparse<__SyanMacro_Atom>, AnyHorzCmdTok: Unparse<__SyanMacro_Atom>, UnitParen: Unparse<__SyanMacro_Atom>, ParenGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_paren_Atomic_Paren_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, OpenModuleGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_grp_Atomic_OpenModule_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, RecordGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_rec_Atomic_Record_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, ListGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_list_Atomic_List_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, InlineGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_igrp_Atomic_InlineText_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, BlockGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_bgrp_Atomic_BlockText_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>, MathGroup<()>: GroupUnparse<__SyanMacro_Atom>, for<'syan_substruct_ref> __SyanSubstructOfRef_mgrp_Atomic_MathText_7059716982297851496<'syan_substruct_ref>: Unparse<__SyanMacro_Atom>,

Source§

fn unparse<__Syan_Emitter: Emitter<__SyanMacro_Atom>>( &self, __syan_sink: &mut __Syan_Emitter, ) -> Result<(), <__Syan_Emitter as Emitter<__SyanMacro_Atom>>::Error>

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

Source§

fn clone(&self) -> T

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

Source§

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

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.