parser.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. // https://github.com/nuysoft/regexp
  2. // forked from https://github.com/ForbesLindesay/regexp
  3. function parse(n) {
  4. if ("string" != typeof n) {
  5. var l = new TypeError("The regexp to parse must be represented as a string.");
  6. throw l;
  7. }
  8. return index = 1, cgs = {}, parser.parse(n);
  9. }
  10. function Token(n) {
  11. this.type = n, this.offset = Token.offset(), this.text = Token.text();
  12. }
  13. function Alternate(n, l) {
  14. Token.call(this, "alternate"), this.left = n, this.right = l;
  15. }
  16. function Match(n) {
  17. Token.call(this, "match"), this.body = n.filter(Boolean);
  18. }
  19. function Group(n, l) {
  20. Token.call(this, n), this.body = l;
  21. }
  22. function CaptureGroup(n) {
  23. Group.call(this, "capture-group"), this.index = cgs[this.offset] || (cgs[this.offset] = index++),
  24. this.body = n;
  25. }
  26. function Quantified(n, l) {
  27. Token.call(this, "quantified"), this.body = n, this.quantifier = l;
  28. }
  29. function Quantifier(n, l) {
  30. Token.call(this, "quantifier"), this.min = n, this.max = l, this.greedy = !0;
  31. }
  32. function CharSet(n, l) {
  33. Token.call(this, "charset"), this.invert = n, this.body = l;
  34. }
  35. function CharacterRange(n, l) {
  36. Token.call(this, "range"), this.start = n, this.end = l;
  37. }
  38. function Literal(n) {
  39. Token.call(this, "literal"), this.body = n, this.escaped = this.body != this.text;
  40. }
  41. function Unicode(n) {
  42. Token.call(this, "unicode"), this.code = n.toUpperCase();
  43. }
  44. function Hex(n) {
  45. Token.call(this, "hex"), this.code = n.toUpperCase();
  46. }
  47. function Octal(n) {
  48. Token.call(this, "octal"), this.code = n.toUpperCase();
  49. }
  50. function BackReference(n) {
  51. Token.call(this, "back-reference"), this.code = n.toUpperCase();
  52. }
  53. function ControlCharacter(n) {
  54. Token.call(this, "control-character"), this.code = n.toUpperCase();
  55. }
  56. var parser = function() {
  57. function n(n, l) {
  58. function u() {
  59. this.constructor = n;
  60. }
  61. u.prototype = l.prototype, n.prototype = new u();
  62. }
  63. function l(n, l, u, t, r) {
  64. function e(n, l) {
  65. function u(n) {
  66. function l(n) {
  67. return n.charCodeAt(0).toString(16).toUpperCase();
  68. }
  69. return n.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(n) {
  70. return "\\x0" + l(n);
  71. }).replace(/[\x10-\x1F\x80-\xFF]/g, function(n) {
  72. return "\\x" + l(n);
  73. }).replace(/[\u0180-\u0FFF]/g, function(n) {
  74. return "\\u0" + l(n);
  75. }).replace(/[\u1080-\uFFFF]/g, function(n) {
  76. return "\\u" + l(n);
  77. });
  78. }
  79. var t, r;
  80. switch (n.length) {
  81. case 0:
  82. t = "end of input";
  83. break;
  84. case 1:
  85. t = n[0];
  86. break;
  87. default:
  88. t = n.slice(0, -1).join(", ") + " or " + n[n.length - 1];
  89. }
  90. return r = l ? '"' + u(l) + '"' : "end of input", "Expected " + t + " but " + r + " found.";
  91. }
  92. this.expected = n, this.found = l, this.offset = u, this.line = t, this.column = r,
  93. this.name = "SyntaxError", this.message = e(n, l);
  94. }
  95. function u(n) {
  96. function u() {
  97. return n.substring(Lt, qt);
  98. }
  99. function t() {
  100. return Lt;
  101. }
  102. function r(l) {
  103. function u(l, u, t) {
  104. var r, e;
  105. for (r = u; t > r; r++) e = n.charAt(r), "\n" === e ? (l.seenCR || l.line++, l.column = 1,
  106. l.seenCR = !1) : "\r" === e || "\u2028" === e || "\u2029" === e ? (l.line++, l.column = 1,
  107. l.seenCR = !0) : (l.column++, l.seenCR = !1);
  108. }
  109. return Mt !== l && (Mt > l && (Mt = 0, Dt = {
  110. line: 1,
  111. column: 1,
  112. seenCR: !1
  113. }), u(Dt, Mt, l), Mt = l), Dt;
  114. }
  115. function e(n) {
  116. Ht > qt || (qt > Ht && (Ht = qt, Ot = []), Ot.push(n));
  117. }
  118. function o(n) {
  119. var l = 0;
  120. for (n.sort(); l < n.length; ) n[l - 1] === n[l] ? n.splice(l, 1) : l++;
  121. }
  122. function c() {
  123. var l, u, t, r, o;
  124. return l = qt, u = i(), null !== u ? (t = qt, 124 === n.charCodeAt(qt) ? (r = fl,
  125. qt++) : (r = null, 0 === Wt && e(sl)), null !== r ? (o = c(), null !== o ? (r = [ r, o ],
  126. t = r) : (qt = t, t = il)) : (qt = t, t = il), null === t && (t = al), null !== t ? (Lt = l,
  127. u = hl(u, t), null === u ? (qt = l, l = u) : l = u) : (qt = l, l = il)) : (qt = l,
  128. l = il), l;
  129. }
  130. function i() {
  131. var n, l, u, t, r;
  132. if (n = qt, l = f(), null === l && (l = al), null !== l) if (u = qt, Wt++, t = d(),
  133. Wt--, null === t ? u = al : (qt = u, u = il), null !== u) {
  134. for (t = [], r = h(), null === r && (r = a()); null !== r; ) t.push(r), r = h(),
  135. null === r && (r = a());
  136. null !== t ? (r = s(), null === r && (r = al), null !== r ? (Lt = n, l = dl(l, t, r),
  137. null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n, n = il);
  138. } else qt = n, n = il; else qt = n, n = il;
  139. return n;
  140. }
  141. function a() {
  142. var n;
  143. return n = x(), null === n && (n = Q(), null === n && (n = B())), n;
  144. }
  145. function f() {
  146. var l, u;
  147. return l = qt, 94 === n.charCodeAt(qt) ? (u = pl, qt++) : (u = null, 0 === Wt && e(vl)),
  148. null !== u && (Lt = l, u = wl()), null === u ? (qt = l, l = u) : l = u, l;
  149. }
  150. function s() {
  151. var l, u;
  152. return l = qt, 36 === n.charCodeAt(qt) ? (u = Al, qt++) : (u = null, 0 === Wt && e(Cl)),
  153. null !== u && (Lt = l, u = gl()), null === u ? (qt = l, l = u) : l = u, l;
  154. }
  155. function h() {
  156. var n, l, u;
  157. return n = qt, l = a(), null !== l ? (u = d(), null !== u ? (Lt = n, l = bl(l, u),
  158. null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n, n = il), n;
  159. }
  160. function d() {
  161. var n, l, u;
  162. return Wt++, n = qt, l = p(), null !== l ? (u = k(), null === u && (u = al), null !== u ? (Lt = n,
  163. l = Tl(l, u), null === l ? (qt = n, n = l) : n = l) : (qt = n, n = il)) : (qt = n,
  164. n = il), Wt--, null === n && (l = null, 0 === Wt && e(kl)), n;
  165. }
  166. function p() {
  167. var n;
  168. return n = v(), null === n && (n = w(), null === n && (n = A(), null === n && (n = C(),
  169. null === n && (n = g(), null === n && (n = b()))))), n;
  170. }
  171. function v() {
  172. var l, u, t, r, o, c;
  173. return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)),
  174. null !== u ? (t = T(), null !== t ? (44 === n.charCodeAt(qt) ? (r = ml, qt++) : (r = null,
  175. 0 === Wt && e(Rl)), null !== r ? (o = T(), null !== o ? (125 === n.charCodeAt(qt) ? (c = Fl,
  176. qt++) : (c = null, 0 === Wt && e(Ql)), null !== c ? (Lt = l, u = Sl(t, o), null === u ? (qt = l,
  177. l = u) : l = u) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l,
  178. l = il)) : (qt = l, l = il), l;
  179. }
  180. function w() {
  181. var l, u, t, r;
  182. return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)),
  183. null !== u ? (t = T(), null !== t ? (n.substr(qt, 2) === Ul ? (r = Ul, qt += 2) : (r = null,
  184. 0 === Wt && e(El)), null !== r ? (Lt = l, u = Gl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  185. l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;
  186. }
  187. function A() {
  188. var l, u, t, r;
  189. return l = qt, 123 === n.charCodeAt(qt) ? (u = xl, qt++) : (u = null, 0 === Wt && e(yl)),
  190. null !== u ? (t = T(), null !== t ? (125 === n.charCodeAt(qt) ? (r = Fl, qt++) : (r = null,
  191. 0 === Wt && e(Ql)), null !== r ? (Lt = l, u = Bl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  192. l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;
  193. }
  194. function C() {
  195. var l, u;
  196. return l = qt, 43 === n.charCodeAt(qt) ? (u = jl, qt++) : (u = null, 0 === Wt && e($l)),
  197. null !== u && (Lt = l, u = ql()), null === u ? (qt = l, l = u) : l = u, l;
  198. }
  199. function g() {
  200. var l, u;
  201. return l = qt, 42 === n.charCodeAt(qt) ? (u = Ll, qt++) : (u = null, 0 === Wt && e(Ml)),
  202. null !== u && (Lt = l, u = Dl()), null === u ? (qt = l, l = u) : l = u, l;
  203. }
  204. function b() {
  205. var l, u;
  206. return l = qt, 63 === n.charCodeAt(qt) ? (u = Hl, qt++) : (u = null, 0 === Wt && e(Ol)),
  207. null !== u && (Lt = l, u = Wl()), null === u ? (qt = l, l = u) : l = u, l;
  208. }
  209. function k() {
  210. var l;
  211. return 63 === n.charCodeAt(qt) ? (l = Hl, qt++) : (l = null, 0 === Wt && e(Ol)),
  212. l;
  213. }
  214. function T() {
  215. var l, u, t;
  216. if (l = qt, u = [], zl.test(n.charAt(qt)) ? (t = n.charAt(qt), qt++) : (t = null,
  217. 0 === Wt && e(Il)), null !== t) for (;null !== t; ) u.push(t), zl.test(n.charAt(qt)) ? (t = n.charAt(qt),
  218. qt++) : (t = null, 0 === Wt && e(Il)); else u = il;
  219. return null !== u && (Lt = l, u = Jl(u)), null === u ? (qt = l, l = u) : l = u,
  220. l;
  221. }
  222. function x() {
  223. var l, u, t, r;
  224. return l = qt, 40 === n.charCodeAt(qt) ? (u = Kl, qt++) : (u = null, 0 === Wt && e(Nl)),
  225. null !== u ? (t = R(), null === t && (t = F(), null === t && (t = m(), null === t && (t = y()))),
  226. null !== t ? (41 === n.charCodeAt(qt) ? (r = Pl, qt++) : (r = null, 0 === Wt && e(Vl)),
  227. null !== r ? (Lt = l, u = Xl(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  228. l = il)) : (qt = l, l = il)) : (qt = l, l = il), l;
  229. }
  230. function y() {
  231. var n, l;
  232. return n = qt, l = c(), null !== l && (Lt = n, l = Yl(l)), null === l ? (qt = n,
  233. n = l) : n = l, n;
  234. }
  235. function m() {
  236. var l, u, t;
  237. return l = qt, n.substr(qt, 2) === Zl ? (u = Zl, qt += 2) : (u = null, 0 === Wt && e(_l)),
  238. null !== u ? (t = c(), null !== t ? (Lt = l, u = nu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  239. l = il)) : (qt = l, l = il), l;
  240. }
  241. function R() {
  242. var l, u, t;
  243. return l = qt, n.substr(qt, 2) === lu ? (u = lu, qt += 2) : (u = null, 0 === Wt && e(uu)),
  244. null !== u ? (t = c(), null !== t ? (Lt = l, u = tu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  245. l = il)) : (qt = l, l = il), l;
  246. }
  247. function F() {
  248. var l, u, t;
  249. return l = qt, n.substr(qt, 2) === ru ? (u = ru, qt += 2) : (u = null, 0 === Wt && e(eu)),
  250. null !== u ? (t = c(), null !== t ? (Lt = l, u = ou(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  251. l = il)) : (qt = l, l = il), l;
  252. }
  253. function Q() {
  254. var l, u, t, r, o;
  255. if (Wt++, l = qt, 91 === n.charCodeAt(qt) ? (u = iu, qt++) : (u = null, 0 === Wt && e(au)),
  256. null !== u) if (94 === n.charCodeAt(qt) ? (t = pl, qt++) : (t = null, 0 === Wt && e(vl)),
  257. null === t && (t = al), null !== t) {
  258. for (r = [], o = S(), null === o && (o = U()); null !== o; ) r.push(o), o = S(),
  259. null === o && (o = U());
  260. null !== r ? (93 === n.charCodeAt(qt) ? (o = fu, qt++) : (o = null, 0 === Wt && e(su)),
  261. null !== o ? (Lt = l, u = hu(t, r), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  262. l = il)) : (qt = l, l = il);
  263. } else qt = l, l = il; else qt = l, l = il;
  264. return Wt--, null === l && (u = null, 0 === Wt && e(cu)), l;
  265. }
  266. function S() {
  267. var l, u, t, r;
  268. return Wt++, l = qt, u = U(), null !== u ? (45 === n.charCodeAt(qt) ? (t = pu, qt++) : (t = null,
  269. 0 === Wt && e(vu)), null !== t ? (r = U(), null !== r ? (Lt = l, u = wu(u, r), null === u ? (qt = l,
  270. l = u) : l = u) : (qt = l, l = il)) : (qt = l, l = il)) : (qt = l, l = il), Wt--,
  271. null === l && (u = null, 0 === Wt && e(du)), l;
  272. }
  273. function U() {
  274. var n, l;
  275. return Wt++, n = G(), null === n && (n = E()), Wt--, null === n && (l = null, 0 === Wt && e(Au)),
  276. n;
  277. }
  278. function E() {
  279. var l, u;
  280. return l = qt, Cu.test(n.charAt(qt)) ? (u = n.charAt(qt), qt++) : (u = null, 0 === Wt && e(gu)),
  281. null !== u && (Lt = l, u = bu(u)), null === u ? (qt = l, l = u) : l = u, l;
  282. }
  283. function G() {
  284. var n;
  285. return n = L(), null === n && (n = Y(), null === n && (n = H(), null === n && (n = O(),
  286. null === n && (n = W(), null === n && (n = z(), null === n && (n = I(), null === n && (n = J(),
  287. null === n && (n = K(), null === n && (n = N(), null === n && (n = P(), null === n && (n = V(),
  288. null === n && (n = X(), null === n && (n = _(), null === n && (n = nl(), null === n && (n = ll(),
  289. null === n && (n = ul(), null === n && (n = tl()))))))))))))))))), n;
  290. }
  291. function B() {
  292. var n;
  293. return n = j(), null === n && (n = q(), null === n && (n = $())), n;
  294. }
  295. function j() {
  296. var l, u;
  297. return l = qt, 46 === n.charCodeAt(qt) ? (u = ku, qt++) : (u = null, 0 === Wt && e(Tu)),
  298. null !== u && (Lt = l, u = xu()), null === u ? (qt = l, l = u) : l = u, l;
  299. }
  300. function $() {
  301. var l, u;
  302. return Wt++, l = qt, mu.test(n.charAt(qt)) ? (u = n.charAt(qt), qt++) : (u = null,
  303. 0 === Wt && e(Ru)), null !== u && (Lt = l, u = bu(u)), null === u ? (qt = l, l = u) : l = u,
  304. Wt--, null === l && (u = null, 0 === Wt && e(yu)), l;
  305. }
  306. function q() {
  307. var n;
  308. return n = M(), null === n && (n = D(), null === n && (n = Y(), null === n && (n = H(),
  309. null === n && (n = O(), null === n && (n = W(), null === n && (n = z(), null === n && (n = I(),
  310. null === n && (n = J(), null === n && (n = K(), null === n && (n = N(), null === n && (n = P(),
  311. null === n && (n = V(), null === n && (n = X(), null === n && (n = Z(), null === n && (n = _(),
  312. null === n && (n = nl(), null === n && (n = ll(), null === n && (n = ul(), null === n && (n = tl()))))))))))))))))))),
  313. n;
  314. }
  315. function L() {
  316. var l, u;
  317. return l = qt, n.substr(qt, 2) === Fu ? (u = Fu, qt += 2) : (u = null, 0 === Wt && e(Qu)),
  318. null !== u && (Lt = l, u = Su()), null === u ? (qt = l, l = u) : l = u, l;
  319. }
  320. function M() {
  321. var l, u;
  322. return l = qt, n.substr(qt, 2) === Fu ? (u = Fu, qt += 2) : (u = null, 0 === Wt && e(Qu)),
  323. null !== u && (Lt = l, u = Uu()), null === u ? (qt = l, l = u) : l = u, l;
  324. }
  325. function D() {
  326. var l, u;
  327. return l = qt, n.substr(qt, 2) === Eu ? (u = Eu, qt += 2) : (u = null, 0 === Wt && e(Gu)),
  328. null !== u && (Lt = l, u = Bu()), null === u ? (qt = l, l = u) : l = u, l;
  329. }
  330. function H() {
  331. var l, u;
  332. return l = qt, n.substr(qt, 2) === ju ? (u = ju, qt += 2) : (u = null, 0 === Wt && e($u)),
  333. null !== u && (Lt = l, u = qu()), null === u ? (qt = l, l = u) : l = u, l;
  334. }
  335. function O() {
  336. var l, u;
  337. return l = qt, n.substr(qt, 2) === Lu ? (u = Lu, qt += 2) : (u = null, 0 === Wt && e(Mu)),
  338. null !== u && (Lt = l, u = Du()), null === u ? (qt = l, l = u) : l = u, l;
  339. }
  340. function W() {
  341. var l, u;
  342. return l = qt, n.substr(qt, 2) === Hu ? (u = Hu, qt += 2) : (u = null, 0 === Wt && e(Ou)),
  343. null !== u && (Lt = l, u = Wu()), null === u ? (qt = l, l = u) : l = u, l;
  344. }
  345. function z() {
  346. var l, u;
  347. return l = qt, n.substr(qt, 2) === zu ? (u = zu, qt += 2) : (u = null, 0 === Wt && e(Iu)),
  348. null !== u && (Lt = l, u = Ju()), null === u ? (qt = l, l = u) : l = u, l;
  349. }
  350. function I() {
  351. var l, u;
  352. return l = qt, n.substr(qt, 2) === Ku ? (u = Ku, qt += 2) : (u = null, 0 === Wt && e(Nu)),
  353. null !== u && (Lt = l, u = Pu()), null === u ? (qt = l, l = u) : l = u, l;
  354. }
  355. function J() {
  356. var l, u;
  357. return l = qt, n.substr(qt, 2) === Vu ? (u = Vu, qt += 2) : (u = null, 0 === Wt && e(Xu)),
  358. null !== u && (Lt = l, u = Yu()), null === u ? (qt = l, l = u) : l = u, l;
  359. }
  360. function K() {
  361. var l, u;
  362. return l = qt, n.substr(qt, 2) === Zu ? (u = Zu, qt += 2) : (u = null, 0 === Wt && e(_u)),
  363. null !== u && (Lt = l, u = nt()), null === u ? (qt = l, l = u) : l = u, l;
  364. }
  365. function N() {
  366. var l, u;
  367. return l = qt, n.substr(qt, 2) === lt ? (u = lt, qt += 2) : (u = null, 0 === Wt && e(ut)),
  368. null !== u && (Lt = l, u = tt()), null === u ? (qt = l, l = u) : l = u, l;
  369. }
  370. function P() {
  371. var l, u;
  372. return l = qt, n.substr(qt, 2) === rt ? (u = rt, qt += 2) : (u = null, 0 === Wt && e(et)),
  373. null !== u && (Lt = l, u = ot()), null === u ? (qt = l, l = u) : l = u, l;
  374. }
  375. function V() {
  376. var l, u;
  377. return l = qt, n.substr(qt, 2) === ct ? (u = ct, qt += 2) : (u = null, 0 === Wt && e(it)),
  378. null !== u && (Lt = l, u = at()), null === u ? (qt = l, l = u) : l = u, l;
  379. }
  380. function X() {
  381. var l, u;
  382. return l = qt, n.substr(qt, 2) === ft ? (u = ft, qt += 2) : (u = null, 0 === Wt && e(st)),
  383. null !== u && (Lt = l, u = ht()), null === u ? (qt = l, l = u) : l = u, l;
  384. }
  385. function Y() {
  386. var l, u, t;
  387. return l = qt, n.substr(qt, 2) === dt ? (u = dt, qt += 2) : (u = null, 0 === Wt && e(pt)),
  388. null !== u ? (n.length > qt ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(vt)),
  389. null !== t ? (Lt = l, u = wt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  390. l = il)) : (qt = l, l = il), l;
  391. }
  392. function Z() {
  393. var l, u, t;
  394. return l = qt, 92 === n.charCodeAt(qt) ? (u = At, qt++) : (u = null, 0 === Wt && e(Ct)),
  395. null !== u ? (gt.test(n.charAt(qt)) ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(bt)),
  396. null !== t ? (Lt = l, u = kt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  397. l = il)) : (qt = l, l = il), l;
  398. }
  399. function _() {
  400. var l, u, t, r;
  401. if (l = qt, n.substr(qt, 2) === Tt ? (u = Tt, qt += 2) : (u = null, 0 === Wt && e(xt)),
  402. null !== u) {
  403. if (t = [], yt.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(mt)),
  404. null !== r) for (;null !== r; ) t.push(r), yt.test(n.charAt(qt)) ? (r = n.charAt(qt),
  405. qt++) : (r = null, 0 === Wt && e(mt)); else t = il;
  406. null !== t ? (Lt = l, u = Rt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  407. l = il);
  408. } else qt = l, l = il;
  409. return l;
  410. }
  411. function nl() {
  412. var l, u, t, r;
  413. if (l = qt, n.substr(qt, 2) === Ft ? (u = Ft, qt += 2) : (u = null, 0 === Wt && e(Qt)),
  414. null !== u) {
  415. if (t = [], St.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(Ut)),
  416. null !== r) for (;null !== r; ) t.push(r), St.test(n.charAt(qt)) ? (r = n.charAt(qt),
  417. qt++) : (r = null, 0 === Wt && e(Ut)); else t = il;
  418. null !== t ? (Lt = l, u = Et(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  419. l = il);
  420. } else qt = l, l = il;
  421. return l;
  422. }
  423. function ll() {
  424. var l, u, t, r;
  425. if (l = qt, n.substr(qt, 2) === Gt ? (u = Gt, qt += 2) : (u = null, 0 === Wt && e(Bt)),
  426. null !== u) {
  427. if (t = [], St.test(n.charAt(qt)) ? (r = n.charAt(qt), qt++) : (r = null, 0 === Wt && e(Ut)),
  428. null !== r) for (;null !== r; ) t.push(r), St.test(n.charAt(qt)) ? (r = n.charAt(qt),
  429. qt++) : (r = null, 0 === Wt && e(Ut)); else t = il;
  430. null !== t ? (Lt = l, u = jt(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  431. l = il);
  432. } else qt = l, l = il;
  433. return l;
  434. }
  435. function ul() {
  436. var l, u;
  437. return l = qt, n.substr(qt, 2) === Tt ? (u = Tt, qt += 2) : (u = null, 0 === Wt && e(xt)),
  438. null !== u && (Lt = l, u = $t()), null === u ? (qt = l, l = u) : l = u, l;
  439. }
  440. function tl() {
  441. var l, u, t;
  442. return l = qt, 92 === n.charCodeAt(qt) ? (u = At, qt++) : (u = null, 0 === Wt && e(Ct)),
  443. null !== u ? (n.length > qt ? (t = n.charAt(qt), qt++) : (t = null, 0 === Wt && e(vt)),
  444. null !== t ? (Lt = l, u = bu(t), null === u ? (qt = l, l = u) : l = u) : (qt = l,
  445. l = il)) : (qt = l, l = il), l;
  446. }
  447. var rl, el = arguments.length > 1 ? arguments[1] : {}, ol = {
  448. regexp: c
  449. }, cl = c, il = null, al = "", fl = "|", sl = '"|"', hl = function(n, l) {
  450. return l ? new Alternate(n, l[1]) : n;
  451. }, dl = function(n, l, u) {
  452. return new Match([ n ].concat(l).concat([ u ]));
  453. }, pl = "^", vl = '"^"', wl = function() {
  454. return new Token("start");
  455. }, Al = "$", Cl = '"$"', gl = function() {
  456. return new Token("end");
  457. }, bl = function(n, l) {
  458. return new Quantified(n, l);
  459. }, kl = "Quantifier", Tl = function(n, l) {
  460. return l && (n.greedy = !1), n;
  461. }, xl = "{", yl = '"{"', ml = ",", Rl = '","', Fl = "}", Ql = '"}"', Sl = function(n, l) {
  462. return new Quantifier(n, l);
  463. }, Ul = ",}", El = '",}"', Gl = function(n) {
  464. return new Quantifier(n, 1/0);
  465. }, Bl = function(n) {
  466. return new Quantifier(n, n);
  467. }, jl = "+", $l = '"+"', ql = function() {
  468. return new Quantifier(1, 1/0);
  469. }, Ll = "*", Ml = '"*"', Dl = function() {
  470. return new Quantifier(0, 1/0);
  471. }, Hl = "?", Ol = '"?"', Wl = function() {
  472. return new Quantifier(0, 1);
  473. }, zl = /^[0-9]/, Il = "[0-9]", Jl = function(n) {
  474. return +n.join("");
  475. }, Kl = "(", Nl = '"("', Pl = ")", Vl = '")"', Xl = function(n) {
  476. return n;
  477. }, Yl = function(n) {
  478. return new CaptureGroup(n);
  479. }, Zl = "?:", _l = '"?:"', nu = function(n) {
  480. return new Group("non-capture-group", n);
  481. }, lu = "?=", uu = '"?="', tu = function(n) {
  482. return new Group("positive-lookahead", n);
  483. }, ru = "?!", eu = '"?!"', ou = function(n) {
  484. return new Group("negative-lookahead", n);
  485. }, cu = "CharacterSet", iu = "[", au = '"["', fu = "]", su = '"]"', hu = function(n, l) {
  486. return new CharSet(!!n, l);
  487. }, du = "CharacterRange", pu = "-", vu = '"-"', wu = function(n, l) {
  488. return new CharacterRange(n, l);
  489. }, Au = "Character", Cu = /^[^\\\]]/, gu = "[^\\\\\\]]", bu = function(n) {
  490. return new Literal(n);
  491. }, ku = ".", Tu = '"."', xu = function() {
  492. return new Token("any-character");
  493. }, yu = "Literal", mu = /^[^|\\\/.[()?+*$\^]/, Ru = "[^|\\\\\\/.[()?+*$\\^]", Fu = "\\b", Qu = '"\\\\b"', Su = function() {
  494. return new Token("backspace");
  495. }, Uu = function() {
  496. return new Token("word-boundary");
  497. }, Eu = "\\B", Gu = '"\\\\B"', Bu = function() {
  498. return new Token("non-word-boundary");
  499. }, ju = "\\d", $u = '"\\\\d"', qu = function() {
  500. return new Token("digit");
  501. }, Lu = "\\D", Mu = '"\\\\D"', Du = function() {
  502. return new Token("non-digit");
  503. }, Hu = "\\f", Ou = '"\\\\f"', Wu = function() {
  504. return new Token("form-feed");
  505. }, zu = "\\n", Iu = '"\\\\n"', Ju = function() {
  506. return new Token("line-feed");
  507. }, Ku = "\\r", Nu = '"\\\\r"', Pu = function() {
  508. return new Token("carriage-return");
  509. }, Vu = "\\s", Xu = '"\\\\s"', Yu = function() {
  510. return new Token("white-space");
  511. }, Zu = "\\S", _u = '"\\\\S"', nt = function() {
  512. return new Token("non-white-space");
  513. }, lt = "\\t", ut = '"\\\\t"', tt = function() {
  514. return new Token("tab");
  515. }, rt = "\\v", et = '"\\\\v"', ot = function() {
  516. return new Token("vertical-tab");
  517. }, ct = "\\w", it = '"\\\\w"', at = function() {
  518. return new Token("word");
  519. }, ft = "\\W", st = '"\\\\W"', ht = function() {
  520. return new Token("non-word");
  521. }, dt = "\\c", pt = '"\\\\c"', vt = "any character", wt = function(n) {
  522. return new ControlCharacter(n);
  523. }, At = "\\", Ct = '"\\\\"', gt = /^[1-9]/, bt = "[1-9]", kt = function(n) {
  524. return new BackReference(n);
  525. }, Tt = "\\0", xt = '"\\\\0"', yt = /^[0-7]/, mt = "[0-7]", Rt = function(n) {
  526. return new Octal(n.join(""));
  527. }, Ft = "\\x", Qt = '"\\\\x"', St = /^[0-9a-fA-F]/, Ut = "[0-9a-fA-F]", Et = function(n) {
  528. return new Hex(n.join(""));
  529. }, Gt = "\\u", Bt = '"\\\\u"', jt = function(n) {
  530. return new Unicode(n.join(""));
  531. }, $t = function() {
  532. return new Token("null-character");
  533. }, qt = 0, Lt = 0, Mt = 0, Dt = {
  534. line: 1,
  535. column: 1,
  536. seenCR: !1
  537. }, Ht = 0, Ot = [], Wt = 0;
  538. if ("startRule" in el) {
  539. if (!(el.startRule in ol)) throw new Error("Can't start parsing from rule \"" + el.startRule + '".');
  540. cl = ol[el.startRule];
  541. }
  542. if (Token.offset = t, Token.text = u, rl = cl(), null !== rl && qt === n.length) return rl;
  543. throw o(Ot), Lt = Math.max(qt, Ht), new l(Ot, Lt < n.length ? n.charAt(Lt) : null, Lt, r(Lt).line, r(Lt).column);
  544. }
  545. return n(l, Error), {
  546. SyntaxError: l,
  547. parse: u
  548. };
  549. }(), index = 1, cgs = {};
  550. module.exports = parser