Package-level declarations

The abstract syntax of the surface language.

Types

Link copied to clipboard
class AssertionNode(val condition: ExpressionNode, val sourceLocation: SourceLocation, val comment: String? = null) : 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, val comment: String?) : DelegationDeclarationNode

Declaration of an authority delegation.

Link copied to clipboard

A sequence of statements.

Link copied to clipboard
class BreakNode(val jumpLabel: JumpLabelNode?, val sourceLocation: SourceLocation, val comment: String? = null) : StatementNode

Breaking out of a loop.

Link copied to clipboard
class ConstructorCallNode(val objectType: ObjectTypeNode, val protocol: ProtocolNode?, val arguments: Arguments<ExpressionNode>, val sourceLocation: SourceLocation) : ExpressionNode

Call to an object constructor. Used for out parameter initialization.

Link copied to clipboard
class DeclarationNode(val variable: ObjectVariableNode, val initializer: ExpressionNode, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

Constructing a new object and binding it to a variable.

Link copied to clipboard
class DeclassificationNode(val expression: ExpressionNode, 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, val comment: String?) : 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: ExpressionNode, val fromLabel: LabelNode, val toLabel: LabelNode?, val sourceLocation: SourceLocation) : DowngradeNode

Trusting the result of an expression (increasing integrity).

Link copied to clipboard
class ExpressionArgumentNode(val expression: ExpressionNode, val sourceLocation: SourceLocation) : FunctionArgumentNode

Function argument that is an expression.

Link copied to clipboard
sealed class ExpressionNode : Node

A computation that produces a result.

Link copied to clipboard
class ForLoopNode(val initialize: SimpleStatementNode, val guard: ExpressionNode, val update: SimpleStatementNode, val body: BlockNode, val jumpLabel: JumpLabelNode?, val sourceLocation: SourceLocation, val comment: String? = null) : LoopNode

A for loop.

Link copied to clipboard
sealed class FunctionArgumentNode : Node

Arguments to functions.

Link copied to clipboard
class FunctionCallNode(val name: FunctionNameNode, val arguments: Arguments<FunctionArgumentNode>, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

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, val comment: String? = null) : TopLevelDeclarationNode

A function declaration associating a name with code.

Link copied to clipboard

Out arguments to functions.

Link copied to clipboard
class HostDeclarationNode(val name: HostNode, val sourceLocation: SourceLocation, val comment: String? = null) : 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, val comment: String?) : DelegationDeclarationNode

Declaration of an IFC delegation.

Link copied to clipboard
class IfNode(val guard: ExpressionNode, val thenBranch: BlockNode, val elseBranch: BlockNode, val sourceLocation: SourceLocation, val comment: String? = null) : StatementNode

Executing statements conditionally.

Link copied to clipboard
class InfiniteLoopNode(val body: BlockNode, val jumpLabel: JumpLabelNode?, val sourceLocation: SourceLocation, val comment: String? = null) : LoopNode

Executing a statement until a break statement is encountered.

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

An external input.

Link copied to clipboard

The display style used for the keyword in the language.

Link copied to clipboard
class LetNode(val temporary: TemporaryNode, val value: ExpressionNode, val protocol: ProtocolNode?, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

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
sealed class LoopNode : StatementNode

A loop statement.

Link copied to clipboard

A node in the abstract syntax tree of a surface level program.

Link copied to clipboard

Declaration of a new object as a return argument of a function.

Link copied to clipboard

Function argument that is an object reference (e.g. &a in the surface syntax).

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

An n-ary operator applied to n arguments.

Link copied to clipboard

Out parameter initialized as an out parameter to a function call.

Link copied to clipboard
class OutParameterInitializationNode(val name: ObjectVariableNode, val rhs: ExpressionNode, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

Initialization for an out parameter.

Link copied to clipboard
class OutputNode(val message: ExpressionNode, val host: HostNode, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

An external output.

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

A parameter to a function declaration.

Link copied to clipboard

Represents a surface level program which is a sequence of top level declarations.

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

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
class SkipNode(val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

A statement that does nothing.

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<ExpressionNode>, val sourceLocation: SourceLocation, val comment: String? = null) : SimpleStatementNode

An update method applied to an object.

Link copied to clipboard
class WhileLoopNode(val guard: ExpressionNode, val body: BlockNode, val jumpLabel: JumpLabelNode?, val sourceLocation: SourceLocation, val comment: String? = null) : LoopNode

Executing a statement repeatedly as long as a condition is true.