/** * @typedef TokenStreamItem * @property {string} type * @property {string | Array} content * * @typedef {Array} TokenStream * * @typedef {string | [string, string | SimplifiedTokenStream]} SimplifiedToken * @typedef {Array} SimplifiedTokenStream * * @typedef {Array} PrettyTokenStream * @typedef {string | LineBreakItem | GlueItem | [string, string | Array]} PrettyTokenStreamItem */ /** * Simplifies the token stream to ease the matching with the expected token stream. * * * Strings are kept as-is * * In arrays each value is transformed individually * * Values that are empty (empty arrays or strings only containing whitespace) * @param {TokenStream} tokenStream * @returns {SimplifiedTokenStream} */ export function simplify(tokenStream: TokenStream): SimplifiedTokenStream; /** * @param {TokenStream} tokenStream * @param {string} [indentation] * @returns {string} */ export function prettyprint(tokenStream: TokenStream, indentation?: string): string; export type TokenStreamItem = { type: string; content: string | Array; }; export type TokenStream = Array; export type SimplifiedToken = string | [string, string | SimplifiedTokenStream]; export type SimplifiedTokenStream = Array; export type PrettyTokenStream = Array; export type PrettyTokenStreamItem = string | LineBreakItem | GlueItem | [string, string | any[]]; /** * This item indicates that one or multiple line breaks are present between the preceding and following items in the * source token stream. * * Only if an item is enabled will it appear in the pretty-printed token stream. */ declare class LineBreakItem { /** @param {number} sourceCount */ constructor(sourceCount: number); sourceCount: number; enabled: boolean; } /** * This item indicates the the preceding and following items are to be printed on the same line in the pretty-printed * token stream. */ declare class GlueItem { } export {};