Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 20x 20x 20x 20x 20x 20x 1945x | // @flow
/* eslint no-control-regex: 0 */
/* eslint no-useless-escape: 0 */
import P from 'parsimmon'
import type { NodeType } from '../types'
const keywords = ['null', 'true', 'false']
const DoubleQuoteStringRegexp = /("(((?=\\)\\(["'\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")/
const SingleQuoteStringRegexp = /('(((?=\\)\\(['"\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^'\\\0-\x1F\x7F]+)*')/
export const StringParserRegExp = new RegExp(`(${DoubleQuoteStringRegexp.source}|${SingleQuoteStringRegexp.source})`)
const NumberParserRegExp = /(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/
const options = [
...keywords,
StringParserRegExp.source,
NumberParserRegExp.source
]
export default P.regex(new RegExp(`(${options.join('|')})`)).map(
(value: string): NodeType => ({
name: 'primitive',
value
})
)
|