scan.c
上传用户:wqdrylgs
上传日期:2007-02-09
资源大小:65k
文件大小:13k
源码类别:

汇编语言

开发平台:

WINDOWS

  1. /****************************************************************************
  2. *                     U N R E G I S T E R E D   C O P Y
  3. * You are on day 85 of your 30 day trial period.
  4. * This file was produced by an UNREGISTERED COPY of Parser Generator. It is
  5. * for evaluation purposes only. If you continue to use Parser Generator 30
  6. * days after installation then you are required to purchase a license. For
  7. * more information see the online help or go to the Bumble-Bee Software
  8. * homepage at:
  9. * http://www.bumblebeesoftware.com
  10. * This notice must remain present in the file. It cannot be removed.
  11. ****************************************************************************/
  12. /****************************************************************************
  13. * scan.c
  14. * C source file generated from scan.l.
  15. * Date: 06/24/03
  16. * Time: 17:07:53
  17. * ALex Version: 2.05
  18. ****************************************************************************/
  19. #include <yylex.h>
  20. /* namespaces */
  21. #if defined(__cplusplus) && defined(YYSTDCPPLIB)
  22. using namespace std;
  23. #endif
  24. #if defined(__cplusplus) && defined(YYNAMESPACE)
  25. using namespace yl;
  26. #endif
  27. #define YYFASTLEXER
  28. #line 6 ".\scan.l"
  29. #include "globals.h"
  30. #include "util.h"
  31. #include "scan.h"
  32. #include "parse.h"
  33. char tokenString[MAXTOKENLEN+1];
  34. #line 49 "scan.c"
  35. /* repeated because of possible precompiled header */
  36. #include <yylex.h>
  37. /* namespaces */
  38. #if defined(__cplusplus) && defined(YYSTDCPPLIB)
  39. using namespace std;
  40. #endif
  41. #if defined(__cplusplus) && defined(YYNAMESPACE)
  42. using namespace yl;
  43. #endif
  44. #define YYFASTLEXER
  45. #include ".scan.h"
  46. #ifndef YYTEXT_SIZE
  47. #define YYTEXT_SIZE 100
  48. #endif
  49. #ifndef YYUNPUT_SIZE
  50. #define YYUNPUT_SIZE YYTEXT_SIZE
  51. #endif
  52. #ifndef YYTEXT_MAX
  53. #define YYTEXT_MAX 0
  54. #endif
  55. #ifndef YYUNPUT_MAX
  56. #define YYUNPUT_MAX YYTEXT_MAX
  57. #endif
  58. /* yytext */
  59. static char YYNEAR yysatext[(YYTEXT_SIZE) + 1]; /* extra char for  */
  60. char YYFAR *YYNEAR YYDCDECL yystext = yysatext;
  61. char YYFAR *YYNEAR YYDCDECL yytext = yysatext;
  62. int YYNEAR YYDCDECL yystext_size = (YYTEXT_SIZE);
  63. int YYNEAR YYDCDECL yytext_size = (YYTEXT_SIZE);
  64. int YYNEAR YYDCDECL yytext_max = (YYTEXT_MAX);
  65. /* yystatebuf */
  66. #if (YYTEXT_SIZE) != 0
  67. static int YYNEAR yysastatebuf[(YYTEXT_SIZE)];
  68. int YYFAR *YYNEAR YYDCDECL yysstatebuf = yysastatebuf;
  69. int YYFAR *YYNEAR YYDCDECL yystatebuf = yysastatebuf;
  70. #else
  71. int YYFAR *YYNEAR YYDCDECL yysstatebuf = NULL;
  72. int YYFAR *YYNEAR YYDCDECL yystatebuf = NULL;
  73. #endif
  74. /* yyunputbuf */
  75. #if (YYUNPUT_SIZE) != 0
  76. static int YYNEAR yysaunputbuf[(YYUNPUT_SIZE)];
  77. int YYFAR *YYNEAR YYDCDECL yysunputbufptr = yysaunputbuf;
  78. int YYFAR *YYNEAR YYDCDECL yyunputbufptr = yysaunputbuf;
  79. #else
  80. int YYFAR *YYNEAR YYDCDECL yysunputbufptr = NULL;
  81. int YYFAR *YYNEAR YYDCDECL yyunputbufptr = NULL;
  82. #endif
  83. int YYNEAR YYDCDECL yysunput_size = (YYUNPUT_SIZE);
  84. int YYNEAR YYDCDECL yyunput_size = (YYUNPUT_SIZE);
  85. int YYNEAR YYDCDECL yyunput_max = (YYUNPUT_MAX);
  86. /* backwards compatability with lex */
  87. #ifdef input
  88. #ifdef YYPROTOTYPE
  89. int YYCDECL yyinput(void)
  90. #else
  91. int YYCDECL yyinput()
  92. #endif
  93. {
  94. return input();
  95. }
  96. #else
  97. #define input yyinput
  98. #endif
  99. #ifdef output
  100. #ifdef YYPROTOTYPE
  101. void YYCDECL yyoutput(int ch)
  102. #else
  103. void YYCDECL yyoutput(ch)
  104. int ch;
  105. #endif
  106. {
  107. output(ch);
  108. }
  109. #else
  110. #define output yyoutput
  111. #endif
  112. #ifdef unput
  113. #ifdef YYPROTOTYPE
  114. void YYCDECL yyunput(int ch)
  115. #else
  116. void YYCDECL yyunput(ch)
  117. int ch;
  118. #endif
  119. {
  120. unput(ch);
  121. }
  122. #else
  123. #define unput yyunput
  124. #endif
  125. #ifndef YYNBORLANDWARN
  126. #ifdef __BORLANDC__
  127. #pragma warn -rch /* <warning: unreachable code> off */
  128. #endif
  129. #endif
  130. #ifdef YYPROTOTYPE
  131. int YYCDECL yylexeraction(int action)
  132. #else
  133. int YYCDECL yylexeraction(action)
  134. int action;
  135. #endif
  136. {
  137. yyreturnflg = YYTRUE;
  138. switch (action) {
  139. case 1:
  140. {
  141. #line 41 ".\scan.l"
  142. return INT;
  143. #line 170 "scan.c"
  144. }
  145. break;
  146. case 2:
  147. {
  148. #line 42 ".\scan.l"
  149. return FLOAT;
  150. #line 177 "scan.c"
  151. }
  152. break;
  153. case 3:
  154. {
  155. #line 43 ".\scan.l"
  156. return CHAR;
  157. #line 184 "scan.c"
  158. }
  159. break;
  160. case 4:
  161. {
  162. #line 44 ".\scan.l"
  163. return VOID;
  164. #line 191 "scan.c"
  165. }
  166. break;
  167. case 5:
  168. {
  169. #line 45 ".\scan.l"
  170. return IF;
  171. #line 198 "scan.c"
  172. }
  173. break;
  174. case 6:
  175. {
  176. #line 46 ".\scan.l"
  177. return ELSE;
  178. #line 205 "scan.c"
  179. }
  180. break;
  181. case 7:
  182. {
  183. #line 47 ".\scan.l"
  184. return WHILE;
  185. #line 212 "scan.c"
  186. }
  187. break;
  188. case 8:
  189. {
  190. #line 48 ".\scan.l"
  191. return CONTINUE;
  192. #line 219 "scan.c"
  193. }
  194. break;
  195. case 9:
  196. {
  197. #line 49 ".\scan.l"
  198. return BREAK;
  199. #line 226 "scan.c"
  200. }
  201. break;
  202. case 10:
  203. {
  204. #line 50 ".\scan.l"
  205. return RETURN;
  206. #line 233 "scan.c"
  207. }
  208. break;
  209. case 11:
  210. {
  211. #line 51 ".\scan.l"
  212. return PLUS;
  213. #line 240 "scan.c"
  214. }
  215. break;
  216. case 12:
  217. {
  218. #line 52 ".\scan.l"
  219. return SUB;
  220. #line 247 "scan.c"
  221. }
  222. break;
  223. case 13:
  224. {
  225. #line 53 ".\scan.l"
  226. return MUT;
  227. #line 254 "scan.c"
  228. }
  229. break;
  230. case 14:
  231. {
  232. #line 54 ".\scan.l"
  233. return DIV;
  234. #line 261 "scan.c"
  235. }
  236. break;
  237. case 15:
  238. {
  239. #line 55 ".\scan.l"
  240. return LT;
  241. #line 268 "scan.c"
  242. }
  243. break;
  244. case 16:
  245. {
  246. #line 56 ".\scan.l"
  247. return LE;
  248. #line 275 "scan.c"
  249. }
  250. break;
  251. case 17:
  252. {
  253. #line 57 ".\scan.l"
  254. return GT;
  255. #line 282 "scan.c"
  256. }
  257. break;
  258. case 18:
  259. {
  260. #line 58 ".\scan.l"
  261. return GE;
  262. #line 289 "scan.c"
  263. }
  264. break;
  265. case 19:
  266. {
  267. #line 59 ".\scan.l"
  268. return EQ;
  269. #line 296 "scan.c"
  270. }
  271. break;
  272. case 20:
  273. {
  274. #line 60 ".\scan.l"
  275. return NEQ;
  276. #line 303 "scan.c"
  277. }
  278. break;
  279. case 21:
  280. {
  281. #line 61 ".\scan.l"
  282. return AND;
  283. #line 310 "scan.c"
  284. }
  285. break;
  286. case 22:
  287. {
  288. #line 62 ".\scan.l"
  289. return OR;
  290. #line 317 "scan.c"
  291. }
  292. break;
  293. case 23:
  294. {
  295. #line 63 ".\scan.l"
  296. return NOT;
  297. #line 324 "scan.c"
  298. }
  299. break;
  300. case 24:
  301. {
  302. #line 64 ".\scan.l"
  303. return ASSIGN;
  304. #line 331 "scan.c"
  305. }
  306. break;
  307. case 25:
  308. {
  309. #line 65 ".\scan.l"
  310. return SEMI;
  311. #line 338 "scan.c"
  312. }
  313. break;
  314. case 26:
  315. {
  316. #line 66 ".\scan.l"
  317. return COMMA;
  318. #line 345 "scan.c"
  319. }
  320. break;
  321. case 27:
  322. {
  323. #line 67 ".\scan.l"
  324. return LP;
  325. #line 352 "scan.c"
  326. }
  327. break;
  328. case 28:
  329. {
  330. #line 68 ".\scan.l"
  331. return RP;
  332. #line 359 "scan.c"
  333. }
  334. break;
  335. case 29:
  336. {
  337. #line 69 ".\scan.l"
  338. return LSP;
  339. #line 366 "scan.c"
  340. }
  341. break;
  342. case 30:
  343. {
  344. #line 70 ".\scan.l"
  345. return RSP;
  346. #line 373 "scan.c"
  347. }
  348. break;
  349. case 31:
  350. {
  351. #line 71 ".\scan.l"
  352. return LFP;
  353. #line 380 "scan.c"
  354. }
  355. break;
  356. case 32:
  357. {
  358. #line 72 ".\scan.l"
  359. return RFP;
  360. #line 387 "scan.c"
  361. }
  362. break;
  363. case 33:
  364. {
  365. #line 73 ".\scan.l"
  366. return ID;
  367. #line 394 "scan.c"
  368. }
  369. break;
  370. case 34:
  371. {
  372. #line 74 ".\scan.l"
  373. return NUM;
  374. #line 401 "scan.c"
  375. }
  376. break;
  377. case 35:
  378. {
  379. #line 75 ".\scan.l"
  380. return FNUM;
  381. #line 408 "scan.c"
  382. }
  383. break;
  384. case 36:
  385. {
  386. #line 76 ".\scan.l"
  387. return SCHAR;
  388. #line 415 "scan.c"
  389. }
  390. break;
  391. case 37:
  392. {
  393. #line 77 ".\scan.l"
  394. lineno++;
  395. #line 422 "scan.c"
  396. }
  397. break;
  398. case 38:
  399. {
  400. #line 78 ".\scan.l"
  401. #line 429 "scan.c"
  402. }
  403. break;
  404. case 39:
  405. {
  406. #line 79 ".\scan.l"
  407.  char c;
  408.   while ((c = yyinput()) != 'n')
  409.     if (c == EOF) return ENDFILE;
  410.   yyunput(c);
  411. #line 440 "scan.c"
  412. }
  413. break;
  414. case 40:
  415. {
  416. #line 84 ".\scan.l"
  417.  char c;
  418.                   int done = FALSE;
  419.                   do {
  420.                     while ((c = yyinput()) != '*')
  421.                       if (c == EOF) return ERROR;
  422.                     while ((c = yyinput()) == '*');
  423.                     if (c == '/') done = TRUE;
  424.                   } while (!done);
  425.                 
  426. #line 455 "scan.c"
  427. }
  428. break;
  429. case 41:
  430. {
  431. #line 93 ".\scan.l"
  432. return ERROR;
  433. #line 462 "scan.c"
  434. }
  435. break;
  436. default:
  437. yyassert(0);
  438. break;
  439. }
  440. yyreturnflg = YYFALSE;
  441. return 0;
  442. }
  443. #ifndef YYNBORLANDWARN
  444. #ifdef __BORLANDC__
  445. #pragma warn .rch /* <warning: unreachable code> to the old state */
  446. #endif
  447. #endif
  448. YYCONST yymatch_t YYNEARFAR YYBASED_CODE YYDCDECL yymatch[] = {
  449. 0
  450. };
  451. int YYNEAR YYDCDECL yytransitionmax = 218;
  452. YYCONST yytransition_t YYNEARFAR YYBASED_CODE YYDCDECL yytransition[] = {
  453. { 0, 0 },
  454. { 4, 1 },
  455. { 5, 1 },
  456. { 4, 4 },
  457. { 40, 16 },
  458. { 42, 19 },
  459. { 16, 16 },
  460. { 16, 16 },
  461. { 16, 16 },
  462. { 16, 16 },
  463. { 16, 16 },
  464. { 16, 16 },
  465. { 16, 16 },
  466. { 16, 16 },
  467. { 16, 16 },
  468. { 16, 16 },
  469. { 45, 25 },
  470. { 38, 15 },
  471. { 43, 20 },
  472. { 49, 28 },
  473. { 44, 24 },
  474. { 0, 8 },
  475. { 39, 15 },
  476. { 46, 25 },
  477. { 4, 1 },
  478. { 6, 1 },
  479. { 4, 4 },
  480. { 50, 28 },
  481. { 47, 26 },
  482. { 48, 27 },
  483. { 7, 1 },
  484. { 8, 1 },
  485. { 9, 1 },
  486. { 10, 1 },
  487. { 11, 1 },
  488. { 12, 1 },
  489. { 13, 1 },
  490. { 14, 1 },
  491. { 35, 6 },
  492. { 15, 1 },
  493. { 16, 1 },
  494. { 16, 1 },
  495. { 16, 1 },
  496. { 16, 1 },
  497. { 16, 1 },
  498. { 16, 1 },
  499. { 16, 1 },
  500. { 16, 1 },
  501. { 16, 1 },
  502. { 16, 1 },
  503. { 51, 29 },
  504. { 17, 1 },
  505. { 18, 1 },
  506. { 19, 1 },
  507. { 20, 1 },
  508. { 52, 30 },
  509. { 53, 31 },
  510. { 21, 1 },
  511. { 21, 1 },
  512. { 21, 1 },
  513. { 21, 1 },
  514. { 21, 1 },
  515. { 21, 1 },
  516. { 21, 1 },
  517. { 21, 1 },
  518. { 21, 1 },
  519. { 21, 1 },
  520. { 21, 1 },
  521. { 21, 1 },
  522. { 21, 1 },
  523. { 21, 1 },
  524. { 21, 1 },
  525. { 21, 1 },
  526. { 21, 1 },
  527. { 21, 1 },
  528. { 21, 1 },
  529. { 21, 1 },
  530. { 21, 1 },
  531. { 21, 1 },
  532. { 21, 1 },
  533. { 21, 1 },
  534. { 21, 1 },
  535. { 21, 1 },
  536. { 22, 1 },
  537. { 54, 33 },
  538. { 23, 1 },
  539. { 55, 37 },
  540. { 21, 1 },
  541. { 57, 44 },
  542. { 21, 1 },
  543. { 24, 1 },
  544. { 25, 1 },
  545. { 21, 1 },
  546. { 26, 1 },
  547. { 27, 1 },
  548. { 21, 1 },
  549. { 21, 1 },
  550. { 28, 1 },
  551. { 21, 1 },
  552. { 21, 1 },
  553. { 21, 1 },
  554. { 21, 1 },
  555. { 21, 1 },
  556. { 21, 1 },
  557. { 21, 1 },
  558. { 21, 1 },
  559. { 29, 1 },
  560. { 21, 1 },
  561. { 21, 1 },
  562. { 21, 1 },
  563. { 30, 1 },
  564. { 31, 1 },
  565. { 21, 1 },
  566. { 21, 1 },
  567. { 21, 1 },
  568. { 32, 1 },
  569. { 33, 1 },
  570. { 34, 1 },
  571. { 21, 82 },
  572. { 21, 82 },
  573. { 21, 82 },
  574. { 21, 82 },
  575. { 21, 82 },
  576. { 21, 82 },
  577. { 21, 82 },
  578. { 21, 82 },
  579. { 21, 82 },
  580. { 21, 82 },
  581. { 58, 45 },
  582. { 59, 46 },
  583. { 60, 47 },
  584. { 61, 48 },
  585. { 62, 50 },
  586. { 63, 51 },
  587. { 64, 52 },
  588. { 21, 82 },
  589. { 21, 82 },
  590. { 21, 82 },
  591. { 21, 82 },
  592. { 21, 82 },
  593. { 21, 82 },
  594. { 21, 82 },
  595. { 21, 82 },
  596. { 21, 82 },
  597. { 21, 82 },
  598. { 21, 82 },
  599. { 21, 82 },
  600. { 21, 82 },
  601. { 21, 82 },
  602. { 21, 82 },
  603. { 21, 82 },
  604. { 21, 82 },
  605. { 21, 82 },
  606. { 21, 82 },
  607. { 21, 82 },
  608. { 21, 82 },
  609. { 21, 82 },
  610. { 21, 82 },
  611. { 21, 82 },
  612. { 21, 82 },
  613. { 21, 82 },
  614. { 65, 53 },
  615. { 36, 7 },
  616. { 66, 57 },
  617. { 67, 58 },
  618. { 21, 82 },
  619. { 68, 59 },
  620. { 21, 82 },
  621. { 21, 82 },
  622. { 21, 82 },
  623. { 21, 82 },
  624. { 21, 82 },
  625. { 21, 82 },
  626. { 21, 82 },
  627. { 21, 82 },
  628. { 21, 82 },
  629. { 21, 82 },
  630. { 21, 82 },
  631. { 21, 82 },
  632. { 21, 82 },
  633. { 21, 82 },
  634. { 21, 82 },
  635. { 21, 82 },
  636. { 21, 82 },
  637. { 21, 82 },
  638. { 21, 82 },
  639. { 21, 82 },
  640. { 21, 82 },
  641. { 21, 82 },
  642. { 21, 82 },
  643. { 21, 82 },
  644. { 21, 82 },
  645. { 21, 82 },
  646. { 56, 56 },
  647. { 56, 56 },
  648. { 56, 56 },
  649. { 56, 56 },
  650. { 56, 56 },
  651. { 56, 56 },
  652. { 56, 56 },
  653. { 56, 56 },
  654. { 56, 56 },
  655. { 56, 56 },
  656. { 69, 60 },
  657. { 70, 61 },
  658. { 71, 63 },
  659. { 72, 64 },
  660. { 73, 65 },
  661. { 74, 66 },
  662. { 75, 68 },
  663. { 76, 70 },
  664. { 77, 71 },
  665. { 78, 73 },
  666. { 79, 75 },
  667. { 80, 77 },
  668. { 81, 79 },
  669. { 82, 81 },
  670. { 41, 18 }
  671. };
  672. YYCONST yystate_t YYNEARFAR YYBASED_CODE YYDCDECL yystate[] = {
  673. { 0, 0, 0 },
  674. { -3, -8, 0 },
  675. { 1, 0, 0 },
  676. { 0, 0, 41 },
  677. { 0, -6, 38 },
  678. { 0, 0, 37 },
  679. { 0, -23, 23 },
  680. { 0, 124, 41 },
  681. { -37, 11, 41 },
  682. { 0, 0, 27 },
  683. { 0, 0, 28 },
  684. { 0, 0, 13 },
  685. { 0, 0, 11 },
  686. { 0, 0, 26 },
  687. { 0, 0, 12 },
  688. { 0, -25, 14 },
  689. { 0, -42, 34 },
  690. { 0, 0, 25 },
  691. { 0, 156, 15 },
  692. { 0, -56, 24 },
  693. { 0, -43, 17 },
  694. { 82, 0, 33 },
  695. { 0, 0, 29 },
  696. { 0, 0, 30 },
  697. { 82, -94, 33 },
  698. { 82, -88, 33 },
  699. { 82, -80, 33 },
  700. { 82, -79, 33 },
  701. { 82, -83, 33 },
  702. { 82, -51, 33 },
  703. { 82, -56, 33 },
  704. { 82, -48, 33 },
  705. { 0, 0, 31 },
  706. { 0, -40, 41 },
  707. { 0, 0, 32 },
  708. { 0, 0, 20 },
  709. { 0, 0, 21 },
  710. { 0, 47, 0 },
  711. { 0, 0, 40 },
  712. { 0, 0, 39 },
  713. { 56, 0, 0 },
  714. { 0, 0, 16 },
  715. { 0, 0, 19 },
  716. { 0, 0, 18 },
  717. { 82, -13, 33 },
  718. { 82, 31, 33 },
  719. { 82, 19, 33 },
  720. { 82, 15, 33 },
  721. { 82, 20, 33 },
  722. { 82, 0, 5 },
  723. { 82, 16, 33 },
  724. { 82, 17, 33 },
  725. { 82, 29, 33 },
  726. { 82, 56, 33 },
  727. { 0, 0, 22 },
  728. { 0, 0, 36 },
  729. { 0, 145, 35 },
  730. { 82, 66, 33 },
  731. { 82, 50, 33 },
  732. { 82, 50, 33 },
  733. { 82, 102, 33 },
  734. { 82, 107, 33 },
  735. { 82, 0, 1 },
  736. { 82, 88, 33 },
  737. { 82, 106, 33 },
  738. { 82, 99, 33 },
  739. { 82, 101, 33 },
  740. { 82, 0, 3 },
  741. { 82, 104, 33 },
  742. { 82, 0, 6 },
  743. { 82, 94, 33 },
  744. { 82, 97, 33 },
  745. { 82, 0, 4 },
  746. { 82, 111, 33 },
  747. { 82, 0, 9 },
  748. { 82, 103, 33 },
  749. { 82, 0, 2 },
  750. { 82, 104, 33 },
  751. { 82, 0, 7 },
  752. { 82, 98, 33 },
  753. { 82, 0, 10 },
  754. { 82, 115, 33 },
  755. { 0, 70, 8 }
  756. };
  757. YYCONST yybackup_t YYNEARFAR YYBASED_CODE YYDCDECL yybackup[] = {
  758. 0,
  759. 0,
  760. 0,
  761. 0,
  762. 0,
  763. 0,
  764. 0,
  765. 0,
  766. 0,
  767. 0,
  768. 0,
  769. 0,
  770. 0,
  771. 0,
  772. 0,
  773. 0,
  774. 0,
  775. 0,
  776. 0,
  777. 0,
  778. 0,
  779. 0,
  780. 0,
  781. 0,
  782. 0,
  783. 0,
  784. 0,
  785. 0,
  786. 0,
  787. 0,
  788. 0,
  789. 0,
  790. 0,
  791. 0,
  792. 0,
  793. 0,
  794. 0,
  795. 0,
  796. 0,
  797. 0,
  798. 0,
  799. 0
  800. };
  801. #line 96 ".\scan.l"
  802. /////////////////////////////////////////////////////////////////////////////
  803. // programs section
  804. TokenType getToken(void)
  805. {
  806.     static int firstTime = TRUE;
  807.     TokenType currentToken;
  808.     if (firstTime) {
  809.         firstTime = FALSE;
  810.         lineno++;
  811.         yyin = source;
  812.         yyout = listing;
  813.     }
  814.     currentToken = yylex();
  815.     strncpy(tokenString, yytext, MAXTOKENLEN);
  816.     if (TraceScan) {
  817. lineno = yylineno;
  818.         fprintf(listing,"t%d: ",lineno);
  819.         printToken(currentToken,tokenString);
  820.     }
  821.     return currentToken;
  822. }