ton-assembly
Version:
TON assembler and disassembler
148 lines • 4.65 kB
TypeScript
export declare namespace $ast {
type SourceFile = {
readonly $: "SourceFile";
readonly include: IncludeDirective | undefined;
readonly program: Program;
};
type IncludeDirective = {
readonly $: "IncludeDirective";
readonly path: string;
};
type Program = {
readonly $: "Program";
readonly declarations: readonly Declaration[];
readonly definitions: readonly Definition[];
};
type Declaration = {
readonly $: "Declaration";
readonly decl: ProcDeclaration | MethodDeclaration | GlobalVar;
};
type ProcDeclaration = {
readonly $: "ProcDeclaration";
readonly name: Identifier;
};
type MethodDeclaration = {
readonly $: "MethodDeclaration";
readonly method_id: Integer;
readonly name: Identifier;
};
type GlobalVar = {
readonly $: "GlobalVar";
readonly name: Identifier;
};
type Definition = {
readonly $: "Definition";
readonly def: ProcDefinition | ProcInlineDefinition | ProcRefDefinition | MethodDefinition;
};
type ProcDefinition = {
readonly $: "ProcDefinition";
readonly name: Identifier;
readonly instructions: readonly Instruction[];
};
type ProcInlineDefinition = {
readonly $: "ProcInlineDefinition";
readonly name: Identifier;
readonly instructions: readonly Instruction[];
};
type ProcRefDefinition = {
readonly $: "ProcRefDefinition";
readonly name: Identifier;
readonly instructions: readonly Instruction[];
};
type MethodDefinition = {
readonly $: "MethodDefinition";
readonly name: Identifier;
readonly instructions: readonly Instruction[];
};
type Instruction = {
readonly $: "Instruction";
readonly instr: IfStatement | IfjmpStatement | WhileStatement | RepeatStatement | UntilStatement | AsmExpression;
};
type AsmExpression = {
readonly $: "AsmExpression";
readonly arguments: AsmArgumentList | undefined;
readonly name: TvmInstruction;
};
type AsmArgumentList = {
readonly $: "AsmArgumentList";
readonly primitives: readonly AsmPrimitive[];
};
type AsmPrimitive = {
readonly $: "AsmPrimitive";
readonly prim: InstructionBlock | String | HexBitString | BinBitString | BocHex | StackRegister | ControlRegister | Integer | ArgIdentifier | FiftAddressNone;
};
type IfStatement = {
readonly $: "IfStatement";
readonly kind: "IF:<{" | "IFNOT:<{";
readonly instructions: readonly Instruction[];
readonly else_block: {
readonly instructions: readonly Instruction[];
} | undefined;
};
type IfjmpStatement = {
readonly $: "IfjmpStatement";
readonly kind: "IFJMP:<{" | "IFNOTJMP:<{";
readonly instructions: readonly Instruction[];
};
type WhileStatement = {
readonly $: "WhileStatement";
readonly condition: readonly Instruction[];
readonly body: readonly Instruction[];
};
type RepeatStatement = {
readonly $: "RepeatStatement";
readonly instructions: readonly Instruction[];
};
type UntilStatement = {
readonly $: "UntilStatement";
readonly instructions: readonly Instruction[];
};
type InstructionBlock = {
readonly $: "InstructionBlock";
readonly instructions: readonly Instruction[];
};
type HexBitString = {
readonly $: "HexBitString";
readonly content: string;
};
type BinBitString = {
readonly $: "BinBitString";
readonly content: string;
};
type FiftAddressNone = {
readonly $: "FiftAddressNone";
};
type BocHex = {
readonly $: "BocHex";
readonly content: string;
};
type Identifier = {
readonly $: "Identifier";
readonly name: string;
};
type ArgIdentifier = {
readonly $: "ArgIdentifier";
readonly name: string;
};
type TvmInstruction = {
readonly $: "TvmInstruction";
readonly value: string;
};
type Integer = {
readonly $: "Integer";
readonly value: string;
};
type StackRegister = {
readonly $: "StackRegister";
readonly value: string;
};
type ControlRegister = {
readonly $: "ControlRegister";
readonly value: string;
};
type String = {
readonly $: "String";
readonly content: string;
};
}
//# sourceMappingURL=grammar.d.ts.map