UNPKG

python2ib

Version:

Convert Python code to IB Pseudocode format

140 lines 3.48 kB
/** * Python AST parser using a simple recursive descent approach * This is a simplified parser for educational Python constructs */ /** Python AST node types */ export interface PythonASTNode { type: string; lineno?: number; col_offset?: number; [key: string]: any; } /** Token types for lexical analysis */ export declare enum TokenType { NUMBER = "NUMBER", STRING = "STRING", IDENTIFIER = "IDENTIFIER", IF = "IF", ELIF = "ELIF", ELSE = "ELSE", WHILE = "WHILE", FOR = "FOR", DEF = "DEF", RETURN = "RETURN", PRINT = "PRINT", INPUT = "INPUT", IN = "IN", AND = "AND", OR = "OR", NOT = "NOT", TRUE = "TRUE", FALSE = "FALSE", NONE = "NONE", ASSIGN = "ASSIGN", PLUS = "PLUS", MINUS = "MINUS", MULTIPLY = "MULTIPLY", DIVIDE = "DIVIDE", FLOOR_DIVIDE = "FLOOR_DIVIDE", MODULO = "MODULO", POWER = "POWER", EQUAL = "EQUAL", NOT_EQUAL = "NOT_EQUAL", LESS = "LESS", LESS_EQUAL = "LESS_EQUAL", GREATER = "GREATER", GREATER_EQUAL = "GREATER_EQUAL", PLUS_ASSIGN = "PLUS_ASSIGN", MINUS_ASSIGN = "MINUS_ASSIGN", MULTIPLY_ASSIGN = "MULTIPLY_ASSIGN", DIVIDE_ASSIGN = "DIVIDE_ASSIGN", LPAREN = "LPAREN", RPAREN = "RPAREN", LBRACKET = "LBRACKET", RBRACKET = "RBRACKET", COMMA = "COMMA", COLON = "COLON", DOT = "DOT", NEWLINE = "NEWLINE", INDENT = "INDENT", DEDENT = "DEDENT", COMMENT = "COMMENT", EOF = "EOF" } /** Token interface */ export interface Token { type: TokenType; value: string; line: number; column: number; } /** Simple lexer for Python code */ export declare class PythonLexer { private code; private position; private line; private column; private tokens; private indentStack; constructor(code: string); /** Tokenize the Python code */ tokenize(): Token[]; private advance; private addToken; private skipWhitespace; private handleIndentation; private readComment; private readNumber; private readString; private readIdentifier; private isDigit; private isAlpha; private isAlphaNumeric; private getKeywordType; private getTwoCharOperator; private getSingleCharOperator; } /** Simple AST parser for Python */ export declare class ASTParser { private tokens; private current; /** Parse Python code to AST */ parse(code: string): Promise<PythonASTNode>; /** Parse Python code to AST synchronously */ parseSync(code: string): PythonASTNode; private parseProgram; private parseStatement; private parseComment; private parseIf; private parseWhile; private parseFor; private parseFunction; private parseReturn; private parsePrint; private parseAssignmentOrExpression; private parseExpression; private parseOr; private parseAnd; private parseEquality; private parseComparison; private parseTerm; private parseFactor; private parseUnary; private parsePower; private parseCall; private finishCall; private finishSubscript; private finishAttribute; private parsePrimary; /** Parse an indented block of statements */ private parseBlock; private skipNewlines; private match; private check; private advance; private isAtEnd; private peek; private previous; private consume; } //# sourceMappingURL=ast-parser.d.ts.map