UNPKG

node-scrapy

Version:

Simple, lightweight and expressive web scraping with Node.js

84 lines (82 loc) 6.35 kB
// Generated automatically by nearley, version 2.19.6 // http://github.com/Hardmath123/nearley (function () { function id(x) { return x[0]; } const flatten = list => list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []) const prune = d => flatten(d).filter(x => x !== null) const join = d => prune(d).join('') var grammar = { Lexer: undefined, ParserRules: [ {"name": "MAIN$ebnf$1", "symbols": ["FILTER_LIST"], "postprocess": id}, {"name": "MAIN$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, {"name": "MAIN", "symbols": ["IDENTIFIER", "_", "MAIN$ebnf$1"], "postprocess": d => ({ getter: d[0], filters: d[2] || [] })}, {"name": "FILTER_LIST", "symbols": ["FILTER"]}, {"name": "FILTER_LIST", "symbols": ["FILTER_LIST", "_", "FILTER"], "postprocess": d => flatten([d[0], d[2]])}, {"name": "FILTER$ebnf$1", "symbols": []}, {"name": "FILTER$ebnf$1", "symbols": ["FILTER$ebnf$1", "FILTER_ARG"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "FILTER", "symbols": [{"literal":"|"}, "_", "IDENTIFIER", "FILTER$ebnf$1"], "postprocess": d => ({ name: d[2], args: d[3] }) }, {"name": "FILTER_ARG", "symbols": [{"literal":":"}, "VALUE"], "postprocess": d => d[1]}, {"name": "IDENTIFIER$ebnf$1", "symbols": []}, {"name": "IDENTIFIER$ebnf$1", "symbols": ["IDENTIFIER$ebnf$1", /[a-zA-Z0-9_$]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "IDENTIFIER", "symbols": ["ID_START", "IDENTIFIER$ebnf$1"], "postprocess": join}, {"name": "ID_START", "symbols": [/[a-zA-Z$_]/], "postprocess": id}, {"name": "VALUE", "symbols": ["NUMBER"], "postprocess": id}, {"name": "VALUE", "symbols": ["STRING"], "postprocess": id}, {"name": "VALUE", "symbols": ["SYMBOL"], "postprocess": id}, {"name": "SYMBOL$ebnf$1", "symbols": [/[a-zA-Z]/]}, {"name": "SYMBOL$ebnf$1", "symbols": ["SYMBOL$ebnf$1", /[a-zA-Z]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "SYMBOL", "symbols": ["SYMBOL$ebnf$1"], "postprocess": join}, {"name": "NUMBER$ebnf$1", "symbols": [{"literal":"-"}], "postprocess": id}, {"name": "NUMBER$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, {"name": "NUMBER$subexpression$1", "symbols": [{"literal":"0"}]}, {"name": "NUMBER$subexpression$1$ebnf$1", "symbols": []}, {"name": "NUMBER$subexpression$1$ebnf$1", "symbols": ["NUMBER$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "NUMBER$subexpression$1", "symbols": [/[1-9]/, "NUMBER$subexpression$1$ebnf$1"]}, {"name": "NUMBER$ebnf$2$subexpression$1$ebnf$1", "symbols": [/[0-9]/]}, {"name": "NUMBER$ebnf$2$subexpression$1$ebnf$1", "symbols": ["NUMBER$ebnf$2$subexpression$1$ebnf$1", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "NUMBER$ebnf$2$subexpression$1", "symbols": [{"literal":"."}, "NUMBER$ebnf$2$subexpression$1$ebnf$1"]}, {"name": "NUMBER$ebnf$2", "symbols": ["NUMBER$ebnf$2$subexpression$1"], "postprocess": id}, {"name": "NUMBER$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, {"name": "NUMBER$ebnf$3$subexpression$1$ebnf$1", "symbols": [/[+-]/], "postprocess": id}, {"name": "NUMBER$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, {"name": "NUMBER$ebnf$3$subexpression$1$ebnf$2", "symbols": [/[0-9]/]}, {"name": "NUMBER$ebnf$3$subexpression$1$ebnf$2", "symbols": ["NUMBER$ebnf$3$subexpression$1$ebnf$2", /[0-9]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "NUMBER$ebnf$3$subexpression$1", "symbols": [/[eE]/, "NUMBER$ebnf$3$subexpression$1$ebnf$1", "NUMBER$ebnf$3$subexpression$1$ebnf$2"]}, {"name": "NUMBER$ebnf$3", "symbols": ["NUMBER$ebnf$3$subexpression$1"], "postprocess": id}, {"name": "NUMBER$ebnf$3", "symbols": [], "postprocess": function(d) {return null;}}, {"name": "NUMBER", "symbols": ["NUMBER$ebnf$1", "NUMBER$subexpression$1", "NUMBER$ebnf$2", "NUMBER$ebnf$3"], "postprocess": d => { return Number.parseFloat( join(d) ) } }, {"name": "STRING", "symbols": ["SINGLE_QUOTE_STRING"], "postprocess": id}, {"name": "STRING", "symbols": ["DOUBLE_QUOTE_STRING"], "postprocess": id}, {"name": "SINGLE_QUOTE_STRING$ebnf$1", "symbols": []}, {"name": "SINGLE_QUOTE_STRING$ebnf$1", "symbols": ["SINGLE_QUOTE_STRING$ebnf$1", "SINGLE_QUOTE_CHAR"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "SINGLE_QUOTE_STRING", "symbols": [{"literal":"'"}, "SINGLE_QUOTE_STRING$ebnf$1", {"literal":"'"}], "postprocess": d => join(d[1])}, {"name": "DOUBLE_QUOTE_STRING$ebnf$1", "symbols": []}, {"name": "DOUBLE_QUOTE_STRING$ebnf$1", "symbols": ["DOUBLE_QUOTE_STRING$ebnf$1", "DOUBLE_QUOTE_CHAR"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "DOUBLE_QUOTE_STRING", "symbols": [{"literal":"\""}, "DOUBLE_QUOTE_STRING$ebnf$1", {"literal":"\""}], "postprocess": d => join(d[1])}, {"name": "SINGLE_QUOTE_CHAR", "symbols": [/[^']/], "postprocess": id}, {"name": "SINGLE_QUOTE_CHAR$string$1", "symbols": [{"literal":"\\"}, {"literal":"'"}], "postprocess": function joiner(d) {return d.join('');}}, {"name": "SINGLE_QUOTE_CHAR", "symbols": ["SINGLE_QUOTE_CHAR$string$1"], "postprocess": () => "'"}, {"name": "DOUBLE_QUOTE_CHAR", "symbols": [/[^"]/], "postprocess": id}, {"name": "DOUBLE_QUOTE_CHAR$string$1", "symbols": [{"literal":"\\"}, {"literal":"\""}], "postprocess": function joiner(d) {return d.join('');}}, {"name": "DOUBLE_QUOTE_CHAR", "symbols": ["DOUBLE_QUOTE_CHAR$string$1"], "postprocess": () => '"'}, {"name": "_$ebnf$1", "symbols": []}, {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", "WSCHAR"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, {"name": "_", "symbols": ["_$ebnf$1"], "postprocess": d => d[0] ? ' ' : null}, {"name": "WSCHAR", "symbols": [/[ \t\n\v\f]/], "postprocess": join} ] , ParserStart: "MAIN" } if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { module.exports = grammar; } else { window.grammar = grammar; } })();