UNPKG

@taml/parser

Version:

Parser for TAML (Terminal ANSI Markup Language) that generates AST nodes

89 lines 2.11 kB
/** * Validator for TAML tokens and syntax */ import { type TamlTag } from "@taml/ast"; import { type TamlToken } from "./tokenizer.js"; /** * Validation context for tracking state during validation */ interface ValidationContext { tokens: TamlToken[]; position: number; source: string; tagStack: Array<{ tagName: TamlTag; token: TamlToken; }>; errors: Error[]; } /** * Validation result */ export interface ValidationResult { valid: boolean; errors: Error[]; } /** * TAML Validator class */ export declare class TamlValidator { private readonly source; constructor(source: string); /** * Validate a sequence of tokens */ validateTokens(tokens: TamlToken[]): ValidationResult; /** * Validate the sequence of tokens */ private validateTokenSequence; /** * Validate an opening tag token */ private validateOpenTag; /** * Validate a closing tag token */ private validateCloseTag; /** * Get current validation state for debugging */ getDebugInfo(context: ValidationContext): { position: number; currentToken: TamlToken | null; tagStack: string[]; errorCount: number; }; } /** * Convenience function to validate TAML tokens */ export declare function validateTamlTokens(tokens: TamlToken[], source: string): ValidationResult; /** * Validate tag name against TAML specification */ export declare function validateTagName(tagName: string): boolean; /** * Check if nesting is valid (stack-based validation) */ export declare function validateNesting(tokens: TamlToken[]): { valid: boolean; unclosedTags: string[]; mismatchedTags: Array<{ expected: string; actual: string; }>; }; /** * Validate proper tag closure */ export declare function validateTagClosure(tokens: TamlToken[]): { valid: boolean; issues: Array<{ type: "unclosed" | "extra" | "mismatched"; tagName: string; position: number; }>; }; export {}; //# sourceMappingURL=validator.d.ts.map