pub enum AppArg {
Optional {
q: OptionalTok,
value: Atomic,
},
Omission(OmissionTok),
Atom {
stage: Option<StagePrefix>,
excl: Option<UnopExclamTok>,
atom: Atomic,
accesses: Vec<AccessSeg>,
},
Ctor(CtorTok),
Bundled {
opts: CstOptArgs,
excl: Option<UnopExclamTok>,
atom: Atomic,
accesses: Vec<AccessSeg>,
},
BundledCtor {
opts: CstOptArgs,
ctor: CtorTok,
},
}Expand description
One application-chain argument: an optional-argument value (?: arg), an omitted optional argument (?*), a plain atomic value
(with its own optional ! prefix and #access suffixes, mirroring
AppExpr’s head position — each nxunsub/nxbot in the nxapp
chain is independent), or a bare constructor applied nullarily
(nxapp CONSTRUCTOR).
Variants§
Optional
?: arg (nxapp OPTIONAL nxunsub, simplified to a bare
Atomic operand rather than the full nxunsub).
Omission(OmissionTok)
?* (nxapp OMISSION).
Atom
Ctor(CtorTok)
Bundled
?(l = e, …) atom — a SATySFi 0.1 labeled-optional application
bundle paired with the positional argument it precedes (pairing
them in one arm rejects a dangling trailing bundle f x ?(l=1) at
parse time, as upstream does). Additive 0.1 node; the ?(-head is
token-disjoint from every 0.0.6 AppArg arm (0.0.6’s Optional
is ?:-headed, a distinct token), so no previously-parsing input
changes shape. Elaboration rejects it under a V0_0 version gate.
BundledCtor
?(l = e, …) Ctor — as AppArg::Bundled but the positional
argument is a bare constructor.
Trait Implementations§
Source§impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for AppArgwhere
__SyanMacro_Atom: Spanned + Clone,
OptionalTok: Parse<__SyanMacro_Atom>,
Atomic: Parse<__SyanMacro_Atom>,
OmissionTok: Parse<__SyanMacro_Atom>,
Option<StagePrefix>: Parse<__SyanMacro_Atom>,
Option<UnopExclamTok>: Parse<__SyanMacro_Atom>,
Vec<AccessSeg>: Parse<__SyanMacro_Atom>,
CtorTok: Parse<__SyanMacro_Atom>,
CstOptArgs: Parse<__SyanMacro_Atom>,
impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for AppArgwhere
__SyanMacro_Atom: Spanned + Clone,
OptionalTok: Parse<__SyanMacro_Atom>,
Atomic: Parse<__SyanMacro_Atom>,
OmissionTok: Parse<__SyanMacro_Atom>,
Option<StagePrefix>: Parse<__SyanMacro_Atom>,
Option<UnopExclamTok>: Parse<__SyanMacro_Atom>,
Vec<AccessSeg>: Parse<__SyanMacro_Atom>,
CtorTok: Parse<__SyanMacro_Atom>,
CstOptArgs: Parse<__SyanMacro_Atom>,
Source§type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
<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.