Skip to content
Snippets Groups Projects
parse.ts 1011 B
Newer Older
marihachi's avatar
marihachi committed
import { performance } from 'perf_hooks';
marihachi's avatar
marihachi committed
import inputLine, { InputCanceledError } from './misc/inputLine';
marihachi's avatar
marihachi committed
import { parse } from '..';
marihachi's avatar
marihachi committed

anatawa12's avatar
anatawa12 committed
async function entryPoint(): Promise<void> {
marihachi's avatar
marihachi committed
	console.log('intaractive parser');

	while (true) {
		let input: string;
		try {
			input = await inputLine('> ');
		}
		catch (err) {
			if (err instanceof InputCanceledError) {
				console.log('bye.');
				return;
			}
			throw err;
		}

		// replace special chars
		input = input
			.replace(/\\n/g, '\n')
marihachi's avatar
marihachi committed
			.replace(/\\t/g, '\t')
			.replace(/\\u00a0/g, '\u00a0');
marihachi's avatar
marihachi committed

		try {
marihachi's avatar
marihachi committed
			const parseTimeStart = performance.now();
			const result = parse(input);
marihachi's avatar
marihachi committed
			const parseTimeEnd = performance.now();
marihachi's avatar
marihachi committed
			console.log(JSON.stringify(result));
marihachi's avatar
marihachi committed
			const parseTime = (parseTimeEnd - parseTimeStart).toFixed(3);
			console.log(`parsing time: ${parseTime}ms`);
marihachi's avatar
marihachi committed
		}
		catch (err) {
			console.log('parsing error:');
			console.log(err);
		}
		console.log();
	}
}
marihachi's avatar
marihachi committed
entryPoint()
	.catch(err => {
		console.log(err);
		process.exit(1);
	});