Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/json5/parser.py: 99%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

776 statements  

1# Generated by glop version 0.9.0 

2# https://github.com/dpranke/glop 

3# `glop -o json5/parser.py --no-main --no-memoize -c json5/json5.g` 

4 

5# pylint: disable=line-too-long,too-many-lines 

6# pylint: disable=unnecessary-lambda,unnecessary-direct-lambda-call 

7# ruff: disable[PLC3002] (equivalent of unnecessary-direct-lambda-call) 

8 

9import unicodedata 

10 

11 

12class Parser: 

13 def __init__(self, msg, fname, pos=0): 

14 self.msg = msg 

15 self.end = len(self.msg) 

16 self.fname = fname 

17 self.val = None 

18 self.pos = pos 

19 self.failed = False 

20 self.errpos = pos 

21 self._scopes = [] 

22 self._cache = {} 

23 self._global_vars = {} 

24 

25 def parse(self, global_vars=None): 

26 self._global_vars = global_vars or {} 

27 self._grammar_() 

28 if self.failed: 

29 return None, self._err_str(), self.errpos 

30 return self.val, None, self.pos 

31 

32 def _err_str(self): 

33 lineno, colno = self._err_offsets() 

34 if self.errpos == len(self.msg): 

35 thing = 'end of input' 

36 else: 

37 thing = f'"{self.msg[self.errpos]}"' 

38 return f'{self.fname}:{lineno} Unexpected {thing} at column {colno}' 

39 

40 def _err_offsets(self): 

41 lineno = 1 

42 colno = 1 

43 for i in range(self.errpos): 

44 if self.msg[i] == '\n': 

45 lineno += 1 

46 colno = 1 

47 else: 

48 colno += 1 

49 return lineno, colno 

50 

51 def _succeed(self, v, newpos=None): 

52 self.val = v 

53 self.failed = False 

54 if newpos is not None: 

55 self.pos = newpos 

56 

57 def _fail(self): 

58 self.val = None 

59 self.failed = True 

60 self.errpos = max(self.errpos, self.pos) 

61 

62 def _rewind(self, newpos): 

63 self._succeed(None, newpos) 

64 

65 def _bind(self, rule, var): 

66 rule() 

67 if not self.failed: 

68 self._set(var, self.val) 

69 

70 def _not(self, rule): 

71 p = self.pos 

72 errpos = self.errpos 

73 rule() 

74 if self.failed: 

75 self._succeed(None, p) 

76 else: 

77 self._rewind(p) 

78 self.errpos = errpos 

79 self._fail() 

80 

81 def _opt(self, rule): 

82 p = self.pos 

83 rule() 

84 if self.failed: 

85 self._succeed([], p) 

86 else: 

87 self._succeed([self.val]) 

88 

89 def _plus(self, rule): 

90 vs = [] 

91 rule() 

92 vs.append(self.val) 

93 if self.failed: 

94 return 

95 self._star(rule, vs) 

96 

97 def _star(self, rule, vs=None): 

98 vs = vs or [] 

99 while True: 

100 p = self.pos 

101 rule() 

102 if self.failed: 

103 self._rewind(p) 

104 break 

105 vs.append(self.val) 

106 self._succeed(vs) 

107 

108 def _seq(self, rules): 

109 for rule in rules: 

110 rule() 

111 if self.failed: 

112 return 

113 

114 def _choose(self, rules): 

115 p = self.pos 

116 for rule in rules[:-1]: 

117 rule() 

118 if not self.failed: 

119 return 

120 self._rewind(p) 

121 rules[-1]() 

122 

123 def _ch(self, ch): 

124 p = self.pos 

125 if p < self.end and self.msg[p] == ch: 

126 self._succeed(ch, self.pos + 1) 

127 else: 

128 self._fail() 

129 

130 def _str(self, s): 

131 for ch in s: 

132 self._ch(ch) 

133 if self.failed: 

134 return 

135 self.val = s 

136 

137 def _range(self, i, j): 

138 p = self.pos 

139 if p != self.end and ord(i) <= ord(self.msg[p]) <= ord(j): 

140 self._succeed(self.msg[p], self.pos + 1) 

141 else: 

142 self._fail() 

143 

144 def _push(self, name): 

145 self._scopes.append((name, {})) 

146 

147 def _pop(self, name): 

148 actual_name, _ = self._scopes.pop() 

149 assert name == actual_name 

150 

151 def _get(self, var): 

152 if self._scopes and var in self._scopes[-1][1]: 

153 return self._scopes[-1][1][var] 

154 return self._global_vars[var] 

155 

156 def _set(self, var, val): 

157 self._scopes[-1][1][var] = val 

158 

159 def _is_unicat(self, var, cat): 

160 return unicodedata.category(var) == cat 

161 

162 def _join(self, s, vs): 

163 return s.join(vs) 

164 

165 def _xtou(self, s): 

166 return chr(int(s, base=16)) 

167 

168 def _grammar_(self): 

169 self._push('grammar') 

170 self._seq( 

171 [ 

172 self._sp_, 

173 lambda: self._bind(self._value_, 'v'), 

174 self._trailing_, 

175 lambda: self._succeed(self._get('v')), 

176 ] 

177 ) 

178 self._pop('grammar') 

179 

180 def _trailing_(self): 

181 self._choose([self._trailing__c0_, self._trailing__c1_]) 

182 

183 def _trailing__c0_(self): 

184 self._seq([self._trailing__c0__s0_, self._sp_, self._end_]) 

185 

186 def _trailing__c0__s0_(self): 

187 v = self._get('_consume_trailing') 

188 if v: 

189 self._succeed(v) 

190 else: 

191 self._fail() 

192 

193 def _trailing__c1_(self): 

194 self._not(self._trailing__c1_n_) 

195 

196 def _trailing__c1_n_(self): 

197 v = self._get('_consume_trailing') 

198 if v: 

199 self._succeed(v) 

200 else: 

201 self._fail() 

202 

203 def _sp_(self): 

204 self._star(self._ws_) 

205 

206 def _ws_(self): 

207 self._choose( 

208 [ 

209 self._ws__c0_, 

210 self._eol_, 

211 self._comment_, 

212 self._ws__c3_, 

213 self._ws__c4_, 

214 self._ws__c5_, 

215 self._ws__c6_, 

216 self._ws__c7_, 

217 self._ws__c8_, 

218 ] 

219 ) 

220 

221 def _ws__c0_(self): 

222 self._ch(' ') 

223 

224 def _ws__c3_(self): 

225 self._ch('\t') 

226 

227 def _ws__c4_(self): 

228 self._ch('\v') 

229 

230 def _ws__c5_(self): 

231 self._ch('\f') 

232 

233 def _ws__c6_(self): 

234 self._ch('\xa0') 

235 

236 def _ws__c7_(self): 

237 self._ch('\ufeff') 

238 

239 def _ws__c8_(self): 

240 self._push('ws__c8') 

241 self._seq( 

242 [ 

243 self._ws__c8__s0_, 

244 lambda: self._bind(self._anything_, 'x'), 

245 lambda: self._succeed(self._get('x')), 

246 ] 

247 ) 

248 self._pop('ws__c8') 

249 

250 def _ws__c8__s0_(self): 

