UNPKG

python2ib

Version:

Convert Python code to IB Pseudocode format

59 lines 2.68 kB
/** * 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; [key: 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