UNPKG

@composita/il

Version:

Composita language IL.

73 lines 2.89 kB
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