251 self._not(lambda: self._not(self._ws__c8__s0_n_n_)) 

252 

253 def _ws__c8__s0_n_n_(self): 

254 (lambda: self._choose([self._ws__c8__s0_n_n_g__c0_]))() 

255 

256 def _ws__c8__s0_n_n_g__c0_(self): 

257 self._seq( 

258 [ 

259 lambda: self._bind(self._anything_, 'x'), 

260 self._ws__c8__s0_n_n_g__c0__s1_, 

261 ] 

262 ) 

263 

264 def _ws__c8__s0_n_n_g__c0__s1_(self): 

265 v = self._is_unicat(self._get('x'), 'Zs') 

266 if v: 

267 self._succeed(v) 

268 else: 

269 self._fail() 

270 

271 def _eol_(self): 

272 self._choose( 

273 [ 

274 self._eol__c0_, 

275 self._eol__c1_, 

276 self._eol__c2_, 

277 self._eol__c3_, 

278 self._eol__c4_, 

279 ] 

280 ) 

281 

282 def _eol__c0_(self): 

283 self._seq([lambda: self._ch('\r'), lambda: self._ch('\n')]) 

284 

285 def _eol__c1_(self): 

286 self._ch('\r') 

287 

288 def _eol__c2_(self): 

289 self._ch('\n') 

290 

291 def _eol__c3_(self): 

292 self._ch('\u2028') 

293 

294 def _eol__c4_(self): 

295 self._ch('\u2029') 

296 

297 def _comment_(self): 

298 self._choose([self._comment__c0_, self._comment__c1_]) 

299 

300 def _comment__c0_(self): 

301 self._seq( 

302 [ 

303 lambda: self._str('//'), 

304 lambda: self._star(self._comment__c0__s1_p_), 

305 ] 

306 ) 

307 

308 def _comment__c0__s1_p_(self): 

309 self._seq([lambda: self._not(self._eol_), self._anything_]) 

310 

311 def _comment__c1_(self): 

312 self._seq( 

313 [ 

314 lambda: self._str('/*'), 

315 self._comment__c1__s1_, 

316 lambda: self._str('*/'), 

317 ] 

318 ) 

319 

320 def _comment__c1__s1_(self): 

321 self._star( 

322 lambda: self._seq([self._comment__c1__s1_p__s0_, self._anything_]) 

323 ) 

324 

325 def _comment__c1__s1_p__s0_(self): 

326 self._not(lambda: self._str('*/')) 

327 

328 def _value_(self): 

329 self._choose( 

330 [ 

331 self._value__c0_, 

332 self._value__c1_, 

333 self._value__c2_, 

334 self._value__c3_, 

335 self._value__c4_, 

336 self._value__c5_, 

337 self._value__c6_, 

338 ] 

339 ) 

340 

341 def _value__c0_(self): 

342 self._seq([lambda: self._str('null'), lambda: self._succeed('None')]) 

343 

344 def _value__c1_(self): 

345 self._seq([lambda: self._str('true'), lambda: self._succeed('True')]) 

346 

347 def _value__c2_(self): 

348 self._seq([lambda: self._str('false'), lambda: self._succeed('False')]) 

349 

350 def _value__c3_(self): 

351 self._push('value__c3') 

352 self._seq( 

353 [ 

354 lambda: self._bind(self._object_, 'v'), 

355 lambda: self._succeed(['object', self._get('v')]), 

356 ] 

357 ) 

358 self._pop('value__c3') 

359 

360 def _value__c4_(self): 

361 self._push('value__c4') 

362 self._seq( 

363 [ 

364 lambda: self._bind(self._array_, 'v'), 

365 lambda: self._succeed(['array', self._get('v')]), 

366 ] 

367 ) 

368 self._pop('value__c4') 

369 

370 def _value__c5_(self): 

371 self._push('value__c5') 

372 self._seq( 

373 [ 

374 lambda: self._bind(self._string_, 'v'), 

375 lambda: self._succeed(['string', self._get('v')]), 

376 ] 

377 ) 

378 self._pop('value__c5') 

379 

380 def _value__c6_(self): 

381 self._push('value__c6') 

382 self._seq( 

383 [ 

384 lambda: self._bind(self._num_literal_, 'v'), 

385 lambda: self._succeed(['number', self._get('v')]), 

386 ] 

387 ) 

388 self._pop('value__c6') 

389 

390 def _object_(self): 

391 self._choose([self._object__c0_, self._object__c1_]) 

392 

393 def _object__c0_(self): 

394 self._push('object__c0') 

395 self._seq( 

396 [ 

397 lambda: self._ch('{'), 

398 self._sp_, 

399 lambda: self._bind(self._member_list_, 'v'), 

400 self._sp_, 

401 lambda: self._ch('}'), 

402 lambda: self._succeed(self._get('v')), 

403 ] 

404 ) 

405 self._pop('object__c0') 

406 

407 def _object__c1_(self): 

408 self._seq( 

409 [ 

410 lambda: self._ch('{'), 

411 self._sp_, 

412 lambda: self._ch('}'), 

413 lambda: self._succeed([]), 

414 ] 

415 ) 

416 

417 def _array_(self): 

418 self._choose([self._array__c0_, self._array__c1_]) 

419 

420 def _array__c0_(self): 

421 self._push('array__c0') 

422 self._seq( 

423 [ 

424 lambda: self._ch('['), 

425 self._sp_, 

426 lambda: self._bind(self._element_list_, 'v'), 

427 self._sp_, 

428 lambda: self._ch(']'), 

429 lambda: self._succeed(self._get('v')), 

430 ] 

431 ) 

432 self._pop('array__c0') 

433 

434 def _array__c1_(self): 

435 self._seq( 

436 [ 

437 lambda: self._ch('['), 

438 self._sp_, 

439 lambda: self._ch(']'), 

440 lambda: self._succeed([]), 

441 ] 

442 ) 

443 

444 def _string_(self): 

445 self._choose([self._string__c0_, self._string__c1_]) 

446 

447 def _string__c0_(self): 

448 self._push('string__c0') 

449 self._seq( 

450 [ 

451 self._squote_, 

452 self._string__c0__s1_, 

453 self._squote_, 

454 lambda: self._succeed(self._join('', self._get('cs'))), 

455 ] 

456 ) 

457 self._pop('string__c0') 

458 

459 def _string__c0__s1_(self): 

460 self._bind(lambda: self._star(self._sqchar_), 'cs') 

461 

462 def _string__c1_(self): 

463 self._push('string__c1') 

464 self._seq( 

465 [ 

466 self._dquote_, 

467 self._string__c1__s1_, 

468 self._dquote_, 

469 lambda: self._succeed(self._join('', self._get('cs'))), 

470 ] 

471 ) 

472 self._pop('string__c1') 

473 

474 def _string__c1__s1_(self): 

475 self._bind(lambda: self._star(self._dqchar_), 'cs') 

476 

477 def _sqchar_(self): 

478 self._choose([self._sqchar__c0_, self._sqchar__c1_, self._sqchar__c2_]) 

479 

480 def _sqchar__c0_(self): 

481 self._push('sqchar__c0') 

482 self._seq( 

483 [ 

484 self._sqchar__c0__s0_, 

485 lambda: self._bind(self._anything_, 'c'), 

486 lambda: self._succeed(self._get('c')), 

487 ] 

488 ) 

