UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

163 lines 4.54 kB
/** * @fileoverview OrdoJS Parser - Refactored modular implementation * @author OrdoJS Framework Team */ import { SyntaxError, type ComponentAST, type ComponentNode, type SourcePosition, type TokenStream, type TypeAnnotation } from '../types/index.js'; /** * Parser configuration options */ export interface ParserOptions { /** Enable error recovery mode */ allowRecovery?: boolean; /** Maximum number of errors before stopping */ maxErrors?: number; /** Enable strict mode parsing */ strictMode?: boolean; /** Generate source maps */ generateSourceMaps?: boolean; /** Custom AST node processors */ nodeProcessors?: ASTNodeProcessor[]; /** Enable experimental features */ experimentalFeatures?: string[]; } /** * AST node processor for plugin-based AST transformation */ export interface ASTNodeProcessor { /** Processor name */ name: string; /** Node types this processor handles */ handles: string[]; /** Process AST node and return modified node */ process<T extends { type: string; }>(node: T, context: ParserContext): T; } /** * Parser context for tracking state during parsing */ export interface ParserContext { /** Current component being parsed */ component?: ComponentNode; /** Current block context */ blockContext: 'component' | 'client' | 'server' | 'markup'; /** Symbol table for scope tracking */ symbolTable: Map<string, SymbolInfo>; /** Current scope depth */ scopeDepth: number; /** Parser options */ options: Required<ParserOptions>; } /** * Symbol information for scope tracking */ export interface SymbolInfo { name: string; type: 'variable' | 'function' | 'parameter' | 'prop'; dataType?: TypeAnnotation; scope: number; position: SourcePosition; isConst?: boolean; isPublic?: boolean; } /** * Parser state for error recovery and debugging */ export interface ParserState { tokenStream: TokenStream; current: number; filename: string; errors: SyntaxError[]; warnings: SyntaxError[]; context: ParserContext; } /** * Enhanced OrdoJS Parser with modular architecture */ export declare class OrdoJSParser { private state; private options; private parseRules; constructor(tokenStream: TokenStream, options?: ParserOptions, filename?: string); /** * Parse token stream into Component AST */ parse(): ComponentAST; /** * Get all errors encountered during parsing */ getErrors(): SyntaxError[]; /** * Get all warnings encountered during parsing */ getWarnings(): SyntaxError[]; /** * Add custom AST node processor */ addNodeProcessor(processor: ASTNodeProcessor): void; /** * Remove AST node processor by name */ removeNodeProcessor(name: string): boolean; private initializeParseRules; private parseComponent; private parseProps; private parseProp; private parseTypeAnnotation; private parseClientBlock; private parseServerBlock; private parseMarkupBlock; private parseReactiveVariable; private parseFunction; private parseServerFunction; private parseLifecycleHook; private parseParameters; private parseParameter; private parseStatements; private parseStatement; private parseExpression; private parsePrecedence; private getPrecedence; private parseLiteral; private parseIdentifier; private parseGrouping; private parseUnary; private parseBinary; private parseAssignment; private parseCall; private parseMember; private parseHTMLElement; private parseInterpolation; private parseTextNode; private enterScope; private exitScope; private addSymbol; private hasSymbol; private hasSymbolInCurrentScope; private getSymbol; private processAST; private processNode; private checkLifecycleHook; private isValidComponentName; private createDummyExpression; private extractDependencies; private extractExports; private generateSourceMap; private match; private check; private advance; private isAtEnd; private peek; private previous; private consume; private createEOFToken; private throwError; private addWarning; private synchronize; private getCurrentPosition; } /** * Default AST node processors */ export declare const defaultNodeProcessors: ASTNodeProcessor[]; //# sourceMappingURL=parser-refactored.d.ts.map