json-parser-yaml-converter
Version:
Enhanced JSON Parser with verbose error messages and JSON to YAML conversion
44 lines (36 loc) • 958 B
JavaScript
/**
* This module exports the main lexer.
*
* @module lexer
*/
;
import { nearleyLexer } from '@juanrguezsu7/lexer-generator';
const SPACE = /(?<SPACE>\s+)/; SPACE.skip = true;
const LK = /(?<LK>\{)/;
const RK = /(?<RK>\})/;
const COLON = /(?<COLON>:)/;
const LB = /(?<LB>\[)/;
const RB = /(?<RB>\])/;
const NULL = /(?<NULL>null)/; NULL.value = () => null;
const TRUE = /(?<TRUE>true)/; TRUE.value = () => true;
const FALSE = /(?<FALSE>false)/; FALSE.value = () => false;
const COMMA = /(?<COMMA>,)/;
const NUMBER = /(?<NUMBER>[-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?)/; NUMBER.value = x => Number(x);
const STRING = /(?<STRING>"(?:[^"\\]|\\.)*")/; STRING.value = x => x.slice(1, -1);
const TOKENS = [
SPACE,
LK,
RK,
COLON,
LB,
RB,
NULL,
TRUE,
FALSE,
COMMA,
NUMBER,
STRING
];
const ERROR = /(?<ERROR>(.)+)/;
const lexer = nearleyLexer(TOKENS, {}, ERROR);
export { lexer };