489 self._pop('sqchar__c0') 

490 

491 def _sqchar__c0__s0_(self): 

492 self._not(lambda: (self._sqchar__c0__s0_n_g_)()) 

493 

494 def _sqchar__c0__s0_n_g_(self): 

495 self._choose( 

496 [ 

497 lambda: self._seq([self._bslash_]), 

498 lambda: self._seq([self._squote_]), 

499 self._sqchar__c0__s0_n_g__c2_, 

500 ] 

501 ) 

502 

503 def _sqchar__c0__s0_n_g__c2_(self): 

504 self._seq( 

505 [ 

506 self._sqchar__c0__s0_n_g__c2__s0_, 

507 lambda: (self._sqchar__c0__s0_n_g__c2__s1_g_)(), 

508 ] 

509 ) 

510 

511 def _sqchar__c0__s0_n_g__c2__s0_(self): 

512 v = self._get('_strict') 

513 if v: 

514 self._succeed(v) 

515 else: 

516 self._fail() 

517 

518 def _sqchar__c0__s0_n_g__c2__s1_g_(self): 

519 self._choose( 

520 [ 

521 self._sqchar__c0__s0_n_g__c2__s1_g__c0_, 

522 self._sqchar__c0__s0_n_g__c2__s1_g__c1_, 

523 ] 

524 ) 

525 

526 def _sqchar__c0__s0_n_g__c2__s1_g__c0_(self): 

527 self._seq([lambda: self._ch('\r')]) 

528 

529 def _sqchar__c0__s0_n_g__c2__s1_g__c1_(self): 

530 self._seq([lambda: self._ch('\n')]) 

531 

532 def _sqchar__c1_(self): 

533 self._push('sqchar__c1') 

534 self._seq( 

535 [ 

536 self._bslash_, 

537 lambda: self._bind(self._esc_char_, 'c'), 

538 lambda: self._succeed(self._get('c')), 

539 ] 

540 ) 

541 self._pop('sqchar__c1') 

542 

543 def _sqchar__c2_(self): 

544 self._seq([self._bslash_, self._eol_, lambda: self._succeed('')]) 

545 

546 def _dqchar_(self): 

547 self._choose([self._dqchar__c0_, self._dqchar__c1_, self._dqchar__c2_]) 

548 

549 def _dqchar__c0_(self): 

550 self._push('dqchar__c0') 

551 self._seq( 

552 [ 

553 self._dqchar__c0__s0_, 

554 lambda: self._bind(self._anything_, 'c'), 

555 lambda: self._succeed(self._get('c')), 

556 ] 

557 ) 

558 self._pop('dqchar__c0') 

559 

560 def _dqchar__c0__s0_(self): 

561 self._not(lambda: (self._dqchar__c0__s0_n_g_)()) 

562 

563 def _dqchar__c0__s0_n_g_(self): 

564 self._choose( 

565 [ 

566 lambda: self._seq([self._bslash_]), 

567 lambda: self._seq([self._dquote_]), 

568 self._dqchar__c0__s0_n_g__c2_, 

569 ] 

570 ) 

571 

572 def _dqchar__c0__s0_n_g__c2_(self): 

573 self._seq( 

574 [ 

575 self._dqchar__c0__s0_n_g__c2__s0_, 

576 lambda: (self._dqchar__c0__s0_n_g__c2__s1_g_)(), 

577 ] 

578 ) 

579 

580 def _dqchar__c0__s0_n_g__c2__s0_(self): 

581 v = self._get('_strict') 

582 if v: 

583 self._succeed(v) 

584 else: 

585 self._fail() 

586 

587 def _dqchar__c0__s0_n_g__c2__s1_g_(self): 

588 self._choose( 

589 [ 

590 self._dqchar__c0__s0_n_g__c2__s1_g__c0_, 

591 self._dqchar__c0__s0_n_g__c2__s1_g__c1_, 

592 ] 

593 ) 

594 

595 def _dqchar__c0__s0_n_g__c2__s1_g__c0_(self): 

596 self._seq([lambda: self._ch('\r')]) 

597 

598 def _dqchar__c0__s0_n_g__c2__s1_g__c1_(self): 

599 self._seq([lambda: self._ch('\n')]) 

600 

601 def _dqchar__c1_(self): 

602 self._push('dqchar__c1') 

603 self._seq( 

604 [ 

605 self._bslash_, 

606 lambda: self._bind(self._esc_char_, 'c'), 

607 lambda: self._succeed(self._get('c')), 

608 ] 

609 ) 

610 self._pop('dqchar__c1') 

611 

612 def _dqchar__c2_(self): 

613 self._seq([self._bslash_, self._eol_, lambda: self._succeed('')]) 

614 

615 def _bslash_(self): 

616 self._ch('\\') 

617 

618 def _squote_(self): 

619 self._ch("'") 

620 

621 def _dquote_(self): 

622 self._ch('"') 

623 

624 def _esc_char_(self): 

625 self._choose( 

626 [ 

627 self._esc_char__c0_, 

628 self._esc_char__c1_, 

629 self._esc_char__c2_, 

630 self._esc_char__c3_, 

631 self._esc_char__c4_, 

632 self._esc_char__c5_, 

633 self._esc_char__c6_, 

634 self._esc_char__c7_, 

635 self._esc_char__c8_, 

636 self._esc_char__c9_, 

637 self._esc_char__c10_, 

638 self._esc_char__c11_, 

639 self._esc_char__c12_, 

640 ] 

641 ) 

642 

643 def _esc_char__c0_(self): 

644 self._seq([lambda: self._ch('b'), lambda: self._succeed('\b')]) 

645 

646 def _esc_char__c1_(self): 

647 self._seq([lambda: self._ch('f'), lambda: self._succeed('\f')]) 

648 

649 def _esc_char__c10_(self): 

650 self._seq( 

651 [ 

652 lambda: self._ch('0'), 

653 lambda: self._not(self._digit_), 

654 lambda: self._succeed('\x00'), 

655 ] 

656 ) 

657 

658 def _esc_char__c11_(self): 

659 self._push('esc_char__c11') 

660 self._seq( 

661 [ 

662 lambda: self._bind(self._hex_esc_, 'c'), 

663 lambda: self._succeed(self._get('c')), 

664 ] 

665 ) 

666 self._pop('esc_char__c11') 

667 

668 def _esc_char__c12_(self): 

669 self._push('esc_char__c12') 

670 self._seq( 

671 [ 

672 lambda: self._bind(self._unicode_esc_, 'c'), 

673 lambda: self._succeed(self._get('c')), 

674 ] 

675 ) 

676 self._pop('esc_char__c12') 

677 

678 def _esc_char__c2_(self): 

679 self._seq([lambda: self._ch('n'), lambda: self._succeed('\n')]) 

680 

681 def _esc_char__c3_(self): 

682 self._seq([lambda: self._ch('r'), lambda: self._succeed('\r')]) 

683 

684 def _esc_char__c4_(self): 

685 self._seq([lambda: self._ch('t'), lambda: self._succeed('\t')]) 

686 

687 def _esc_char__c5_(self): 

688 self._seq([lambda: self._ch('v'), lambda: self._succeed('\v')]) 

