onelang
Version:
OneLang transpiler framework core
51 lines (50 loc) • 1.56 kB
TypeScript
export declare namespace ExprLangAst {
interface Expression {
kind: "binary" | "unary" | "literal" | "identifier" | "parenthesized" | "conditional" | "call" | "propertyAccess" | "elementAccess";
}
interface BinaryExpression extends Expression {
kind: "binary";
op: "+" | "-" | "*" | "/" | "<<" | ">>";
left: Expression;
right: Expression;
}
interface UnaryExpression extends Expression {
kind: "unary";
op: "!" | "+" | "-" | "!";
expr: Expression;
}
interface LiteralExpression extends Expression {
kind: "literal";
type: "number" | "string" | "boolean";
value: any;
}
interface IdentifierExpression extends Expression {
kind: "identifier";
text: string;
}
interface ParenthesizedExpression extends Expression {
kind: "parenthesized";
expr: Expression;
}
interface ConditionalExpression extends Expression {
kind: "conditional";
condition: Expression;
whenTrue: Expression;
whenFalse: Expression;
}
interface CallExpression extends Expression {
kind: "call";
method: Expression;
arguments: Expression[];
}
interface PropertyAccessExpression extends Expression {
kind: "propertyAccess";
object: Expression;
propertyName: string;
}
interface ElementAccessExpression extends Expression {
kind: "elementAccess";
object: Expression;
elementExpr: Expression;
}
}