python2ib
Version:
Convert Python code to IB Pseudocode format
59 lines • 2.68 kB
TypeScript
/**
* Intermediate Representation (IR) for Python to IB Pseudocode conversion
*
* This IR uses a recursive tree structure where each node can have children,
* allowing for proper representation of nested structures (IF/WHILE/FOR/FUNCTION blocks)
*/
export interface IR {
/** The kind of IR node (e.g., 'assign', 'if', 'output', 'for', 'procedure', 'function') */
kind: IRKind;
/** The text to be output for this line */
text: string;
/** Child IR nodes for nested structures */
children: IR[];
/** Additional metadata for specific IR types */
meta?: IRMeta;
}
/** All possible IR node types */
export type IRKind = 'assign' | 'output' | 'input' | 'comment' | 'expression' | 'sequence' | 'if' | 'elseif' | 'else' | 'endif' | 'while' | 'until' | 'endwhile' | 'for' | 'next' | 'procedure' | 'function' | 'endprocedure' | 'endfunction' | 'return' | 'try' | 'except' | 'endtry' | 'block' | 'program';
/** Metadata for IR nodes */
export interface IRMeta {
lineNumber?: number;
variable?: string;
functionName?: string;
parameters?: string[];
returnType?: string;
condition?: string;
start?: string;
end?: string;
step?: string;
value?: string;
errorType?: string;
exceptionType?: string;
[]: any;
}
/** Factory functions for creating IR nodes */
export declare class IRFactory {
static program(): IR;
static assign(variable: string, value: string, lineNumber?: number): IR;
static output(expression: string, lineNumber?: number): IR;
static input(variable?: string, lineNumber?: number): IR;
static if(condition: string, lineNumber?: number): IR;
static elseif(condition: string, lineNumber?: number): IR;
static else(lineNumber?: number): IR;
static endif(lineNumber?: number): IR;
static while(condition: string, lineNumber?: number): IR;
static until(condition: string, lineNumber?: number): IR;
static endwhile(lineNumber?: number): IR;
static for(variable: string, start: string, end: string, step?: string, lineNumber?: number): IR;
static next(variable: string, lineNumber?: number): IR;
static function(name: string, parameters: string[], returnType: string, lineNumber?: number): IR;
static endfunction(lineNumber?: number): IR;
static procedure(name: string, parameters: string[], lineNumber?: number): IR;
static endprocedure(lineNumber?: number): IR;
static return(value?: string, lineNumber?: number): IR;
static comment(text: string, lineNumber?: number): IR;
static expression(text: string, lineNumber?: number): IR;
static block(lineNumber?: number): IR;
}
//# sourceMappingURL=ir.d.ts.map