689 

690 def _esc_char__c6_(self): 

691 self._seq([self._squote_, lambda: self._succeed("'")]) 

692 

693 def _esc_char__c7_(self): 

694 self._seq([self._dquote_, lambda: self._succeed('"')]) 

695 

696 def _esc_char__c8_(self): 

697 self._seq([self._bslash_, lambda: self._succeed('\\')]) 

698 

699 def _esc_char__c9_(self): 

700 self._push('esc_char__c9') 

701 self._seq( 

702 [ 

703 self._esc_char__c9__s0_, 

704 lambda: self._bind(self._anything_, 'c'), 

705 lambda: self._succeed(self._get('c')), 

706 ] 

707 ) 

708 self._pop('esc_char__c9') 

709 

710 def _esc_char__c9__s0_(self): 

711 self._not(lambda: (self._esc_char__c9__s0_n_g_)()) 

712 

713 def _esc_char__c9__s0_n_g_(self): 

714 self._choose( 

715 [ 

716 self._esc_char__c9__s0_n_g__c0_, 

717 self._esc_char__c9__s0_n_g__c1_, 

718 lambda: self._seq([self._digit_]), 

719 lambda: self._seq([self._eol_]), 

720 ] 

721 ) 

722 

723 def _esc_char__c9__s0_n_g__c0_(self): 

724 self._seq([lambda: self._ch('x')]) 

725 

726 def _esc_char__c9__s0_n_g__c1_(self): 

727 self._seq([lambda: self._ch('u')]) 

728 

729 def _hex_esc_(self): 

730 self._push('hex_esc') 

731 self._seq( 

732 [ 

733 lambda: self._ch('x'), 

734 lambda: self._bind(self._hex_, 'h1'), 

735 lambda: self._bind(self._hex_, 'h2'), 

736 lambda: self._succeed( 

737 self._xtou(self._get('h1') + self._get('h2')) 

738 ), 

739 ] 

740 ) 

741 self._pop('hex_esc') 

742 

743 def _unicode_esc_(self): 

744 self._push('unicode_esc') 

745 self._seq( 

746 [ 

747 lambda: self._ch('u'), 

748 lambda: self._bind(self._hex_, 'a'), 

749 lambda: self._bind(self._hex_, 'b'), 

750 lambda: self._bind(self._hex_, 'c'), 

751 lambda: self._bind(self._hex_, 'd'), 

752 lambda: self._succeed( 

753 self._xtou( 

754 self._get('a') 

755 + self._get('b') 

756 + self._get('c') 

757 + self._get('d') 

758 ) 

759 ), 

760 ] 

761 ) 

762 self._pop('unicode_esc') 

763 

764 def _element_list_(self): 

765 self._push('element_list') 

766 self._seq( 

767 [ 

768 lambda: self._bind(self._value_, 'v'), 

769 self._element_list__s1_, 

770 self._sp_, 

771 self._element_list__s3_, 

772 lambda: self._succeed([self._get('v')] + self._get('vs')), 

773 ] 

774 ) 

775 self._pop('element_list') 

776 

777 def _element_list__s1_(self): 

778 self._bind(lambda: self._star(self._element_list__s1_l_p_), 'vs') 

779 

780 def _element_list__s1_l_p_(self): 

781 self._seq([self._sp_, lambda: self._ch(','), self._sp_, self._value_]) 

782 

783 def _element_list__s3_(self): 

784 self._opt(lambda: self._ch(',')) 

785 

786 def _member_list_(self): 

787 self._push('member_list') 

788 self._seq( 

789 [ 

790 lambda: self._bind(self._member_, 'm'), 

791 self._member_list__s1_, 

792 self._sp_, 

793 self._member_list__s3_, 

794 lambda: self._succeed([self._get('m')] + self._get('ms')), 

795 ] 

796 ) 

797 self._pop('member_list') 

798 

799 def _member_list__s1_(self): 

800 self._bind(lambda: self._star(self._member_list__s1_l_p_), 'ms') 

801 

802 def _member_list__s1_l_p_(self): 

803 self._seq([self._sp_, lambda: self._ch(','), self._sp_, self._member_]) 

804 

805 def _member_list__s3_(self): 

806 self._opt(lambda: self._ch(',')) 

807 

808 def _member_(self): 

809 self._choose([self._member__c0_, self._member__c1_]) 

810 

811 def _member__c0_(self): 

812 self._push('member__c0') 

813 self._seq( 

814 [ 

815 lambda: self._bind(self._string_, 'k'), 

816 self._sp_, 

817 lambda: self._ch(':'), 

818 self._sp_, 

819 lambda: self._bind(self._value_, 'v'), 

820 lambda: self._succeed([self._get('k'), self._get('v')]), 

821 ] 

822 ) 

823 self._pop('member__c0') 

824 

825 def _member__c1_(self): 

826 self._push('member__c1') 

827 self._seq( 

828 [ 

829 lambda: self._bind(self._ident_, 'k'), 

830 self._sp_, 

831 lambda: self._ch(':'), 

832 self._sp_, 

833 lambda: self._bind(self._value_, 'v'), 

834 lambda: self._succeed([self._get('k'), self._get('v')]), 

835 ] 

836 ) 

837 self._pop('member__c1') 

838 

839 def _ident_(self): 

840 self._push('ident') 

841 self._seq( 

842 [ 

843 lambda: self._bind(self._id_start_, 'hd'), 

844 self._ident__s1_, 

845 lambda: self._succeed( 

846 self._join('', [self._get('hd')] + self._get('tl')) 

847 ), 

848 ] 

849 ) 

850 self._pop('ident') 

851 

852 def _ident__s1_(self): 

853 self._bind(lambda: self._star(self._id_continue_), 'tl') 

854 

855 def _id_start_(self): 

856 self._choose( 

857 [self._ascii_id_start_, self._other_id_start_, self._id_start__c2_] 

858 ) 

859 

860 def _id_start__c2_(self): 

861 self._seq([self._bslash_, self._id_esc_start_]) 

862 

863 def _id_esc_start_(self): 

864 self._choose( 

865 [ 

866 self._id_esc_start__c0_, 

867 self._id_esc_start__c1_, 

868 self._id_esc_start__c2_, 

869 self._id_esc_start__c3_, 

870 self._id_esc_start__c4_, 

871 self._id_esc_start__c5_, 

872 self._id_esc_start__c6_, 

873 self._id_esc_start__c7_, 

874 ] 

875 ) 

876 

877 def _id_esc_start__c0_(self): 

878 self._seq([self._id_esc_start__c0__s0_, self._unicode_esc_]) 

879 

880 def _id_esc_start__c0__s0_(self): 

881 self._not(lambda: self._not(self._id_esc_start__c0__s0_n_n_)) 

882 

883 def _id_esc_start__c0__s0_n_n_(self): 

884 (lambda: self._choose([self._id_esc_start__c0__s0_n_n_g__c0_]))() 

885 

886 def _id_esc_start__c0__s0_n_n_g__c0_(self): 

887 self._seq( 

888 [ 

889 lambda: self._ch('u'), 

890 lambda: (self._id_esc_start__c0__s0_n_n_g__c0__s1_g_)(), 

891 ] 

892 ) 

893 

