abstract
| - Below is the full text to lev_lex.c from the source code of NetHack 3.0.0. To link to a particular line, write [[NetHack 3.0.0/lev_lex.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. # include "stdio.h" 2. # define U(x) x 3. # define NLSTATE yyprevious=YYNEWLINE 4. # define BEGIN yybgin = yysvec + 1 + 5. # define INITIAL 0 6. # define YYLERR yysvec 7. # define YYSTATE (yyestate-yysvec-1) 8. # define YYOPTIM 1 9. # define YYLMAX 200 10. # define output(c) putc(c,yyout) 11. # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 12. # define unput(c) {yytchar= (c);if(yytchar=='
')yylineno--;*yysptr++=yytchar;} 13. # define yymore() (yymorfg=1) 14. # define ECHO fprintf(yyout, "%s",yytext) 15. # define REJECT { nstr = yyreject(); goto yyfussy;} 16. int yyleng; extern char yytext[]; 17. int yymorfg; 18. extern char *yysptr, yysbuf[]; 19. int yytchar; 20. FILE *yyin ={stdin}, *yyout ={stdout}; 21. extern int yylineno; 22. struct yysvf { 23. struct yywork *yystoff; 24. struct yysvf *yyother; 25. int *yystops;}; 26. struct yysvf *yyestate; 27. extern struct yysvf yysvec[], *yybgin; 28. /* SCCS Id: @(#)lev_lex.c 3.0 89/07/02 29. /* Copyright (c) 1989 by Jean-Christophe Collet */ 30. /* NetHack may be freely redistributed. See license for details. */ 31. 32. #include "hack.h" 33. #include "lev_comp.h" 34. #include "sp_lev.h" 35. 36. int line_number = 1; 37. 38. /* This is *** UGLY *** but I can't think a better way to do it 39. * I really need a huge buffer to scan maps... 40. */ 41. 42. #undef YYLMAX 43. #define YYLMAX 2048 44. 45. # define MAPC 2 46. # define YYNEWLINE 10 47. yylex(){ 48. int nstr; extern int yyprevious; 49. while((nstr = yylook()) >= 0) 50. yyfussy: switch(nstr){ 51. case 0: 52. if(yywrap()) return(0); break; 53. case 1: 54. { line_number++; } 55. break; 56. case 2: 57. return MAZE_ID; 58. break; 59. case 3: 60. return LEVEL_ID; 61. break; 62. case 4: 63. return GEOMETRY_ID; 64. break; 65. case 5: 66. { BEGIN MAPC; } 67. break; 68. case 6: 69. { line_number++; yymore(); } 70. break; 71. case 7: 72. { BEGIN 0; 73. yytext[yyleng-7] = 0; /* Discard
ENDMAP */ 74. yylval.map = (char *) alloc(strlen(yytext)+1); 75. strcpy(yylval.map, yytext+1); 76. return MAP_ID; 77. } 78. break; 79. case 8: 80. return OBJECT_ID; 81. break; 82. case 9: 83. return MONSTER_ID; 84. break; 85. case 10: 86. return TRAP_ID; 87. break; 88. case 11: 89. return DOOR_ID; 90. break; 91. case 12: 92. return DRAWBRIDGE_ID; 93. break; 94. case 13: 95. return MAZEWALK_ID; 96. break; 97. case 14: 98. return REGION_ID; 99. break; 100. case 15: 101. return RANDOM_OBJECTS_ID; 102. break; 103. case 16: 104. return RANDOM_MONSTERS_ID; 105. break; 106. case 17: 107. return RANDOM_PLACES_ID; 108. break; 109. case 18: 110. return ALTAR_ID; 111. break; 112. case 19: 113. return LADDER_ID; 114. break; 115. case 20: 116. return NON_DIGGABLE_ID; 117. break; 118. case 21: 119. return ROOM_ID; 120. break; 121. case 22: 122. { yylval.i=D_ISOPEN; return DOOR_STATE; } 123. break; 124. case 23: 125. { yylval.i=D_CLOSED; return DOOR_STATE; } 126. break; 127. case 24: 128. { yylval.i=D_LOCKED; return DOOR_STATE; } 129. break; 130. case 25: 131. { yylval.i=D_NODOOR; return DOOR_STATE; } 132. break; 133. case 26: 134. { yylval.i=D_BROKEN; return DOOR_STATE; } 135. break; 136. case 27: 137. { yylval.i=W_NORTH; return DIRECTION; } 138. break; 139. case 28: 140. { yylval.i=W_EAST; return DIRECTION; } 141. break; 142. case 29: 143. { yylval.i=W_SOUTH; return DIRECTION; } 144. break; 145. case 30: 146. { yylval.i=W_WEST; return DIRECTION; } 147. break; 148. case 31: 149. { yylval.i = -1; return RANDOM_TYPE; } 150. break; 151. case 32: 152. return O_REGISTER; 153. break; 154. case 33: 155. return M_REGISTER; 156. break; 157. case 34: 158. return P_REGISTER; 159. break; 160. case 35: 161. return A_REGISTER; 162. break; 163. case 36: 164. { yylval.i=1; return LEFT_OR_RIGHT; } 165. break; 166. case 37: 167. { yylval.i=3; return LEFT_OR_RIGHT; } 168. break; 169. case 38: 170. { yylval.i=2; return CENTER; } 171. break; 172. case 39: 173. { yylval.i=1; return TOP_OR_BOT; } 174. break; 175. case 40: 176. { yylval.i=3; return TOP_OR_BOT; } 177. break; 178. case 41: 179. { yylval.i=1; return LIGHT_STATE; } 180. break; 181. case 42: 182. { yylval.i=0; return LIGHT_STATE; } 183. break; 184. case 43: 185. { yylval.i=A_LAW; return ALIGNMENT; } 186. break; 187. case 44: 188. { yylval.i=A_NEUTRAL; return ALIGNMENT; } 189. break; 190. case 45: 191. { yylval.i=A_CHAOS; return ALIGNMENT; } 192. break; 193. case 46: 194. { yylval.i=1; return ALTAR_TYPE; } 195. break; 196. case 47: 197. { yylval.i=0; return ALTAR_TYPE; } 198. break; 199. case 48: 200. { yylval.i=1; return UP_OR_DOWN; } 201. break; 202. case 49: 203. { yylval.i=0; return UP_OR_DOWN; } 204. break; 205. case 50: 206. { yylval.i=atoi(yytext); return INTEGER; } 207. break; 208. case 51: 209. { yytext[yyleng-1] = 0; /* Discard the trailing \" */ 210. yylval.map = (char *) alloc(strlen(yytext+1)+1); 211. strcpy(yylval.map, yytext+1); /* Discard the first \" */ 212. return STRING; } 213. break; 214. case 52: 215. { line_number++; } 216. break; 217. case 53: 218. ; 219. break; 220. case 54: 221. { yylval.i = yytext[1]; return CHAR; } 222. break; 223. case 55: 224. { return yytext[0]; } 225. break; 226. case -1: 227. break; 228. default: 229. fprintf(yyout,"bad switch yylook %d",nstr); 230. } return(0); } 231. /* end of yylex */ 232. int yyvstop[] ={ 233. 0, 234. 235. 55, 236. 0, 237. 238. 53, 239. 55, 240. 0, 241. 242. 52, 243. 0, 244. 245. 55, 246. 0, 247. 248. 55, 249. 0, 250. 251. 50, 252. 55, 253. 0, 254. 255. 55, 256. 0, 257. 258. 55, 259. 0, 260. 261. 55, 262. 0, 263. 264. 55, 265. 0, 266. 267. 55, 268. 0, 269. 270. 55, 271. 0, 272. 273. 55, 274. 0, 275. 276. 55, 277. 0, 278. 279. 55, 280. 0, 281. 282. 55, 283. 0, 284. 285. 55, 286. 0, 287. 288. 55, 289. 0, 290. 291. 55, 292. 0, 293. 294. 55, 295. 0, 296. 297. 55, 298. 0, 299. 300. 55, 301. 0, 302. 303. 55, 304. 0, 305. 306. 55, 307. 0, 308. 309. 55, 310. 0, 311. 312. 55, 313. 0, 314. 315. 55, 316. 0, 317. 318. 55, 319. 0, 320. 321. 55, 322. 0, 323. 324. 55, 325. 0, 326. 327. 55, 328. 0, 329. 330. 55, 331. 0, 332. 333. 6, 334. 52, 335. 0, 336. 337. 53, 338. 55, 339. 0, 340. 341. 55, 342. 0, 343. 344. 55, 345. 0, 346. 347. 55, 348. 0, 349. 350. 53, 351. 0, 352. 353. 51, 354. 0, 355. 356. 50, 357. 0, 358. 359. 48, 360. 0, 361. 362. 1, 363. 0, 364. 365. 6, 366. 0, 367. 368. 53, 369. 0, 370. 371. 1, 372. 6, 373. 0, 374. 375. 54, 376. 0, 377. 378. 43, 379. 0, 380. 381. 41, 382. 0, 383. 384. 39, 385. 0, 386. 387. -5, 388. 0, 389. 390. 11, 391. 0, 392. 393. 2, 394. 0, 395. 396. 21, 397. 0, 398. 399. 10, 400. 0, 401. 402. 49, 403. 0, 404. 405. 28, 406. 0, 407. 408. 36, 409. 0, 410. 411. 22, 412. 0, 413. 414. 30, 415. 0, 416. 417. 5, 418. 0, 419. 420. 18, 421. 0, 422. 423. 3, 424. 0, 425. 426. 35, 427. 0, 428. 429. 47, 430. 0, 431. 432. 45, 433. 0, 434. 435. 27, 436. 0, 437. 438. 34, 439. 0, 440. 441. 37, 442. 0, 443. 444. 29, 445. 0, 446. 447. 42, 448. 0, 449. 450. 19, 451. 0, 452. 453. 8, 454. 0, 455. 456. 14, 457. 0, 458. 459. 40, 460. 0, 461. 462. 26, 463. 0, 464. 465. 38, 466. 0, 467. 468. 23, 469. 0, 470. 471. 24, 472. 0, 473. 474. 25, 475. 0, 476. 477. 32, 478. 0, 479. 480. 31, 481. 0, 482. 483. 46, 484. 0, 485. 486. -7, 487. 0, 488. 489. 9, 490. 0, 491. 492. 33, 493. 0, 494. 495. 44, 496. 0, 497. 498. 7, 499. 0, 500. 501. 4, 502. 0, 503. 504. 13, 505. 0, 506. 507. 12, 508. 0, 509. 510. 20, 511. 0, 512. 513. 17, 514. 0, 515. 516. 15, 517. 0, 518. 519. 16, 520. 0, 521. 0}; 522. # define YYTYPE int 523. struct yywork { YYTYPE verify, advance; } yycrank[] ={ 524. 0,0, 0,0, 1,5, 0,0, 525. 0,0, 0,0, 0,0, 0,0, 526. 8,43, 0,0, 1,6, 1,7, 527. 9,45, 0,0, 6,42, 0,0, 528. 8,43, 8,43, 0,0, 0,0, 529. 9,45, 9,0, 41,94, 0,0, 530. 0,0, 0,0, 0,0, 0,0, 531. 0,0, 0,0, 0,0, 0,0, 532. 0,0, 1,6, 0,0, 1,8, 533. 1,5, 6,42, 0,0, 8,43, 534. 1,9, 8,44, 8,43, 9,45, 535. 41,95, 9,45, 9,45, 41,95, 536. 45,96, 1,10, 0,0, 0,0, 537. 0,0, 0,0, 0,0, 8,43, 538. 0,0, 0,0, 0,0, 9,45, 539. 0,0, 0,0, 0,0, 0,0, 540. 0,0, 0,0, 1,11, 14,51, 541. 15,53, 1,12, 13,50, 14,52, 542. 1,13, 17,56, 36,89, 49,99, 543. 51,101, 1,14, 1,15, 1,16, 544. 1,17, 11,47, 15,54, 1,18, 545. 12,48, 1,19, 16,55, 12,49, 546. 2,5, 18,57, 19,60, 40,93, 547. 47,97, 18,58, 48,98, 50,100, 548. 2,6, 2,7, 1,20, 1,21, 549. 1,22, 1,23, 1,24, 18,59, 550. 24,68, 34,86, 52,102, 53,103, 551. 54,104, 1,25, 1,26, 1,27, 552. 1,28, 1,29, 20,61, 1,30, 553. 1,31, 1,32, 1,33, 2,6, 554. 1,34, 2,8, 2,35, 23,67, 555. 21,62, 26,73, 2,9, 21,63, 556. 29,78, 32,83, 2,5, 55,105, 557. 2,5, 2,5, 28,76, 2,10, 558. 10,46, 10,46, 10,46, 10,46, 559. 10,46, 10,46, 10,46, 10,46, 560. 10,46, 10,46, 22,64, 27,74, 561. 28,77, 22,65, 56,106, 30,79, 562. 2,11, 22,66, 31,81, 2,12, 563. 57,107, 27,75, 2,13, 30,80, 564. 58,108, 31,82, 2,5, 2,14, 565. 2,36, 2,16, 2,17, 59,109, 566. 25,69, 2,18, 2,5, 2,19, 567. 25,70, 33,84, 60,110, 33,85, 568. 25,71, 62,113, 61,111, 2,5, 569. 63,114, 64,115, 25,72, 65,116, 570. 2,20, 2,21, 2,22, 2,23, 571. 2,24, 61,112, 66,117, 3,37, 572. 67,118, 68,119, 69,120, 2,25, 573. 2,26, 2,27, 2,28, 2,29, 574. 35,87, 2,30, 2,31, 2,32, 575. 2,33, 70,121, 2,34, 71,122, 576. 35,87, 35,88, 2,5, 2,5, 577. 2,5, 3,38, 72,123, 73,124, 578. 3,39, 74,125, 75,126, 76,128, 579. 3,9, 77,129, 78,130, 79,131, 580. 80,132, 81,133, 82,134, 83,135, 581. 84,136, 86,137, 89,138, 35,87, 582. 75,127, 35,87, 35,87, 93,139, 583. 97,140, 98,141, 99,142, 95,94, 584. 89,103, 100,143, 101,144, 102,145, 585. 103,146, 104,147, 3,11, 35,87, 586. 105,148, 3,12, 3,40, 106,149, 587. 3,13, 107,150, 108,151, 109,152, 588. 110,153, 3,14, 3,15, 3,16, 589. 3,17, 95,95, 111,154, 3,18, 590. 95,95, 3,19, 112,155, 113,156, 591. 114,157, 115,158, 116,159, 117,160, 592. 118,161, 119,162, 121,163, 123,164, 593. 124,165, 4,37, 3,20, 3,21, 594. 3,22, 3,23, 3,24, 125,166, 595. 126,167, 127,168, 128,169, 129,170, 596. 130,171, 3,25, 3,26, 3,27, 597. 3,28, 3,29, 131,172, 3,30, 598. 3,31, 3,32, 3,33, 4,38, 599. 3,34, 132,173, 4,41, 133,174, 600. 134,175, 136,176, 4,9, 137,177, 601. 138,178, 139,179, 4,39, 140,180, 602. 4,39, 4,39, 142,181, 143,182, 603. 144,183, 145,184, 146,185, 147,186, 604. 148,187, 149,188, 150,189, 151,190, 605. 154,191, 155,192, 156,193, 157,194, 606. 158,195, 159,196, 160,197, 164,198, 607. 4,11, 165,199, 166,200, 4,12, 608. 4,40, 167,201, 4,13, 168,202, 609. 169,203, 171,204, 4,39, 4,14, 610. 4,36, 4,16, 4,17, 172,205, 611. 173,206, 4,18, 4,39, 4,19, 612. 174,207, 175,208, 176,209, 179,210, 613. 181,211, 182,212, 183,213, 4,39, 614. 185,214, 186,215, 38,42, 38,90, 615. 4,20, 4,21, 4,22, 4,23, 616. 4,24, 187,216, 188,217, 189,218, 617. 190,219, 193,220, 194,221, 4,25, 618. 4,26, 4,27, 4,28, 4,29, 619. 195,222, 4,30, 4,31, 4,32, 620. 4,33, 38,91, 4,34, 39,90, 621. 38,92, 197,223, 4,39, 4,39, 622. 4,39, 198,224, 199,225, 200,226, 623. 38,92, 201,227, 38,92, 38,92, 624. 203,228, 205,229, 207,230, 210,231, 625. 211,232, 212,233, 214,234, 215,235, 626. 216,236, 39,92, 218,237, 225,238, 627. 39,92, 226,239, 231,240, 232,241, 628. 233,242, 234,243, 236,244, 241,248, 629. 39,92, 244,249, 39,92, 39,92, 630. 237,245, 245,250, 237,246, 237,247, 631. 38,92, 246,251, 247,252, 248,253, 632. 249,254, 250,255, 251,256, 252,257, 633. 38,92, 254,258, 255,259, 256,260, 634. 257,261, 258,262, 259,263, 260,264, 635. 261,265, 38,92, 263,266, 264,267, 636. 265,268, 266,269, 267,270, 269,271, 637. 39,92, 0,0, 0,0, 0,0, 638. 0,0, 0,0, 0,0, 0,0, 639. 39,92, 0,0, 0,0, 0,0, 640. 0,0, 0,0, 0,0, 0,0, 641. 0,0, 39,92, 0,0, 0,0, 642. 0,0, 0,0, 0,0, 0,0, 643. 38,92, 38,92, 38,92, 0,0, 644. 0,0, 0,0, 0,0, 0,0, 645. 0,0, 0,0, 0,0, 0,0, 646. 0,0, 0,0, 0,0, 0,0, 647. 0,0, 0,0, 0,0, 0,0, 648. 0,0, 0,0, 0,0, 0,0, 649. 39,92, 39,92, 39,92, 0,0, 650. 0,0}; 651. struct yysvf yysvec[] ={ 652. 0, 0, 0, 653. yycrank+-1, 0, 0, 654. yycrank+-87, 0, 0, 655. yycrank+-181, yysvec+1, 0, 656. yycrank+-267, yysvec+2, 0, 657. yycrank+0, 0, yyvstop+1, 658. yycrank+5, 0, yyvstop+3, 659. yycrank+0, 0, yyvstop+6, 660. yycrank+-7, 0, yyvstop+8, 661. yycrank+-11, 0, yyvstop+10, 662. yycrank+88, 0, yyvstop+12, 663. yycrank+5, 0, yyvstop+15, 664. yycrank+5, 0, yyvstop+17, 665. yycrank+1, 0, yyvstop+19, 666. yycrank+2, 0, yyvstop+21, 667. yycrank+3, 0, yyvstop+23, 668. yycrank+7, 0, yyvstop+25, 669. yycrank+7, 0, yyvstop+27, 670. yycrank+24, 0, yyvstop+29, 671. yycrank+8, 0, yyvstop+31, 672. yycrank+6, 0, yyvstop+33, 673. yycrank+13, 0, yyvstop+35, 674. yycrank+45, 0, yyvstop+37, 675. yycrank+12, 0, yyvstop+39, 676. yycrank+7, 0, yyvstop+41, 677. yycrank+71, 0, yyvstop+43, 678. yycrank+14, 0, yyvstop+45, 679. yycrank+46, 0, yyvstop+47, 680. yycrank+36, 0, yyvstop+49, 681. yycrank+20, 0, yyvstop+51, 682. yycrank+54, 0, yyvstop+53, 683. yycrank+50, 0, yyvstop+55, 684. yycrank+18, 0, yyvstop+57, 685. yycrank+63, 0, yyvstop+59, 686. yycrank+4, 0, yyvstop+61, 687. yycrank+-199, 0, yyvstop+63, 688. yycrank+9, yysvec+15, yyvstop+65, 689. yycrank+0, 0, yyvstop+67, 690. yycrank+353, 0, yyvstop+70, 691. yycrank+377, 0, yyvstop+73, 692. yycrank+13, 0, yyvstop+75, 693. yycrank+-12, yysvec+35, yyvstop+77, 694. yycrank+0, yysvec+6, yyvstop+79, 695. yycrank+0, yysvec+8, 0, 696. yycrank+0, 0, yyvstop+81, 697. yycrank+9, 0, 0, 698. yycrank+0, yysvec+10, yyvstop+83, 699. yycrank+8, 0, 0, 700. yycrank+15, 0, 0, 701. yycrank+10, 0, 0, 702. yycrank+16, 0, 0, 703. yycrank+8, 0, 0, 704. yycrank+20, 0, 0, 705. yycrank+17, 0, 0, 706. yycrank+30, 0, 0, 707. yycrank+53, 0, 0, 708. yycrank+76, 0, 0, 709. yycrank+78, 0, 0, 710. yycrank+89, 0, 0, 711. yycrank+88, 0, 0, 712. yycrank+109, 0, 0, 713. yycrank+73, 0, 0, 714. yycrank+61, 0, 0, 715. yycrank+69, 0, 0, 716. yycrank+71, 0, 0, 717. yycrank+86, 0, 0, 718. yycrank+79, 0, 0, 719. yycrank+73, 0, 0, 720. yycrank+78, 0, 0, 721. yycrank+75, 0, 0, 722. yycrank+103, 0, 0, 723. yycrank+91, 0, 0, 724. yycrank+115, 0, 0, 725. yycrank+105, 0, 0, 726. yycrank+100, 0, 0, 727. yycrank+118, 0, 0, 728. yycrank+113, 0, 0, 729. yycrank+120, 0, 0, 730. yycrank+125, 0, 0, 731. yycrank+113, 0, 0, 732. yycrank+121, 0, 0, 733. yycrank+111, 0, 0, 734. yycrank+109, 0, 0, 735. yycrank+115, 0, 0, 736. yycrank+120, 0, 0, 737. yycrank+0, 0, yyvstop+85, 738. yycrank+114, 0, 0, 739. yycrank+0, yysvec+35, 0, 740. yycrank+0, 0, yyvstop+87, 741. yycrank+150, 0, 0, 742. yycrank+0, 0, yyvstop+89, 743. yycrank+0, yysvec+38, yyvstop+91, 744. yycrank+0, yysvec+39, 0, 745. yycrank+167, 0, 0, 746. yycrank+0, 0, yyvstop+93, 747. yycrank+-229, yysvec+35, 0, 748. yycrank+0, 0, yyvstop+96, 749. yycrank+171, 0, 0, 750. yycrank+155, 0, 0, 751. yycrank+151, 0, 0, 752. yycrank+164, 0, 0, 753. yycrank+174, 0, 0, 754. yycrank+174, 0, 0, 755. yycrank+175, 0, 0, 756. yycrank+162, 0, 0, 757. yycrank+153, 0, 0, 758. yycrank+182, 0, 0, 759. yycrank+185, 0, 0, 760. yycrank+181, 0, 0, 761. yycrank+178, 0, 0, 762. yycrank+176, 0, 0, 763. yycrank+159, 0, 0, 764. yycrank+169, 0, 0, 765. yycrank+151, 0, 0, 766. yycrank+161, 0, 0, 767. yycrank+153, 0, 0, 768. yycrank+159, 0, 0, 769. yycrank+156, 0, 0, 770. yycrank+162, 0, 0, 771. yycrank+157, 0, 0, 772. yycrank+0, 0, yyvstop+98, 773. yycrank+158, 0, 0, 774. yycrank+0, 0, yyvstop+100, 775. yycrank+168, 0, 0, 776. yycrank+161, 0, 0, 777. yycrank+167, 0, 0, 778. yycrank+173, 0, 0, 779. yycrank+169, 0, 0, 780. yycrank+185, 0, 0, 781. yycrank+177, 0, 0, 782. yycrank+189, 0, 0, 783. yycrank+194, 0, 0, 784. yycrank+197, 0, 0, 785. yycrank+198, 0, 0, 786. yycrank+188, 0, 0, 787. yycrank+0, 0, yyvstop+102, 788. yycrank+200, 0, 0, 789. yycrank+191, 0, 0, 790. yycrank+298, 0, yyvstop+104, 791. yycrank+232, 0, 0, 792. yycrank+229, 0, 0, 793. yycrank+0, 0, yyvstop+106, 794. yycrank+248, 0, 0, 795. yycrank+246, 0, 0, 796. yycrank+247, 0, 0, 797. yycrank+241, 0, 0, 798. yycrank+231, 0, yyvstop+108, 799. yycrank+235, 0, 0, 800. yycrank+252, 0, 0, 801. yycrank+254, 0, 0, 802. yycrank+243, 0, 0, 803. yycrank+244, 0, 0, 804. yycrank+0, 0, yyvstop+110, 805. yycrank+0, 0, yyvstop+112, 806. yycrank+214, 0, 0, 807. yycrank+211, 0, 0, 808. yycrank+215, 0, 0, 809. yycrank+226, 0, 0, 810. yycrank+227, 0, 0, 811. yycrank+214, 0, 0, 812. yycrank+229, 0, 0, 813. yycrank+0, 0, yyvstop+114, 814. yycrank+0, 0, yyvstop+116, 815. yycrank+0, 0, yyvstop+118, 816. yycrank+230, 0, 0, 817. yycrank+217, 0, 0, 818. yycrank+220, 0, 0, 819. yycrank+226, 0, 0, 820. yycrank+235, 0, 0, 821. yycrank+241, 0, 0, 822. yycrank+0, 0, yyvstop+120, 823. yycrank+240, 0, 0, 824. yycrank+236, 0, 0, 825. yycrank+232, 0, 0, 826. yycrank+242, 0, 0, 827. yycrank+249, 0, 0, 828. yycrank+238, 0, 0, 829. yycrank+0, 0, yyvstop+122, 830. yycrank+0, 0, yyvstop+124, 831. yycrank+290, 0, 0, 832. yycrank+0, 0, yyvstop+126, 833. yycrank+274, 0, 0, 834. yycrank+273, 0, 0, 835. yycrank+276, 0, 0, 836. yycrank+0, 0, yyvstop+128, 837. yycrank+295, 0, 0, 838. yycrank+292, 0, 0, 839. yycrank+296, 0, 0, 840. yycrank+286, 0, 0, 841. yycrank+294, 0, 0, 842. yycrank+294, 0, 0, 843. yycrank+0, 0, yyvstop+130, 844. yycrank+0, 0, yyvstop+132, 845. yycrank+264, 0, 0, 846. yycrank+264, 0, 0, 847. yycrank+266, 0, 0, 848. yycrank+0, 0, yyvstop+134, 849. yycrank+289, 0, 0, 850. yycrank+293, 0, 0, 851. yycrank+293, 0, 0, 852. yycrank+298, 0, 0, 853. yycrank+283, 0, 0, 854. yycrank+0, 0, yyvstop+136, 855. yycrank+284, 0, 0, 856. yycrank+0, 0, yyvstop+138, 857. yycrank+292, 0, 0, 858. yycrank+0, 0, yyvstop+140, 859. yycrank+301, 0, 0, 860. yycrank+0, 0, yyvstop+142, 861. yycrank+0, 0, yyvstop+144, 862. yycrank+323, 0, 0, 863. yycrank+331, 0, 0, 864. yycrank+323, 0, 0, 865. yycrank+0, 0, yyvstop+146, 866. yycrank+330, 0, 0, 867. yycrank+325, 0, 0, 868. yycrank+337, 0, 0, 869. yycrank+0, 0, yyvstop+148, 870. yycrank+315, 0, 0, 871. yycrank+0, 0, yyvstop+150, 872. yycrank+0, 0, yyvstop+152, 873. yycrank+0, 0, yyvstop+154, 874. yycrank+0, 0, yyvstop+156, 875. yycrank+0, 0, yyvstop+158, 876. yycrank+0, 0, yyvstop+160, 877. yycrank+297, 0, 0, 878. yycrank+305, 0, 0, 879. yycrank+0, 0, yyvstop+162, 880. yycrank+0, 0, yyvstop+164, 881. yycrank+0, 0, yyvstop+166, 882. yycrank+0, 0, yyvstop+168, 883. yycrank+404, 0, yyvstop+170, 884. yycrank+347, 0, 0, 885. yycrank+327, 0, 0, 886. yycrank+342, 0, 0, 887. yycrank+0, 0, yyvstop+172, 888. yycrank+347, 0, 0, 889. yycrank+347, 0, 0, 890. yycrank+0, 0, yyvstop+174, 891. yycrank+0, 0, yyvstop+176, 892. yycrank+0, 0, yyvstop+178, 893. yycrank+348, 0, 0, 894. yycrank+0, 0, yyvstop+180, 895. yycrank+0, 0, yyvstop+182, 896. yycrank+356, 0, 0, 897. yycrank+346, 0, 0, 898. yycrank+363, 0, 0, 899. yycrank+354, 0, 0, 900. yycrank+362, 0, 0, 901. yycrank+366, 0, 0, 902. yycrank+355, 0, 0, 903. yycrank+360, 0, 0, 904. yycrank+370, 0, 0, 905. yycrank+0, 0, yyvstop+184, 906. yycrank+361, 0, 0, 907. yycrank+355, 0, 0, 908. yycrank+370, 0, 0, 909. yycrank+373, 0, 0, 910. yycrank+372, 0, 0, 911. yycrank+358, 0, 0, 912. yycrank+376, 0, 0, 913. yycrank+375, 0, 0, 914. yycrank+0, 0, yyvstop+186, 915. yycrank+377, 0, 0, 916. yycrank+363, 0, 0, 917. yycrank+365, 0, 0, 918. yycrank+367, 0, 0, 919. yycrank+367, 0, 0, 920. yycrank+0, 0, yyvstop+188, 921. yycrank+368, 0, 0, 922. yycrank+0, 0, yyvstop+190, 923. yycrank+0, 0, yyvstop+192, 924. 0, 0, 0}; 925. struct yywork *yytop = yycrank+502; 926. struct yysvf *yybgin = yysvec+1; 927. char yymatch[] ={ 928. 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 929. 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , 930. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 931. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 932. 040 ,01 ,'"' ,'#' ,01 ,01 ,01 ,01 , 933. 01 ,01 ,01 ,'#' ,01 ,'#' ,'#' ,01 , 934. '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , 935. '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 , 936. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 937. 01 ,01 ,01 ,'#' ,01 ,01 ,01 ,01 , 938. 01 ,01 ,01 ,'#' ,01 ,01 ,01 ,01 , 939. 01 ,01 ,01 ,01 ,'#' ,01 ,01 ,01 , 940. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 941. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 942. 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 943. 01 ,01 ,01 ,'#' ,'#' ,'#' ,01 ,01 , 944. 0}; 945. char yyextra[] ={ 946. 0,0,0,0,0,1,0,1, 947. 0,0,0,0,0,0,0,0, 948. 0,0,0,0,0,0,0,0, 949. 0,0,0,0,0,0,0,0, 950. 0,0,0,0,0,0,0,0, 951. 0,0,0,0,0,0,0,0, 952. 0,0,0,0,0,0,0,0, 953. 0}; 954. /* ncform 4.1 83/08/11 */ 955. 956. int yylineno =1; 957. # define YYU(x) x 958. # define NLSTATE yyprevious=YYNEWLINE 959. char yytext[YYLMAX]; 960. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 961. char yysbuf[YYLMAX]; 962. char *yysptr = yysbuf; 963. int *yyfnd; 964. extern struct yysvf *yyestate; 965. int yyprevious = YYNEWLINE; 966. yylook(){ 967. register struct yysvf *yystate, **lsp; 968. register struct yywork *yyt; 969. struct yysvf *yyz; 970. int yych; 971. struct yywork *yyr; 972. # ifdef LEXDEBUG 973. int debug; 974. # endif 975. char *yylastch; 976. /* start off machines */ 977. # ifdef LEXDEBUG 978. debug = 0; 979. # endif 980. if (!yymorfg) 981. yylastch = yytext; 982. else { 983. yymorfg=0; 984. yylastch = yytext+yyleng; 985. } 986. for(;;){ 987. lsp = yylstate; 988. yyestate = yystate = yybgin; 989. if (yyprevious==YYNEWLINE) yystate++; 990. for (;;){ 991. # ifdef LEXDEBUG 992. if(debug)fprintf(yyout,"state %d
",yystate-yysvec-1); 993. # endif 994. yyt = yystate->yystoff; 995. if(yyt == yycrank){ /* may not be any transitions */ 996. yyz = yystate->yyother; 997. if(yyz == 0)break; 998. if(yyz->yystoff == yycrank)break; 999. } 1000. *yylastch++ = yych = input(); 1001. tryagain: 1002. # ifdef LEXDEBUG 1003. if(debug){ 1004. fprintf(yyout,"char "); 1005. allprint(yych); 1006. putchar('
'); 1007. } 1008. # endif 1009. yyr = yyt; 1010. if ( (int)yyt > (int)yycrank){ 1011. yyt = yyr + yych; 1012. if (yyt <= yytop && yyt->verify+yysvec == yystate){ 1013. if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1014. {unput(*--yylastch);break;} 1015. *lsp++ = yystate = yyt->advance+yysvec; 1016. goto contin; 1017. } 1018. } 1019. # ifdef YYOPTIM 1020. else if((int)yyt < (int)yycrank) { /* r < yycrank */ 1021. yyt = yyr = yycrank+(yycrank-yyt); 1022. # ifdef LEXDEBUG 1023. if(debug)fprintf(yyout,"compressed state
"); 1024. # endif 1025. yyt = yyt + yych; 1026. if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1027. if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1028. {unput(*--yylastch);break;} 1029. *lsp++ = yystate = yyt->advance+yysvec; 1030. goto contin; 1031. } 1032. yyt = yyr + YYU(yymatch[yych]); 1033. # ifdef LEXDEBUG 1034. if(debug){ 1035. fprintf(yyout,"try fall back character "); 1036. allprint(YYU(yymatch[yych])); 1037. putchar('
'); 1038. } 1039. # endif 1040. if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1041. if(yyt->advance+yysvec == YYLERR) /* error transition */ 1042. {unput(*--yylastch);break;} 1043. *lsp++ = yystate = yyt->advance+yysvec; 1044. goto contin; 1045. } 1046. } 1047. if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 1048. # ifdef LEXDEBUG 1049. if(debug)fprintf(yyout,"fall back to state %d
",yystate-yysvec-1); 1050. # endif 1051. goto tryagain; 1052. } 1053. # endif 1054. else 1055. {unput(*--yylastch);break;} 1056. contin: 1057. # ifdef LEXDEBUG 1058. if(debug){ 1059. fprintf(yyout,"state %d char ",yystate-yysvec-1); 1060. allprint(yych); 1061. putchar('
'); 1062. } 1063. # endif 1064. ; 1065. } 1066. # ifdef LEXDEBUG 1067. if(debug){ 1068. fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); 1069. allprint(yych); 1070. putchar('
'); 1071. } 1072. # endif 1073. while (lsp-- > yylstate){ 1074. *yylastch-- = 0; 1075. if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 1076. yyolsp = lsp; 1077. if(yyextra[*yyfnd]){ /* must backup */ 1078. while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 1079. lsp--; 1080. unput(*yylastch--); 1081. } 1082. } 1083. yyprevious = YYU(*yylastch); 1084. yylsp = lsp; 1085. yyleng = yylastch-yytext+1; 1086. yytext[yyleng] = 0; 1087. # ifdef LEXDEBUG 1088. if(debug){ 1089. fprintf(yyout,"
match "); 1090. sprint(yytext); 1091. fprintf(yyout," action %d
",*yyfnd); 1092. } 1093. # endif 1094. return(*yyfnd++); 1095. } 1096. unput(*yylastch); 1097. } 1098. if (yytext[0] == 0 /* && feof(yyin) */) 1099. { 1100. yysptr=yysbuf; 1101. return(0); 1102. } 1103. yyprevious = yytext[0] = input(); 1104. if (yyprevious>0) 1105. output(yyprevious); 1106. yylastch=yytext; 1107. # ifdef LEXDEBUG 1108. if(debug)putchar('
'); 1109. # endif 1110. } 1111. } 1112. yyback(p, m) 1113. int *p; 1114. { 1115. if (p==0) return(0); 1116. while (*p) 1117. { 1118. if (*p++ == m) 1119. return(1); 1120. } 1121. return(0); 1122. } 1123. /* the following are only used in the lex library */ 1124. yyinput(){ 1125. return(input()); 1126. } 1127. yyoutput(c) 1128. int c; { 1129. output(c); 1130. } 1131. yyunput(c) 1132. int c; { 1133. unput(c); 1134. }
|