@igorivaniuk/tlb-parser
Version:
Parse TLB syntax into TypeScript objects
137 lines (136 loc) • 5.22 kB
TypeScript
export declare abstract class ASTRootBase {
readonly parent: ASTBase | null;
readonly locations: {
readonly line: number;
readonly column: number;
};
static readonly _attributes: string[];
}
export declare abstract class ASTBase extends ASTRootBase {
readonly parent: ASTBase;
}
export declare class Program extends ASTRootBase {
readonly declarations: Declaration[];
static readonly _attributes: string[];
readonly parent: null;
constructor(declarations: Declaration[]);
}
export declare class Declaration extends ASTBase {
readonly constructorDef: Constructor;
readonly fields: FieldDefinition[];
readonly combinator: Combinator;
static readonly _attributes: string[];
constructor(constructorDef: Constructor, fields: FieldDefinition[], combinator: Combinator);
}
export declare class Constructor extends ASTBase {
readonly name: string;
readonly tag: string | null;
constructor(name: string, tag: string | null);
getTagType(): 'binary' | 'hex' | null;
}
export type FieldDefinition = FieldBuiltinDef | FieldCurlyExprDef | FieldAnonymousDef | FieldNamedDef | FieldExprDef;
export declare abstract class Field extends ASTBase {
}
export declare const FieldBuiltinType: readonly ["+", "Type"];
export declare class FieldBuiltinDef extends Field {
readonly name: string;
readonly type: typeof FieldBuiltinType[number];
constructor(name: string, type: typeof FieldBuiltinType[number]);
}
export declare class FieldCurlyExprDef extends Field {
readonly expr: Expression;
static readonly _attributes: string[];
constructor(expr: Expression);
}
export declare class FieldAnonymousDef extends Field {
readonly name: string | null;
readonly isRef: boolean;
readonly fields: FieldDefinition[];
static readonly _attributes: string[];
constructor(name: string | null, isRef: boolean, fields: FieldDefinition[]);
}
export declare class FieldNamedDef extends Field {
readonly name: string;
readonly expr: CondExpr | TypeExpr;
static readonly _attributes: string[];
constructor(name: string, expr: CondExpr | TypeExpr);
}
export declare class FieldExprDef extends Field {
readonly expr: CondExpr;
static readonly _attributes: string[];
constructor(expr: CondExpr);
}
export declare class Combinator extends ASTBase {
readonly name: string;
readonly args: TypeExpr[];
static readonly _attributes: string[];
constructor(name: string, args: TypeExpr[]);
}
export declare abstract class Expression extends ASTBase {
}
export declare class CondExpr extends Expression {
readonly left: TypeExpr;
readonly dotExpr: number | null;
readonly condExpr: TypeExpr;
static readonly _attributes: string[];
constructor(left: TypeExpr, dotExpr: number | null, condExpr: TypeExpr);
}
export declare const CompareOperator: readonly ["<=", ">=", "!=", "=", "<", ">"];
export declare class CompareExpr extends Expression {
readonly left: SimpleExpr;
readonly op: typeof CompareOperator[number];
readonly right: SimpleExpr;
static readonly _attributes: string[];
constructor(left: SimpleExpr, op: typeof CompareOperator[number], right: SimpleExpr);
}
export type TypeExpr = CellRefExpr | BuiltinExpr | CombinatorExpr | SimpleExpr;
export declare class CellRefExpr extends Expression {
readonly expr: Expression;
static readonly _attributes: string[];
constructor(expr: Expression);
}
export declare class BuiltinExpr extends Expression {
}
export declare const BuiltinOneArgOperators: readonly ["#<=", "#<", "##"];
export declare class BuiltinOneArgExpr extends BuiltinExpr {
readonly name: typeof BuiltinOneArgOperators[number];
readonly arg: Reference;
static readonly _attributes: string[];
constructor(name: typeof BuiltinOneArgOperators[number], arg: Reference);
}
export declare const BuiltinZeroArgsOperators: readonly ["#"];
export declare class BuiltinZeroArgs extends BuiltinExpr {
readonly name: typeof BuiltinZeroArgsOperators[number];
constructor(name: typeof BuiltinZeroArgsOperators[number]);
}
export declare class CombinatorExpr extends Expression {
readonly name: string;
readonly args: TypeExpr[];
static readonly _attributes: string[];
constructor(name: string, args: TypeExpr[]);
}
export type SimpleExpr = NegateExpr | MathExpr | Reference;
export declare const MathOperator: readonly ["*", "+"];
export declare class MathExpr extends Expression {
readonly left: SimpleExpr;
readonly op: typeof MathOperator[number];
readonly right: SimpleExpr;
static readonly _attributes: string[];
constructor(left: SimpleExpr, op: typeof MathOperator[number], right: SimpleExpr);
}
export declare class NegateExpr extends Expression {
readonly expr: Expression;
static readonly _attributes: string[];
constructor(expr: Expression);
}
export declare class RefExpr extends Expression {
}
export type Reference = NameExpr | NumberExpr;
export declare class NameExpr extends RefExpr {
readonly name: string;
constructor(name: string);
}
export declare class NumberExpr extends RefExpr {
readonly num: number;
constructor(num: number);
}