894 def _id_esc_start__c0__s0_n_n_g__c0__s1_g_(self): 

895 self._choose( 

896 [ 

897 self._id_esc_start__c0__s0_n_n_g__c0__s1_g__c0_, 

898 self._id_esc_start__c0__s0_n_n_g__c0__s1_g__c1_, 

899 self._id_esc_start__c0__s0_n_n_g__c0__s1_g__c2_, 

900 ] 

901 ) 

902 

903 def _id_esc_start__c0__s0_n_n_g__c0__s1_g__c0_(self): 

904 self._seq([lambda: self._str('0024')]) 

905 

906 def _id_esc_start__c0__s0_n_n_g__c0__s1_g__c1_(self): 

907 self._seq([lambda: self._str('005F')]) 

908 

909 def _id_esc_start__c0__s0_n_n_g__c0__s1_g__c2_(self): 

910 self._seq([lambda: self._str('005f')]) 

911 

912 def _id_esc_start__c1_(self): 

913 self._push('id_esc_start__c1') 

914 self._seq( 

915 [ 

916 lambda: self._bind(self._unicode_esc_, 'x'), 

917 self._id_esc_start__c1__s1_, 

918 lambda: self._succeed(self._get('x')), 

919 ] 

920 ) 

921 self._pop('id_esc_start__c1') 

922 

923 def _id_esc_start__c1__s1_(self): 

924 v = self._is_unicat(self._get('x'), 'Ll') 

925 if v: 

926 self._succeed(v) 

927 else: 

928 self._fail() 

929 

930 def _id_esc_start__c2_(self): 

931 self._push('id_esc_start__c2') 

932 self._seq( 

933 [ 

934 lambda: self._bind(self._unicode_esc_, 'x'), 

935 self._id_esc_start__c2__s1_, 

936 lambda: self._succeed(self._get('x')), 

937 ] 

938 ) 

939 self._pop('id_esc_start__c2') 

940 

941 def _id_esc_start__c2__s1_(self): 

942 v = self._is_unicat(self._get('x'), 'Lm') 

943 if v: 

944 self._succeed(v) 

945 else: 

946 self._fail() 

947 

948 def _id_esc_start__c3_(self): 

949 self._push('id_esc_start__c3') 

950 self._seq( 

951 [ 

952 lambda: self._bind(self._unicode_esc_, 'x'), 

953 self._id_esc_start__c3__s1_, 

954 lambda: self._succeed(self._get('x')), 

955 ] 

956 ) 

957 self._pop('id_esc_start__c3') 

958 

959 def _id_esc_start__c3__s1_(self): 

960 v = self._is_unicat(self._get('x'), 'Lo') 

961 if v: 

962 self._succeed(v) 

963 else: 

964 self._fail() 

965 

966 def _id_esc_start__c4_(self): 

967 self._push('id_esc_start__c4') 

968 self._seq( 

969 [ 

970 lambda: self._bind(self._unicode_esc_, 'x'), 

971 self._id_esc_start__c4__s1_, 

972 lambda: self._succeed(self._get('x')), 

973 ] 

974 ) 

975 self._pop('id_esc_start__c4') 

976 

977 def _id_esc_start__c4__s1_(self): 

978 v = self._is_unicat(self._get('x'), 'Lt') 

979 if v: 

980 self._succeed(v) 

981 else: 

982 self._fail() 

983 

984 def _id_esc_start__c5_(self): 

985 self._push('id_esc_start__c5') 

986 self._seq( 

987 [ 

988 lambda: self._bind(self._unicode_esc_, 'x'), 

989 self._id_esc_start__c5__s1_, 

990 lambda: self._succeed(self._get('x')), 

991 ] 

992 ) 

993 self._pop('id_esc_start__c5') 

994 

995 def _id_esc_start__c5__s1_(self): 

996 v = self._is_unicat(self._get('x'), 'Lu') 

997 if v: 

998 self._succeed(v) 

999 else: 

1000 self._fail() 

1001 

1002 def _id_esc_start__c6_(self): 

1003 self._push('id_esc_start__c6') 

1004 self._seq( 

1005 [ 

1006 lambda: self._bind(self._unicode_esc_, 'x'), 

1007 self._id_esc_start__c6__s1_, 

1008 lambda: self._succeed(self._get('x')), 

1009 ] 

1010 ) 

1011 self._pop('id_esc_start__c6') 

1012 

1013 def _id_esc_start__c6__s1_(self): 

1014 v = self._is_unicat(self._get('x'), 'Nl') 

1015 if v: 

1016 self._succeed(v) 

1017 else: 

1018 self._fail() 

1019 

1020 def _id_esc_start__c7_(self): 

1021 self._push('id_esc_start__c7') 

1022 self._seq( 

1023 [ 

1024 lambda: self._bind(self._unicode_esc_, 'x'), 

1025 self._id_esc_start__c7__s1_, 

1026 lambda: self._succeed(self._get('x')), 

1027 ] 

1028 ) 

1029 self._pop('id_esc_start__c7') 

1030 

1031 def _id_esc_start__c7__s1_(self): 

1032 v = self._is_unicat(self._get('x'), 'Cs') 

1033 if v: 

1034 self._succeed(v) 

1035 else: 

1036 self._fail() 

1037 

1038 def _ascii_id_start_(self): 

1039 self._choose( 

1040 [ 

1041 self._ascii_id_start__c0_, 

1042 self._ascii_id_start__c1_, 

1043 self._ascii_id_start__c2_, 

1044 self._ascii_id_start__c3_, 

1045 ] 

1046 ) 

1047 

1048 def _ascii_id_start__c0_(self): 

1049 self._range('a', 'z') 

1050 

1051 def _ascii_id_start__c1_(self): 

1052 self._range('A', 'Z') 

1053 

1054 def _ascii_id_start__c2_(self): 

1055 self._ch('$') 

1056 

1057 def _ascii_id_start__c3_(self): 

1058 self._ch('_') 

1059 

1060 def _other_id_start_(self): 

1061 self._choose( 

1062 [ 

1063 self._other_id_start__c0_, 

1064 self._other_id_start__c1_, 

1065 self._other_id_start__c2_, 

1066 self._other_id_start__c3_, 

1067 self._other_id_start__c4_, 

1068 self._other_id_start__c5_, 

1069 ] 

1070 ) 

1071 

1072 def _other_id_start__c0_(self): 

1073 self._push('other_id_start__c0') 

1074 self._seq( 

1075 [ 

1076 lambda: self._bind(self._anything_, 'x'), 

1077 self._other_id_start__c0__s1_, 

1078 lambda: self._succeed(self._get('x')), 

1079 ] 

1080 ) 

1081 self._pop('other_id_start__c0') 

1082 

1083 def _other_id_start__c0__s1_(self): 

1084 v = self._is_unicat(self._get('x'), 'Ll') 

1085 if v: 

1086 self._succeed(v) 

1087 else: 

1088 self._fail() 

1089 

1090 def _other_id_start__c1_(self): 

1091 self._push('other_id_start__c1') 

1092 self._seq( 

1093 [ 

1094 lambda: self._bind(self._anything_, 'x'), 

1095 self._other_id_start__c1__s1_, 

1096 lambda: self._succeed(self._get('x')), 

1097 ] 

1098 ) 

