UNPKG

nadesiko3

Version:
49 lines (45 loc) 1.39 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ /** * よく使う処理をまとめたもの */ import { Token, NewEmptyToken } from './nako_types.mjs' import { TokenType } from './nako_token.mjs' /** * トークンの内容をデバッグ出力する関数 * @param tokens トークンの一覧 * @returns 文字列 */ export function debugTokens (tokens: Token[]) { const result = [] for (let i = 0; i < tokens.length; i++) { const t = tokens[i] const ftype = t.type const fvalue = t.value let s = `[${ftype}:${fvalue}]` if (ftype === fvalue) { s = ftype } if (ftype === 'comma') { s = ',' } if (ftype === 'string') { s = `"${fvalue}"` } if (ftype === 'number') { s = `(${fvalue})` } if (ftype === 'word') { s = `[word:${fvalue}]` } if (!result[t.line]) { result[t.line] = makeIndent(t.indent) } result[t.line] += s + t.josi + '|' } return result.join('\n') } export function makeIndent (n: number): string { let s = '' for (let i = 0; i < n; i++) { s += ' ' } return s } let lastTokenInfo = NewEmptyToken() export function newToken (type: TokenType, value: any, templateToken: Token|undefined = undefined): Token { if (templateToken) { lastTokenInfo = templateToken } const t = NewEmptyToken(type, value, lastTokenInfo.indent, lastTokenInfo.line, lastTokenInfo.file) return t }