Source:NetHack 3.0.0/lev lex.c
Jump to navigation
Jump to search
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
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.
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=='\n')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 \nENDMAP */ 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\n",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('\n'); 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\n"); 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('\n'); 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\n",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('\n'); 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('\n'); 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,"\nmatch "); 1090. sprint(yytext); 1091. fprintf(yyout," action %d\n",*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('\n'); 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. }