1099 self._pop('other_id_start__c1') 

1100 

1101 def _other_id_start__c1__s1_(self): 

1102 v = self._is_unicat(self._get('x'), 'Lm') 

1103 if v: 

1104 self._succeed(v) 

1105 else: 

1106 self._fail() 

1107 

1108 def _other_id_start__c2_(self): 

1109 self._push('other_id_start__c2') 

1110 self._seq( 

1111 [ 

1112 lambda: self._bind(self._anything_, 'x'), 

1113 self._other_id_start__c2__s1_, 

1114 lambda: self._succeed(self._get('x')), 

1115 ] 

1116 ) 

1117 self._pop('other_id_start__c2') 

1118 

1119 def _other_id_start__c2__s1_(self): 

1120 v = self._is_unicat(self._get('x'), 'Lo') 

1121 if v: 

1122 self._succeed(v) 

1123 else: 

1124 self._fail() 

1125 

1126 def _other_id_start__c3_(self): 

1127 self._push('other_id_start__c3') 

1128 self._seq( 

1129 [ 

1130 lambda: self._bind(self._anything_, 'x'), 

1131 self._other_id_start__c3__s1_, 

1132 lambda: self._succeed(self._get('x')), 

1133 ] 

1134 ) 

1135 self._pop('other_id_start__c3') 

1136 

1137 def _other_id_start__c3__s1_(self): 

1138 v = self._is_unicat(self._get('x'), 'Lt') 

1139 if v: 

1140 self._succeed(v) 

1141 else: 

1142 self._fail() 

1143 

1144 def _other_id_start__c4_(self): 

1145 self._push('other_id_start__c4') 

1146 self._seq( 

1147 [ 

1148 lambda: self._bind(self._anything_, 'x'), 

1149 self._other_id_start__c4__s1_, 

1150 lambda: self._succeed(self._get('x')), 

1151 ] 

1152 ) 

1153 self._pop('other_id_start__c4') 

1154 

1155 def _other_id_start__c4__s1_(self): 

1156 v = self._is_unicat(self._get('x'), 'Lu') 

1157 if v: 

1158 self._succeed(v) 

1159 else: 

1160 self._fail() 

1161 

1162 def _other_id_start__c5_(self): 

1163 self._push('other_id_start__c5') 

1164 self._seq( 

1165 [ 

1166 lambda: self._bind(self._anything_, 'x'), 

1167 self._other_id_start__c5__s1_, 

1168 lambda: self._succeed(self._get('x')), 

1169 ] 

1170 ) 

1171 self._pop('other_id_start__c5') 

1172 

1173 def _other_id_start__c5__s1_(self): 

1174 v = self._is_unicat(self._get('x'), 'Nl') 

1175 if v: 

1176 self._succeed(v) 

1177 else: 

1178 self._fail() 

1179 

1180 def _id_continue_(self): 

1181 self._choose( 

1182 [ 

1183 self._ascii_id_start_, 

1184 self._digit_, 

1185 self._other_id_start_, 

1186 self._id_continue__c3_, 

1187 self._id_continue__c4_, 

1188 self._id_continue__c5_, 

1189 self._id_continue__c6_, 

1190 self._id_continue__c7_, 

1191 self._id_continue__c8_, 

1192 self._id_continue__c9_, 

1193 ] 

1194 ) 

1195 

1196 def _id_continue__c3_(self): 

1197 self._push('id_continue__c3') 

1198 self._seq( 

1199 [ 

1200 lambda: self._bind(self._anything_, 'x'), 

1201 self._id_continue__c3__s1_, 

1202 lambda: self._succeed(self._get('x')), 

1203 ] 

1204 ) 

1205 self._pop('id_continue__c3') 

1206 

1207 def _id_continue__c3__s1_(self): 

1208 v = self._is_unicat(self._get('x'), 'Mn') 

1209 if v: 

1210 self._succeed(v) 

1211 else: 

1212 self._fail() 

1213 

1214 def _id_continue__c4_(self): 

1215 self._push('id_continue__c4') 

1216 self._seq( 

1217 [ 

1218 lambda: self._bind(self._anything_, 'x'), 

1219 self._id_continue__c4__s1_, 

1220 lambda: self._succeed(self._get('x')), 

1221 ] 

1222 ) 

1223 self._pop('id_continue__c4') 

1224 

1225 def _id_continue__c4__s1_(self): 

1226 v = self._is_unicat(self._get('x'), 'Mc') 

1227 if v: 

1228 self._succeed(v) 

1229 else: 

1230 self._fail() 

1231 

1232 def _id_continue__c5_(self): 

1233 self._push('id_continue__c5') 

1234 self._seq( 

1235 [ 

1236 lambda: self._bind(self._anything_, 'x'), 

1237 self._id_continue__c5__s1_, 

1238 lambda: self._succeed(self._get('x')), 

1239 ] 

1240 ) 

1241 self._pop('id_continue__c5') 

1242 

1243 def _id_continue__c5__s1_(self): 

1244 v = self._is_unicat(self._get('x'), 'Nd') 

1245 if v: 

1246 self._succeed(v) 

1247 else: 

1248 self._fail() 

1249 

1250 def _id_continue__c6_(self): 

1251 self._push('id_continue__c6') 

1252 self._seq( 

1253 [ 

1254 lambda: self._bind(self._anything_, 'x'), 

1255 self._id_continue__c6__s1_, 

1256 lambda: self._succeed(self._get('x')), 

1257 ] 

1258 ) 

1259 self._pop('id_continue__c6') 

1260 

1261 def _id_continue__c6__s1_(self): 

1262 v = self._is_unicat(self._get('x'), 'Pc') 

1263 if v: 

1264 self._succeed(v) 

1265 else: 

1266 self._fail() 

1267 

1268 def _id_continue__c7_(self): 

1269 self._seq([self._bslash_, self._id_esc_continue_]) 

1270 

1271 def _id_continue__c8_(self): 

1272 self._ch('\u200c') 

1273 

1274 def _id_continue__c9_(self): 

1275 self._ch('\u200d') 

1276 

1277 def _id_esc_continue_(self): 

1278 self._choose( 

1279 [ 

1280 self._id_esc_start_, 

1281 self._id_esc_continue__c1_, 

1282 self._id_esc_continue__c2_, 

1283 self._id_esc_continue__c3_, 

1284 self._id_esc_continue__c4_, 

1285 self._id_esc_continue__c5_, 

1286 ] 

1287 ) 

1288 

1289 def _id_esc_continue__c1_(self): 

1290 self._push('id_esc_continue__c1') 

1291 self._seq( 

1292 [ 

1293 lambda: self._bind(self._unicode_esc_, 'x'), 

1294 self._id_esc_continue__c1__s1_, 

1295 lambda: self._succeed(self._get('x')), 

1296 ] 

1297 ) 

1298 self._pop('id_esc_continue__c1') 

1299 

1300 def _id_esc_continue__c1__s1_(self): 

1301 v = self._is_unicat(self._get('x'), 'Mn') 

1302 if v: 

1303 self._succeed(v) 

1304 else: 

1305 self._fail() 

1306 

1307 def _id_esc_continue__c2_(self): 

1308 self._push('id_esc_continue__c2') 

