@taml/parser
Version:
Parser for TAML (Terminal ANSI Markup Language) that generates AST nodes
89 lines • 2.11 kB
TypeScript
/**
* 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