The surface syntax of Distributed PlusCal algorithms, as accepted by the parser, prior to desugaring into explicit-goto form.
Positions are attached out-of-band via @@/posOf/match_source (Common/Position.lean),
not stored structurally in these types.
A reference to a (possibly indexed/field-accessed) variable, e.g. x[1][2].y. One entry
per path segment, in left-to-right textual order: .inl for a .field segment, .inr for a
[e₁, …, eₙ] bracket-index group.
- name : String
Instances For
Equations
- SurfacePlusCal.instReprRef = { reprPrec := SurfacePlusCal.instReprRef.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The filter/value expression of a multicast, e.g.
[m = self, n \in Actors \ {self} |-> Hello(m, n)].
Each bind is
(name, annotation, isEquality, expr);isEqualityistruefor=,falsefor\in.- val : β
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
A PlusCal statement. α carries comment annotations (as in SurfaceTLAPlus), β is the
embedded-expression type. A block (the body of if/while/with/either/…) is a flat
List (String ⊕ Statement α β): a leading label and the statement it labels are elements
of the same list; desugaring separates them into distinct fields.
- skip {α β : Type} : Statement α β
- goto {α β : Type} (label : String) : Statement α β
- print {α β : Type} (e : β) : Statement α β
- assign {α β : Type} : List (Ref β × β) → Statement α β
- if {α β : Type} (cond : β) (B₁ : List (String ⊕ Statement α β)) (B₂ : Option (List (String ⊕ Statement α β))) : Statement α β
- await {α β : Type} (e : β) : Statement α β
- with {α β : Type} (vars : List (String × α × Bool × β)) (B : List (String ⊕ Statement α β)) : Statement α β
- assert {α β : Type} (e : β) : Statement α β
- either {α β : Type} (branches : List (List (String ⊕ Statement α β))) : Statement α β
- while {α β : Type} (cond : β) (B : List (String ⊕ Statement α β)) : Statement α β
- receive {α β : Type} (c r : Ref β) : Statement α β
- send {α β : Type} (c : Ref β) (e : β) : Statement α β
- multicast {α β : Type} (c : String) (filter : MulticastFilter α β) : Statement α β
Instances For
Equations
Equations
Equations
- SurfacePlusCal.instBifunctorStatement = { bimap := fun {α α' β β' : Type} => SurfacePlusCal.Statement.bimap }
Instances For
Equations
- One or more equations did not get rendered due to their size.
The declarations at the top of an algorithm or process block.
(* annotations *) v (("=" | "∈") expr)?; theBoolistruefor=,falsefor∈.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
process(x ∈ S) ⋆ … / process(x = e) ⋆ ….
- ann : α
- isFair : Bool
Carried through for round-tripping only — this compiler never acts on it.
- name : String
- =|∈ : Bool
truefor=,falsefor∈. - id : β
- localState : Declarations α β
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
fifos c₁ : τ₁, …; P₁ ∥ … ∥ Pₙ.
- isFair : Bool
Round-tripped only, per
Process.isFair. - name : String
- globalState : Declarations α β
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.