1309 self._seq( 

1310 [ 

1311 lambda: self._bind(self._unicode_esc_, 'x'), 

1312 self._id_esc_continue__c2__s1_, 

1313 lambda: self._succeed(self._get('x')), 

1314 ] 

1315 ) 

1316 self._pop('id_esc_continue__c2') 

1317 

1318 def _id_esc_continue__c2__s1_(self): 

1319 v = self._is_unicat(self._get('x'), 'Mc') 

1320 if v: 

1321 self._succeed(v) 

1322 else: 

1323 self._fail() 

1324 

1325 def _id_esc_continue__c3_(self): 

1326 self._push('id_esc_continue__c3') 

1327 self._seq( 

1328 [ 

1329 lambda: self._bind(self._unicode_esc_, 'x'), 

1330 self._id_esc_continue__c3__s1_, 

1331 lambda: self._succeed(self._get('x')), 

1332 ] 

1333 ) 

1334 self._pop('id_esc_continue__c3') 

1335 

1336 def _id_esc_continue__c3__s1_(self): 

1337 v = self._is_unicat(self._get('x'), 'Nd') 

1338 if v: 

1339 self._succeed(v) 

1340 else: 

1341 self._fail() 

1342 

1343 def _id_esc_continue__c4_(self): 

1344 self._push('id_esc_continue__c4') 

1345 self._seq( 

1346 [ 

1347 lambda: self._bind(self._unicode_esc_, 'x'), 

1348 self._id_esc_continue__c4__s1_, 

1349 lambda: self._succeed(self._get('x')), 

1350 ] 

1351 ) 

1352 self._pop('id_esc_continue__c4') 

1353 

1354 def _id_esc_continue__c4__s1_(self): 

1355 v = self._is_unicat(self._get('x'), 'Pc') 

1356 if v: 

1357 self._succeed(v) 

1358 else: 

1359 self._fail() 

1360 

1361 def _id_esc_continue__c5_(self): 

1362 self._seq([self._id_esc_continue__c5__s0_, self._unicode_esc_]) 

1363 

1364 def _id_esc_continue__c5__s0_(self): 

1365 self._not(lambda: self._not(self._id_esc_continue__c5__s0_n_n_)) 

1366 

1367 def _id_esc_continue__c5__s0_n_n_(self): 

1368 (lambda: self._choose([self._id_esc_continue__c5__s0_n_n_g__c0_]))() 

1369 

1370 def _id_esc_continue__c5__s0_n_n_g__c0_(self): 

1371 self._seq( 

1372 [ 

1373 lambda: self._ch('u'), 

1374 lambda: (self._id_esc_continue__c5__s0_n_n_g__c0__s1_g_)(), 

1375 ] 

1376 ) 

1377 

1378 def _id_esc_continue__c5__s0_n_n_g__c0__s1_g_(self): 

1379 self._choose( 

1380 [ 

1381 self._id_esc_continue__c5__s0_n_n_g__c0__s1_g__c0_, 

1382 self._id_esc_continue__c5__s0_n_n_g__c0__s1_g__c1_, 

1383 self._id_esc_continue__c5__s0_n_n_g__c0__s1_g__c2_, 

1384 self._id_esc_continue__c5__s0_n_n_g__c0__s1_g__c3_, 

1385 ] 

1386 ) 

1387 

1388 def _id_esc_continue__c5__s0_n_n_g__c0__s1_g__c0_(self): 

1389 self._seq([lambda: self._str('200C')]) 

1390 

1391 def _id_esc_continue__c5__s0_n_n_g__c0__s1_g__c1_(self): 

1392 self._seq([lambda: self._str('200c')]) 

1393 

1394 def _id_esc_continue__c5__s0_n_n_g__c0__s1_g__c2_(self): 

1395 self._seq([lambda: self._str('200D')]) 

1396 

1397 def _id_esc_continue__c5__s0_n_n_g__c0__s1_g__c3_(self): 

1398 self._seq([lambda: self._str('200d')]) 

1399 

1400 def _num_literal_(self): 

1401 self._choose( 

1402 [ 

1403 self._num_literal__c0_, 

1404 self._num_literal__c1_, 

1405 self._num_literal__c2_, 

1406 ] 

1407 ) 

1408 

1409 def _num_literal__c0_(self): 

1410 self._push('num_literal__c0') 

1411 self._seq( 

1412 [ 

1413 lambda: self._ch('-'), 

1414 lambda: self._bind(self._unsigned_lit_, 'n'), 

1415 lambda: self._succeed('-' + self._get('n')), 

1416 ] 

1417 ) 

1418 self._pop('num_literal__c0') 

1419 

1420 def _num_literal__c1_(self): 

1421 self._push('num_literal__c1') 

1422 self._seq( 

1423 [ 

1424 lambda: self._ch('+'), 

1425 lambda: self._bind(self._unsigned_lit_, 'n'), 

1426 lambda: self._succeed('+' + self._get('n')), 

1427 ] 

1428 ) 

1429 self._pop('num_literal__c1') 

1430 

1431 def _num_literal__c2_(self): 

1432 self._push('num_literal__c2') 

1433 self._seq( 

1434 [ 

1435 lambda: self._bind(self._unsigned_lit_, 'n'), 

1436 lambda: self._succeed(self._get('n')), 

1437 ] 

1438 ) 

1439 self._pop('num_literal__c2') 

1440 

1441 def _unsigned_lit_(self): 

1442 self._choose( 

1443 [ 

1444 self._unsigned_lit__c0_, 

1445 self._hex_literal_, 

1446 self._unsigned_lit__c2_, 

1447 self._unsigned_lit__c3_, 

1448 ] 

1449 ) 

1450 

1451 def _unsigned_lit__c0_(self): 

1452 self._push('unsigned_lit__c0') 

1453 self._seq( 

1454 [ 

1455 lambda: self._bind(self._dec_literal_, 'd'), 

1456 lambda: self._not(self._id_start_), 

1457 lambda: self._succeed(self._get('d')), 

1458 ] 

1459 ) 

1460 self._pop('unsigned_lit__c0') 

1461 

1462 def _unsigned_lit__c2_(self): 

1463 self._str('Infinity') 

1464 

1465 def _unsigned_lit__c3_(self): 

1466 self._str('NaN') 

1467 

1468 def _dec_literal_(self): 

1469 self._choose( 

1470 [ 

1471 self._dec_literal__c0_, 

1472 self._dec_literal__c1_, 

1473 self._dec_literal__c2_, 

1474 self._dec_literal__c3_, 

1475 self._dec_literal__c4_, 

1476 self._dec_literal__c5_, 

1477 ] 

1478 ) 

1479 

1480 def _dec_literal__c0_(self): 

1481 self._push('dec_literal__c0') 

1482 self._seq( 

1483 [ 

1484 lambda: self._bind(self._dec_int_lit_, 'd'), 

1485 lambda: self._bind(self._frac_, 'f'), 

1486 lambda: self._bind(self._exp_, 'e'), 

1487 lambda: self._succeed( 

1488 self._get('d') + self._get('f') + self._get('e') 

1489 ), 

1490 ] 

1491 ) 

1492 self._pop('dec_literal__c0') 

1493 

1494 def _dec_literal__c1_(self): 

1495 self._push('dec_literal__c1') 

