parser.dlg
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:6k
源码类别:

编译器/解释器

开发平台:

Others

  1. <<
  2. /* parser.dlg -- DLG Description of scanner
  3.  *
  4.  * Generated from: dlg_p.g
  5.  *
  6.  * Terence Parr, Will Cohen, and Hank Dietz: 1989-1998
  7.  * Purdue University Electrical Engineering
  8.  * With AHPCRC, University of Minnesota
  9.  * ANTLR Version 1.33MR14
  10.  */
  11. #define ANTLR_VERSION 13314
  12. #include "pcctscfg.h"
  13. #include PCCTS_STDIO_H
  14. #include <ctype.h>
  15. #include "dlg.h"
  16. #ifdef MEMCHK
  17. #include "trax.h"
  18. #endif
  19. #include "antlr.h"
  20. #include "tokens.h"
  21. #include "dlgdef.h"
  22. LOOKAHEAD
  23. void zzerraction()
  24. {
  25. (*zzerr)("invalid token");
  26. zzadvance();
  27. zzskip();
  28. }
  29. >>
  30. <<%%lexaction
  31. int func_action; /* should actions be turned into functions?*/
  32. int lex_mode_counter = 0; /* keeps track of the number of %%names */
  33. /* MR1     */
  34. /* MR1  11-Apr-97 Provide mechanism for inserting code into DLG class */
  35. /* MR1 via <<%%lexmember...>>     */
  36. /* MR1     */
  37. int lexMember = 0; /* <<%%lexmemeber ...>>     MR1 */
  38. int lexAction = 0; /* <<%%lexaction ...>> MR1 */
  39. int parserClass = 0; /* <<%%parserclass ...>>        MR1 */
  40. int lexPrefix = 0; /* <<%%lexprefix ...>> MR1 */
  41. char theClassName[100];      /* MR11 */
  42. char *pClassName=theClassName;  /* MR11 */
  43. int firstLexMember=1;              /* MR1 */
  44. #ifdef __USE_PROTOS
  45. void  xxputc(int c) { /* MR1 */
  46. #else
  47. void xxputc(c) /* MR1 */
  48. int c; /* MR1 */
  49. { /* MR1 */
  50. #endif
  51. if (parserClass) { /* MR1 */
  52. *pClassName++=c; /* MR1 */
  53. *pClassName=0; /* MR1 */
  54. } else if (lexMember || lexPrefix) { /* MR1 */
  55. if (class_stream != NULL) fputc(c,class_stream); /* MR1 */
  56. } else { /* MR1 */
  57. fputc(c,OUT); /* MR1 */
  58. }; /* MR1 */
  59. }   /* MR1 */
  60. #ifdef __USE_PROTOS
  61. void xxprintf(char *format,char *string) { /* MR1 */
  62. #else
  63. void xxprintf(format,string)  /* MR1 */
  64. char *format; /* MR1 */
  65. char *string; /* MR1 */
  66. { /* MR1 */
  67. #endif
  68. if (lexMember || lexPrefix || parserClass) { /* MR1 */
  69. if (class_stream != NULL) /* MR1 */
  70. fprintf(class_stream,format,string); /* MR1 */
  71. } else { /* MR1 */
  72. fprintf(OUT,format,string); /* MR1 */
  73. }; /* MR1 */
  74. }   /* MR1 */
  75. >>
  76. %%START
  77. @
  78. <<
  79. NLA = 1;
  80. >>
  81. [rt ]+
  82. <<
  83. NLA = 2;
  84. zzskip();   
  85. >>
  86. n
  87. <<
  88. NLA = 3;
  89. zzline++; zzskip(); DAWDLE;   
  90. >>
  91. @
  92. <<
  93. NLA = L_EOF;
  94. >>
  95. %%
  96. <<
  97. NLA = PER_PER;
  98. >>
  99. %%[a-zA-Z_][a-zA-Z0-9_]*
  100. <<
  101. NLA = NAME_PER_PER;
  102. p_mode_def(&zzlextext[2],lex_mode_counter++);   
  103. >>
  104. <<%%lexmember
  105. <<
  106. NLA = LEXMEMBER;
  107. lexMember=1; /* MR1 */
  108. if (firstLexMember != 0) { /* MR1 */
  109. firstLexMember=0; /* MR1 */
  110. p_class_def1(); /* MR1 */
  111. }; /* MR1 */
  112. zzmode(ACT); /* MR1 */
  113. >>
  114. <<%%lexaction
  115. <<
  116. NLA = LEXACTION;
  117. lexAction=1;zzmode(ACT);  
  118. >>
  119. <<%%parserclass
  120. <<
  121. NLA = PARSERCLASS;
  122. parserClass=1; /* MR1 */
  123. zzmode(ACT); /* MR1 */
  124. >>
  125. <<%%lexprefix
  126. <<
  127. NLA = LEXPREFIX;
  128. lexPrefix=1;zzmode(ACT);  
  129. >>
  130. <<
  131. <<
  132. NLA = ACTION;
  133. if (func_action)
  134. fprintf(OUT,"n%s %sact%d()n{ ",
  135. gen_cpp?"ANTLRTokenType":"static void",
  136. gen_cpp?ClassName("::"):"", ++action_no);
  137. zzmode(ACT); zzskip();
  138. >>
  139. >>
  140. <<
  141. NLA = GREAT_GREAT;
  142. >>
  143. {
  144. <<
  145. NLA = L_BRACE;
  146. >>
  147. }
  148. <<
  149. NLA = R_BRACE;
  150. >>
  151. (
  152. <<
  153. NLA = L_PAR;
  154. >>
  155. )
  156. <<
  157. NLA = R_PAR;
  158. >>
  159. [
  160. <<
  161. NLA = L_BRACK;
  162. >>
  163. ]
  164. <<
  165. NLA = R_BRACK;
  166. >>
  167. *
  168. <<
  169. NLA = ZERO_MORE;
  170. >>
  171. +
  172. <<
  173. NLA = ONE_MORE;
  174. >>
  175. |
  176. <<
  177. NLA = OR;
  178. >>
  179. -
  180. <<
  181. NLA = RANGE;
  182. >>
  183. ~
  184. <<
  185. NLA = NOT;
  186. >>
  187. \0[0-7]*
  188. <<
  189. NLA = OCTAL_VALUE;
  190. {int t; sscanf(&zzlextext[1],"%o",&t); zzlextext[0] = t;}  
  191. >>
  192. \0[Xx][0-9a-fA-F]+
  193. <<
  194. NLA = HEX_VALUE;
  195. {int t; sscanf(&zzlextext[3],"%x",&t); zzlextext[0] = t;}  
  196. >>
  197. \[1-9][0-9]*
  198. <<
  199. NLA = DEC_VALUE;
  200. {int t; sscanf(&zzlextext[1],"%d",&t); zzlextext[0] = t;}  
  201. >>
  202. \t
  203. <<
  204. NLA = TAB;
  205. zzlextext[0] = 't';  
  206. >>
  207. \n
  208. <<
  209. NLA = NL;
  210. zzlextext[0] = 'n';  
  211. >>
  212. \r
  213. <<
  214. NLA = CR;
  215. zzlextext[0] = 'r';  
  216. >>
  217. \b
  218. <<
  219. NLA = BS;
  220. zzlextext[0] = 'b';  
  221. >>
  222. \ n
  223. <<
  224. NLA = CONTINUATION;
  225. zzline++; zzskip();  
  226. >>
  227. \~[tnrb]
  228. <<
  229. NLA = LIT;
  230. zzlextext[0] = zzlextext[1];  
  231. >>
  232. ~[\]
  233. <<
  234. NLA = REGCHAR;
  235. >>
  236. %%ACT
  237. @
  238. <<
  239. NLA = 1;
  240. error("unterminated action", zzline); zzmode(START);   
  241. >>
  242. >>
  243. <<
  244. NLA = ACTION;
  245. if (func_action) fprintf(OUT,"}nn");
  246. zzmode(START);
  247. /* MR1     */
  248. /* MR1  11-Apr-97 Provide mechanism for inserting code into DLG class */
  249. /* MR1 via <<%%lexmember ...>>     */
  250. /* MR1 This is a consequence of not saving actions         */
  251. /* MR1     */
  252. /* MR1 */    parserClass=0;
  253. /* MR1 */    lexPrefix=0;
  254. /* MR1 */    lexAction=0;
  255. /* MR1 */    lexMember=0;
  256. >>
  257. >
  258. <<
  259. NLA = 34;
  260. xxputc(zzlextext[0]); zzskip();   
  261. >>
  262. \>
  263. <<
  264. NLA = 35;
  265. xxputc('>'); zzskip();   
  266. >>
  267. \
  268. <<
  269. NLA = 36;
  270. xxputc('\'); zzskip();   
  271. >>
  272. n
  273. <<
  274. NLA = 37;
  275. xxputc(zzlextext[0]); ++zzline; zzskip();   
  276. >>
  277. /*
  278. <<
  279. NLA = 38;
  280. zzmode(ACTION_COMMENTS); /* MR1 */
  281. xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */
  282. >>
  283. //
  284. <<
  285. NLA = 39;
  286. zzmode(ACTION_CPP_COMMENTS); /* MR1 */
  287. xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */
  288. >>
  289. ~[]
  290. <<
  291. NLA = 40;
  292. xxputc(zzlextext[0]); zzskip();   
  293. >>
  294. %%ACTION_COMMENTS
  295. @
  296. <<
  297. NLA = 1;
  298. >>
  299. */
  300. <<
  301. NLA = 41;
  302. zzmode(ACT); /* MR1 */
  303. xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */
  304. >>
  305. [nr]
  306. <<
  307. NLA = 42;
  308. zzline++; xxputc(zzlextext[0]); zzskip();  
  309. >>
  310. ~[]
  311. <<
  312. NLA = 43;
  313. xxputc(zzlextext[0]); zzskip();  
  314. >>
  315. %%ACTION_CPP_COMMENTS
  316. @
  317. <<
  318. NLA = 1;
  319. >>
  320. [nr]
  321. <<
  322. NLA = 44;
  323. zzmode(ACT); zzline++; /* MR1 */
  324. xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */
  325. >>
  326. ~[]
  327. <<
  328. NLA = 45;
  329. xxputc(zzlextext[0]); zzskip();  
  330. >>
  331. %%