Table of Contents

Class BoundNode

Namespace
RDCore.SDK.Semantics.Binding
Assembly
RDCore.SDK.dll

A node of the bound tree (IR lowering §3.1): an expression, with what the static semantics decided of it once - what a name refers to, the plan of an operation - so that evaluating it does not decide it again.

public abstract record BoundNode : IEquatable<BoundNode>
Inheritance
BoundNode
Implements
Derived
Inherited Members

Remarks

A bound node keeps the expression it was bound from: its Identity and Location are what an error, a fact and the debugger are keyed by.

A binding is true of the scopes it was made in (Bind(StaticEvaluationContext, ExpressionNode, FrameLayout?)): a name is bound to the symbol it resolves to in them, which a symbol defined later can change. Whoever keeps a bound tree keeps the scopes with it, and binds the expression again when they are not the session's.

Constructors

BoundNode(ExpressionNode)

A node of the bound tree (IR lowering §3.1): an expression, with what the static semantics decided of it once - what a name refers to, the plan of an operation - so that evaluating it does not decide it again.

protected BoundNode(ExpressionNode Expression)

Parameters

Expression ExpressionNode

The expression this node was bound from.

Remarks

A bound node keeps the expression it was bound from: its Identity and Location are what an error, a fact and the debugger are keyed by.

A binding is true of the scopes it was made in (Bind(StaticEvaluationContext, ExpressionNode, FrameLayout?)): a name is bound to the symbol it resolves to in them, which a symbol defined later can change. Whoever keeps a bound tree keeps the scopes with it, and binds the expression again when they are not the session's.

Properties

Expression

The expression this node was bound from.

public ExpressionNode Expression { get; init; }

Property Value

ExpressionNode