import { Statement, CodePosition, DefineFunction, OnBlock } from '../types/Ast.type'; import { Environment } from '../index'; export interface ExtractedVariable { name: string; description?: string; initialValue?: any; codePos: CodePosition; } export declare class Parser { private tokens; private stream; private source; private extractedFunctions; private extractedEventHandlers; private extractedVariables; private environment; private decoratorBuffer; private pendingComments; /** * Maximum number of iterations allowed before detecting an infinite loop */ static readonly MAX_STUCK_ITERATIONS = 100; /** * Debug mode flag - set to true to enable logging * Can be controlled via VITE_DEBUG environment variable or set programmatically */ static debug: boolean; /** * Create a new Parser * @param source - Full source code as a single string * @param environment - Optional environment for executing parse decorators */ constructor(source: string, environment?: Environment | null); /** * Parse the source code into an AST * @returns Array of statements */ parse(): Promise; /** * Parse a statement from a stream with hierarchical nodeKey support */ private parseStatementFromStream; /** * Get extracted function definitions (def/enddef blocks) */ getExtractedFunctions(): DefineFunction[]; /** * Get extracted event handlers (on/endon blocks) */ getExtractedEventHandlers(): OnBlock[]; /** * Get extracted variables (from assignments) */ getExtractedVariables(): ExtractedVariable[]; /** * Track a variable from an assignment statement */ private trackVariable; /** * Parse a single statement */ private parseStatement; private parseCommentFromStream; private attachInlineComments; private countTrailingBlankLines; /** * Recursively assign nodeKeys to body statements * This ensures all nested statements have hierarchical nodeKeys for execution tracking */ private assignBodyNodeKeys; }