NamedRule[S: (Any #read & Equatable[S]), optional D: Any #share, optional V: Any #share]¶
Represents a named grammar rule. Memoization and left-recursion handling happens per named Rule
.
class ref NamedRule[S: (Any #read & Equatable[S]), optional D: Any #share, optional V: Any #share] is
RuleNodeWithBody[S, D, V] ref
Implements¶
- RuleNodeWithBody[S, D, V] ref
Constructors¶
create¶
new ref create(
name': String val,
body': (RuleNode[S, D, V] ref | None val) = reference,
action': (Action[S, D, V] val | None val) = reference,
memoize': Bool val = false)
: NamedRule[S, D, V] ref^
Parameters¶
- name': String val
- body': (RuleNode[S, D, V] ref | None val) = reference
- action': (Action[S, D, V] val | None val) = reference
- memoize': Bool val = false
Returns¶
- NamedRule[S, D, V] ref^
Public fields¶
let name: String val¶
let memoize: Bool val¶
var left_recursive: Bool val¶
Public Functions¶
action¶
Returns¶
body¶
Returns¶
has_body¶
Returns¶
- Bool val
set_body¶
fun ref set_body(
body': RuleNode[S, D, V] ref,
action': (Action[S, D, V] val | None val) = reference)
: None val
Parameters¶
Returns¶
- None val
set_left_recursive¶
Returns¶
- None val
call¶
fun box call(
depth: USize val,
loc: Loc[S] val)
: (_BindFrame[S, D, V] ref | _CondFrame[S, D, V] ref | _ConjFrame[S, D, V] ref |
_DisjFrame[S, D, V] ref | _ErrorFrame[S, D, V] ref | _LiteralFrame[S, D, V] ref |
_LookFrame[S, D, V] ref | _NamedRuleFrame[S, D, V] ref | _NegFrame[S, D, V] ref |
_SingleFrame[S, D, V] ref | _StarFrame[S, D, V] ref)
Parameters¶
Returns¶
- (_BindFrame[S, D, V] ref | _CondFrame[S, D, V] ref | _ConjFrame[S, D, V] ref | _DisjFrame[S, D, V] ref | _ErrorFrame[S, D, V] ref | _LiteralFrame[S, D, V] ref | _LookFrame[S, D, V] ref | _NamedRuleFrame[S, D, V] ref | _NegFrame[S, D, V] ref | _SingleFrame[S, D, V] ref | _StarFrame[S, D, V] ref)