@composita/il
Version:
Composita language IL.
73 lines • 2.89 kB
TypeScript
import { Optional } from '@composita/ts-utility-types';
import { BuiltInTypeDescriptor } from './builtin';
import { ProtocolType } from './enums';
import { Instruction } from './instruction';
import { SystemCallOperation } from './syscall';
export declare type TypeDescriptor = ComponentDescriptor | BuiltInTypeDescriptor | InterfaceDescriptor;
export declare type DeclarationContainer = ComponentDescriptor | ProcedureDescriptor | ImplementationDescriptor;
export declare class DeclarationDescriptor {
readonly init: CodeBlockDescriptor;
readonly variables: VariableDescriptor[];
readonly procedures: ProcedureDescriptor[];
readonly components: ComponentDescriptor[];
}
export declare class ComponentDescriptor {
readonly identifier: string;
constructor(identifier: string);
readonly offers: InterfaceDescriptor[];
readonly requires: InterfaceDescriptor[];
readonly declarations: DeclarationDescriptor;
readonly implementations: ImplementationDescriptor[];
readonly begin: CodeBlockDescriptor;
readonly activity: CodeBlockDescriptor;
readonly finally: CodeBlockDescriptor;
}
export declare class ProcedureDescriptor {
readonly identifier: string;
readonly returnType: Optional<TypeDescriptor>;
constructor(identifier: string, returnType: Optional<TypeDescriptor>);
readonly parameters: VariableDescriptor[];
readonly declarations: DeclarationDescriptor;
readonly begin: CodeBlockDescriptor;
}
export declare class ImplementationDescriptor {
readonly reference: InterfaceDescriptor;
constructor(reference: InterfaceDescriptor);
readonly declarations: DeclarationDescriptor;
readonly begin: CodeBlockDescriptor;
}
export declare class VariableDescriptor {
readonly identifier: string;
readonly type: TypeDescriptor;
readonly mutable: boolean;
constructor(identifier: string, type: TypeDescriptor, mutable: boolean);
readonly indexTypes: TypeDescriptor[];
}
export declare class CodeBlockDescriptor {
readonly instructions: Instruction[];
}
export declare class InterfaceDescriptor {
readonly identifier: string;
constructor(identifier: string);
readonly protocols: ProtocolDescriptor[];
}
export declare class ProtocolDescriptor {
readonly type: ProtocolType;
constructor(type: ProtocolType);
readonly messages: MessageDescriptor[];
}
export declare class MessageDescriptor {
readonly identifier: string;
constructor(identifier: string);
readonly data: TypeDescriptor[];
}
export declare class JumpDescriptor {
readonly offset: number;
constructor(offset: number);
}
export declare class SystemCallDescriptor {
readonly systemCall: SystemCallOperation;
constructor(systemCall: SystemCallOperation, ...args: Array<TypeDescriptor>);
readonly arguments: Array<TypeDescriptor>;
}
//# sourceMappingURL=descriptor.d.ts.map