Kernel-E
From Erights
(Difference between revisions)
Kevin Reid (Talk | contribs) (drop EMethodoid, add notes on former nodes) |
(→Node classes) |
||
Line 5: | Line 5: | ||
* [[ENode]] (abstract) | * [[ENode]] (abstract) | ||
** [[EExpr]] (abstract) — evaluate to a value | ** [[EExpr]] (abstract) — evaluate to a value | ||
- | *** [[AssignExpr]] — assignment | + | *** [[AssignExpr]]: [[NounExpr]] := [[Expr]] — assignment |
- | *** [[BindingExpr]] (given [[guard-based auditing]]) | + | *** [[BindingExpr]]: && [[NounExpr]] — extract binding of a noun (given [[guard-based auditing]]) |
- | *** [[CallExpr]] | + | *** [[CallExpr]]: [[EExpr]].''string''([[EExpr]]*) |
- | *** [[CatchExpr]] | + | *** [[CatchExpr]]: try { [[EExpr]] } catch [[Pattern]] { [[EExpr]] } |
- | *** [[DefineExpr]] — match a pattern against a value | + | *** [[DefineExpr]]: def [[Pattern]] ''(''exit [[EExpr]]'')?'' := [[Expr]] — match a pattern against a value |
*** [[EscapeExpr]] — nonlocal exits | *** [[EscapeExpr]] — nonlocal exits | ||
*** [[FinallyExpr]] — cleanup block | *** [[FinallyExpr]] — cleanup block |
Revision as of 03:33, 4 January 2009
Node classes
The following node types may occur in a Kernel-E program. The hierarchy indicates subtype relationships.
- ENode (abstract)
- EExpr (abstract) — evaluate to a value
- AssignExpr: NounExpr := Expr — assignment
- BindingExpr: && NounExpr — extract binding of a noun (given guard-based auditing)
- CallExpr: EExpr.string(EExpr*)
- CatchExpr: try { EExpr } catch Pattern { EExpr }
- DefineExpr: def Pattern (exit EExpr)? := Expr — match a pattern against a value
- EscapeExpr — nonlocal exits
- FinallyExpr — cleanup block
- HideExpr
- IfExpr
- LiteralExpr
- MetaContextExpr
- MetaStateExpr
- NounExpr
- ObjectExpr — create an object
- SeqExpr — evaluate in order, return last value
- UnspecifiedExpr — placeholder for signature redactions
- Pattern (abstract) — match a value and succeed or fail
- NounPattern — patterns which bind one noun
- BindingPattern (given guard-based auditing) — bind to a given binding object
- FinalPattern — bind to a FinalSlot with a given value
- VarPattern — bind to a VarSlot or GuardedSlot with a given value
- IgnorePattern — discard value, possibly testing with a guard first
- ListPattern — match each part of a tuple
- ViaPattern — transform the specimen
- NounPattern — patterns which bind one noun
- EScriptoid (abstract) (proposed) — defines the behavior of an ObjectExpr
- EMethod
- AuditorExprs (proposed) — see ObjectExpr
- EExpr (abstract) — evaluate to a value
Formerly kernel nodes
These node types were once part of Kernel-E but have been removed or made non-kernel.
- SlotExpr, SlotPattern — now nonkernel in terms of BindingExpr and BindingPattern
- MatchBindExpr — now nonkernel in terms of DefineExpr
- SuchThatPattern — now nonkernel in terms of ViaPattern