1496 self._seq( 

1497 [ 

1498 lambda: self._bind(self._dec_int_lit_, 'd'), 

1499 lambda: self._bind(self._frac_, 'f'), 

1500 lambda: self._succeed(self._get('d') + self._get('f')), 

1501 ] 

1502 ) 

1503 self._pop('dec_literal__c1') 

1504 

1505 def _dec_literal__c2_(self): 

1506 self._push('dec_literal__c2') 

1507 self._seq( 

1508 [ 

1509 lambda: self._bind(self._dec_int_lit_, 'd'), 

1510 lambda: self._bind(self._exp_, 'e'), 

1511 lambda: self._succeed(self._get('d') + self._get('e')), 

1512 ] 

1513 ) 

1514 self._pop('dec_literal__c2') 

1515 

1516 def _dec_literal__c3_(self): 

1517 self._push('dec_literal__c3') 

1518 self._seq( 

1519 [ 

1520 lambda: self._bind(self._dec_int_lit_, 'd'), 

1521 lambda: self._succeed(self._get('d')), 

1522 ] 

1523 ) 

1524 self._pop('dec_literal__c3') 

1525 

1526 def _dec_literal__c4_(self): 

1527 self._push('dec_literal__c4') 

1528 self._seq( 

1529 [ 

1530 lambda: self._bind(self._lead_frac_, 'f'), 

1531 lambda: self._bind(self._exp_, 'e'), 

1532 lambda: self._succeed(self._get('f') + self._get('e')), 

1533 ] 

1534 ) 

1535 self._pop('dec_literal__c4') 

1536 

1537 def _dec_literal__c5_(self): 

1538 self._push('dec_literal__c5') 

1539 self._seq( 

1540 [ 

1541 lambda: self._bind(self._lead_frac_, 'f'), 

1542 lambda: self._succeed(self._get('f')), 

1543 ] 

1544 ) 

1545 self._pop('dec_literal__c5') 

1546 

1547 def _dec_int_lit_(self): 

1548 self._choose([self._dec_int_lit__c0_, self._dec_int_lit__c1_]) 

1549 

1550 def _dec_int_lit__c0_(self): 

1551 self._seq( 

1552 [ 

1553 lambda: self._ch('0'), 

1554 lambda: self._not(self._digit_), 

1555 lambda: self._succeed('0'), 

1556 ] 

1557 ) 

1558 

1559 def _dec_int_lit__c1_(self): 

1560 self._push('dec_int_lit__c1') 

1561 self._seq( 

1562 [ 

1563 lambda: self._bind(self._nonzerodigit_, 'd'), 

1564 self._dec_int_lit__c1__s1_, 

1565 lambda: self._succeed( 

1566 self._get('d') + self._join('', self._get('ds')) 

1567 ), 

1568 ] 

1569 ) 

1570 self._pop('dec_int_lit__c1') 

1571 

1572 def _dec_int_lit__c1__s1_(self): 

1573 self._bind(lambda: self._star(self._digit_), 'ds') 

1574 

1575 def _digit_(self): 

1576 self._range('0', '9') 

1577 

1578 def _nonzerodigit_(self): 

1579 self._range('1', '9') 

1580 

1581 def _hex_literal_(self): 

1582 self._push('hex_literal') 

1583 self._seq( 

1584 [ 

1585 self._hex_literal__s0_, 

1586 self._hex_literal__s1_, 

1587 lambda: self._succeed('0x' + self._join('', self._get('hs'))), 

1588 ] 

1589 ) 

1590 self._pop('hex_literal') 

1591 

1592 def _hex_literal__s0_(self): 

1593 self._choose([lambda: self._str('0x'), lambda: self._str('0X')]) 

1594 

1595 def _hex_literal__s1_(self): 

1596 self._bind(lambda: self._plus(self._hex_), 'hs') 

1597 

1598 def _hex_(self): 

1599 self._choose([self._hex__c0_, self._hex__c1_, self._digit_]) 

1600 

1601 def _hex__c0_(self): 

1602 self._range('a', 'f') 

1603 

1604 def _hex__c1_(self): 

1605 self._range('A', 'F') 

1606 

1607 def _frac_(self): 

1608 self._push('frac') 

1609 self._seq( 

1610 [ 

1611 lambda: self._ch('.'), 

1612 self._frac__s1_, 

1613 lambda: self._succeed('.' + self._join('', self._get('ds'))), 

1614 ] 

1615 ) 

1616 self._pop('frac') 

1617 

1618 def _frac__s1_(self): 

1619 self._bind(lambda: self._star(self._digit_), 'ds') 

1620 

1621 def _lead_frac_(self): 

1622 self._push('lead_frac') 

1623 self._seq( 

1624 [ 

1625 lambda: self._ch('.'), 

1626 self._lead_frac__s1_, 

1627 lambda: self._succeed('.' + self._join('', self._get('ds'))), 

1628 ] 

1629 ) 

1630 self._pop('lead_frac') 

1631 

1632 def _lead_frac__s1_(self): 

1633 self._bind(lambda: self._plus(self._digit_), 'ds') 

1634 

1635 def _exp_(self): 

1636 self._choose([self._exp__c0_, self._exp__c1_]) 

1637 

1638 def _exp__c0_(self): 

1639 self._push('exp__c0') 

1640 self._seq( 

1641 [ 

1642 lambda: self._bind(self._exp__c0__s0_l_, 'm'), 

1643 lambda: self._bind(self._exp__c0__s1_l_, 's'), 

1644 self._exp__c0__s2_, 

1645 lambda: self._succeed( 

1646 self._get('m') 

1647 + self._get('s') 

1648 + self._join('', self._get('ds')) 

1649 ), 

1650 ] 

1651 ) 

1652 self._pop('exp__c0') 

1653 

1654 def _exp__c0__s0_l_(self): 

1655 self._choose([lambda: self._ch('e'), lambda: self._ch('E')]) 

1656 

1657 def _exp__c0__s1_l_(self): 

1658 self._choose([lambda: self._ch('+'), lambda: self._ch('-')]) 

1659 

1660 def _exp__c0__s2_(self): 

1661 self._bind(lambda: self._plus(self._digit_), 'ds') 

1662 

1663 def _exp__c1_(self): 

1664 self._push('exp__c1') 

1665 self._seq( 

1666 [ 

1667 lambda: self._bind(self._exp__c1__s0_l_, 'm'), 

1668 self._exp__c1__s1_, 

1669 lambda: self._succeed( 

1670 self._get('m') + self._join('', self._get('ds')) 

1671 ), 

1672 ] 

1673 ) 

1674 self._pop('exp__c1') 

1675 

1676 def _exp__c1__s0_l_(self): 

1677 self._choose([lambda: self._ch('e'), lambda: self._ch('E')]) 

1678 

1679 def _exp__c1__s1_(self): 

1680 self._bind(lambda: self._plus(self._digit_), 'ds') 

1681 

1682 def _anything_(self): 

1683 if self.pos < self.end: 

1684 self._succeed(self.msg[self.pos], self.pos + 1) 

1685 else: 

1686 self._fail() 

1687 

1688 def _end_(self): 

1689 if self.pos == self.end: 

1690 self._succeed(None) 

1691 else: 

1692 self._fail()