Kernel-E
From Erights
Kernel-E is the subset of the E language which is understood by evaluators. Full E is converted to Kernel-E by expansion.
XXX needs more info
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 — assignment
- BindingExpr (given guard-based auditing) — extract binding of a noun
- CallExpr
- CatchExpr
- DefineExpr — 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
Objects implied by Kernel-E semantics
Kernel-E semantics involves the following specific object types:
- A method matcher's pattern is matched against a Tuple[String, ConstList].
- IfExpr coerces to Boolean.
- ListPattern coerces to ConstList.
- XXX Details of miranda methods.
- XXX Are there any kernel expressions that return null?.
XXX This list may not be complete. The original work here was done in 2006. —Kevin Reid 13:01, 13 May 2011 (CDT)