UNPKG

json-parser-yaml-converter

Version:
44 lines (36 loc) 958 B
/** * This module exports the main lexer. * * @module lexer */ 'use strict'; 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 };