snes-disassembler
Version:
A Super Nintendo (SNES) ROM disassembler for 65816 assembly
123 lines • 3.23 kB
TypeScript
/**
* Phase 4: Symbol Table Management System
*
* Comprehensive symbol management with external file support:
* - Symbol export/import (.sym, .mlb files)
* - Symbol name suggestion based on usage patterns
* - Symbol conflict resolution
* - Bulk symbol operations
* - Symbol validation and verification
*/
import { SymbolTableEntry } from './output-formatters';
export interface SymbolValidationResult {
isValid: boolean;
errors: string[];
warnings: string[];
}
export interface SymbolConflict {
address: number;
existingSymbol: SymbolTableEntry;
conflictingSymbol: SymbolTableEntry;
conflictType: 'NAME_DUPLICATE' | 'ADDRESS_DUPLICATE' | 'SCOPE_CONFLICT';
}
export interface BulkOperationResult {
succeeded: number;
failed: number;
conflicts: SymbolConflict[];
errors: string[];
}
export declare class SymbolManager {
private symbols;
private nameToAddress;
private readonly reservedNames;
constructor();
/**
* Add a symbol to the table
*/
addSymbol(address: number, entry: SymbolTableEntry): SymbolValidationResult;
/**
* Remove a symbol by address
*/
removeSymbol(address: number): boolean;
/**
* Get symbol by address
*/
getSymbol(address: number): SymbolTableEntry | undefined;
/**
* Get address by symbol name
*/
getAddress(name: string): number | undefined;
/**
* Get all symbols
*/
getAllSymbols(): Map<number, SymbolTableEntry>;
/**
* Validate a symbol entry
*/
private validateSymbol;
/**
* Generate symbol names based on address patterns and context
*/
generateSymbolName(address: number, type: SymbolTableEntry['type'], context?: string): string;
private getSymbolPrefix;
private isVectorAddress;
/**
* Bulk symbol operations
*/
bulkAddSymbols(symbols: Map<number, SymbolTableEntry>): BulkOperationResult;
/**
* Export symbols to various formats
*/
exportToFile(filePath: string, format: 'sym' | 'mlb' | 'json' | 'csv'): void;
private getFormatFromExtension;
/**
* Export to .sym format (No$SNS debugger format)
*/
private exportToSymFile;
/**
* Export to .mlb format (MAME debugger format)
*/
private exportToMLBFile;
/**
* Export to JSON format
*/
private exportToJSONFile;
/**
* Export to CSV format
*/
private exportToCSVFile;
/**
* Import symbols from file
*/
importFromFile(filePath: string, format?: 'sym' | 'mlb' | 'json' | 'csv'): BulkOperationResult;
/**
* Import from .sym format
*/
private importFromSymFile;
/**
* Import from .mlb format
*/
private importFromMLBFile;
/**
* Import from JSON format
*/
private importFromJSONFile;
/**
* Import from CSV format
*/
private importFromCSVFile;
private parseCSVLine;
/**
* Clear all symbols
*/
clear(): void;
/**
* Get symbol statistics
*/
getStatistics(): {
total: number;
byType: Record<string, number>;
byScope: Record<string, number>;
};
}
//# sourceMappingURL=symbol-manager.d.ts.map