Package-level declarations

The abstract syntax of the internal language.

Types

Link copied to clipboard
class AssertionNode(val condition: AtomicExpressionNode, val sourceLocation: SourceLocation) : StatementNode

Asserting that a condition is true, and failing otherwise.

Link copied to clipboard

An expression that requires no computation to reduce to a value.

Link copied to clipboard
class AuthorityDelegationDeclarationNode(val from: LabelNode, val to: LabelNode, val delegationProjection: DelegationProjection, val sourceLocation: SourceLocation) : DelegationDeclarationNode

Declaration of a delegation.

Link copied to clipboard

A sequence of statements.

Link copied to clipboard
class BreakNode(val jumpLabel: JumpLabelNode, val sourceLocation: SourceLocation) : ControlNode

Breaking out of a loop.

Link copied to clipboard

An external input or an output.

Link copied to clipboard
sealed class ControlNode : StatementNode

A statement that affects control flow.

Link copied to clipboard

Constructing a new object and binding it to a variable.

Link copied to clipboard
class DeclassificationNode(val expression: AtomicExpressionNode, val fromLabel: LabelNode?, val toLabel: LabelNode, val sourceLocation: SourceLocation) : DowngradeNode

Revealing the result of an expression (reducing confidentiality).

Link copied to clipboard
abstract class DelegationDeclarationNode(val from: LabelNode, val to: LabelNode, val delegationProjection: DelegationProjection, val sourceLocation: SourceLocation) : TopLevelDeclarationNode
Link copied to clipboard

Reducing the confidentiality or increasing the integrity of the result of an expression.

Link copied to clipboard
class EndorsementNode(val expression: AtomicExpressionNode, val fromLabel: LabelNode, val toLabel: LabelNode?, val sourceLocation: SourceLocation) : DowngradeNode

Trusting the result of an expression (increasing integrity).

Link copied to clipboard
Link copied to clipboard
sealed class ExpressionNode : Node

A computation that produces a result.

Link copied to clipboard
sealed class FunctionArgumentNode : Node
Link copied to clipboard
class FunctionCallNode(val name: FunctionNameNode, val arguments: Arguments<FunctionArgumentNode>, val sourceLocation: SourceLocation) : ControlNode

Function call.

Link copied to clipboard
class FunctionDeclarationNode(val name: FunctionNameNode, val labelParameters: Arguments<LabelVariableNode>, val parameters: Arguments<ParameterNode>, val labelConstraints: Arguments<IFCDelegationDeclarationNode>, val pcLabel: LabelNode, val body: BlockNode, val sourceLocation: SourceLocation) : TopLevelDeclarationNode

A function declaration associating a name with code.

Link copied to clipboard
class HostDeclarationNode(val name: HostNode, val sourceLocation: SourceLocation) : TopLevelDeclarationNode

Declaration of a participant and their authority.

Link copied to clipboard
class IFCDelegationDeclarationNode(val from: LabelNode, val to: LabelNode, val delegationProjection: DelegationProjection, val sourceLocation: SourceLocation) : DelegationDeclarationNode

Declaration of a delegation.

Link copied to clipboard
class IfNode(val guard: AtomicExpressionNode, val thenBranch: BlockNode, val elseBranch: BlockNode, val sourceLocation: SourceLocation) : ControlNode

Executing statements conditionally.

Link copied to clipboard
class InfiniteLoopNode(val body: BlockNode, val jumpLabel: JumpLabelNode, val sourceLocation: SourceLocation) : ControlNode

A loop that is executed until a break statement is encountered.

Link copied to clipboard
class InputNode(val type: ValueTypeNode, val host: HostNode, val sourceLocation: SourceLocation) : ExpressionNode, CommunicationNode

An external input.

Link copied to clipboard
class LetNode(val name: TemporaryNode, val value: ExpressionNode, val protocol: ProtocolNode?, val sourceLocation: SourceLocation) : SimpleStatementNode, VariableDeclarationNode

Binding the result of an expression to a new temporary variable.

Link copied to clipboard
class LiteralNode(val value: Value, val sourceLocation: SourceLocation) : AtomicExpressionNode

A literal constant.

Link copied to clipboard

Metadata information per node.

Link copied to clipboard

A node in the intermediate language abstract syntax tree.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
class OperatorApplicationNode(val operator: Operator, val arguments: Arguments<AtomicExpressionNode>, val sourceLocation: SourceLocation) : PureExpressionNode

An n-ary operator applied to n arguments.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
class OutputNode(val message: AtomicExpressionNode, val host: HostNode, val sourceLocation: SourceLocation) : SimpleStatementNode, CommunicationNode

An external output.

Link copied to clipboard
class ParameterNode(val name: ObjectVariableNode, val parameterDirection: ParameterDirection, val objectType: ObjectTypeNode, val protocol: ProtocolNode?, val sourceLocation: SourceLocation) : Node, ObjectVariableDeclarationNode

A parameter to a function declaration.

Link copied to clipboard

The intermediate level representation of a program.

Link copied to clipboard
Link copied to clipboard
class QueryNode(val variable: ObjectVariableNode, val query: QueryNameNode, val arguments: Arguments<AtomicExpressionNode>, val sourceLocation: SourceLocation) : PureExpressionNode

A query method applied to an object.

Link copied to clipboard

Reading the value stored in a temporary.

Link copied to clipboard

A statement that is not a combination of other statements, and that does not affect control flow.

Link copied to clipboard
sealed class StatementNode : Node

A computation with side effects.

Link copied to clipboard

A declaration at the top level of a file.

Link copied to clipboard
class UpdateNode(val variable: ObjectVariableNode, val update: UpdateNameNode, val arguments: Arguments<AtomicExpressionNode>, val sourceLocation: SourceLocation) : SimpleStatementNode

An update method applied to an object.

Link copied to clipboard

A node that declares a Variable.

Functions

Link copied to clipboard

Like Node.copy, but recursively copies all descendant nodes also.