home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / eiffel / smalleif.97 / se.t / SmallEiffel / bin_c / compile_to_c11.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-02  |  100.3 KB  |  4,864 lines

  1. /* ANSI C code generated by SmallEiffel. */
  2. /*
  3. -- SmallEiffel  -- Release (- 0.97)    --      FRANCE
  4. -- Copyright (C), 1994 - Dominique COLNET and Suzanne COLLIN 
  5. -- University Henri Poincare' - Nancy 1 - email colnet@loria.fr 
  6. -- CRIN (Centre de Recherche en Informatique de Nancy)
  7. -- FRANCE 
  8. */
  9. #include "compile_to_c.h"
  10. void rT214compile_to_c(T214 *C){
  11. int _i=0;
  12. /*(IRF3*/(((T40*)oRBC27cpp)->_check_assertion_mode)=(/*(IRF4*/(T0 *)ms1270/*)*/);
  13. /*)*//*IF*/if (((int)(C)->_list)) {
  14. rT40put_string((T40*)oRBC27cpp,(T0 *)ms775);
  15. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1270/*)*/);
  16. rT40put_string((T40*)oRBC27cpp,(T0 *)ms776);
  17. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1270/*)*/);
  18. rT40put_string((T40*)oRBC27cpp,(T0 *)ms777);
  19. _i=1;
  20. while (!((_i)>(((T158*)(C)->_list)->_upper))) {
  21. rT64compile_to_c((T64*)rT158item((T158*)(C)->_list,_i));
  22. _i=(_i)+(1);
  23. }
  24. rT40put_string((T40*)oRBC27cpp,(T0 *)ms783);
  25. rT40put_string((T40*)oRBC27cpp,/*(IRF4*/(T0 *)ms1270/*)*/);
  26. rT40put_string((T40*)oRBC27cpp,(T0 *)ms784);
  27. }
  28. /*FI*/}
  29. void rT214copy(T214 *C,T0 * a1){
  30. /*IF*//*AF*//*AE*/
  31. memcpy(C,a1,s[C->id]);
  32. /*FI*/}
  33. void rT214make(T214 *C,T0 * a1,T0 * a2,T0* a3){
  34. C->_start_position=a1;
  35. C->_header_comment=a2;
  36. C->_list=a3;
  37. }
  38. int rT75is_static(T75 *C){
  39. int R=0;
  40. R=1;
  41. C->_static_value_mem=rT75to_integer(C);
  42. return R;
  43. }
  44. int rT75static_value(T75 *C){
  45. int R=0;
  46. R=(C)->_static_value_mem;
  47. return R;
  48. }
  49. T0 * rT75to_runnable(T75 *C,T0 * a1){
  50. T0 * R=NULL;
  51. /*IF*/if (!((C)->_current_type)) {
  52. C->_current_type=a1;
  53. R=(T0 *)C;
  54. }
  55. else {
  56. R=rT75clone(C,(T0 *)C);
  57. /*(IRF3*/(((T75*)R)->_current_type)=(a1);
  58. /*)*/}
  59. /*FI*/return R;
  60. }
  61. void rT75error(/*C*/T0 * a1,T0* a2){
  62. /*UT*/(T45*)oRBC27eh;
  63. rT45add_position(a1);
  64. rT45error((T45*)oRBC27eh,a2);
  65. }
  66. T0 * rT75add_comment(T75 *C,T0 * a1){
  67. T0 * R=NULL;
  68. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  69. R=(T0 *)C;
  70. }
  71. else {
  72. {T220 *n=((T220*)new(220));
  73. rT220make(n,(T0 *)C,a1);
  74. R=(T0 *)n;}}
  75. /*FI*/return R;
  76. }
  77. int ofBC75result_type=0;
  78. T0*oRBC75result_type;
  79. T0 * rT75result_type(/*C*/void){
  80. T0 * R=NULL;
  81. if (ofBC75result_type==0){
  82. ofBC75result_type=1;
  83. {T109 *n=((T109*)new(109));
  84. rT109make(n,NULL);
  85. R=(T0 *)n;}
  86. oRBC75result_type=R;}
  87. return oRBC75result_type;}
  88. T0* rT75clone(T75 *C,T0* a1){
  89. T0* R=NULL;
  90. /*IF*/if (((int)a1)) {
  91. R=(T0 *)new(a1->id);
  92. AF_1
  93. XrT28copy(R,a1);
  94. AF_0
  95. }
  96. /*FI*/return R;
  97. }
  98. void rT75compile_to_c(T75 *C){
  99. rT40put_character((T40*)oRBC27cpp,'\47');
  100. /*IF*/if ((rT3is_letter((C)->_value))||(rT3is_digit((C)->_value))) {
  101. rT40put_character((T40*)oRBC27cpp,(C)->_value);
  102. }
  103. else {
  104. rT40put_character((T40*)oRBC27cpp,'\134');
  105. rT40put_integer((T40*)oRBC27cpp,rT2to_octal(((unsigned char)(C)->_value)));
  106. }
  107. /*FI*/rT40put_character((T40*)oRBC27cpp,'\47');
  108. }
  109. int rT75to_integer(T75 *C){
  110. int R=0;
  111. R=((unsigned char)(C)->_value);
  112. return R;
  113. }
  114. T0 * rT75written_in(T75 *C){
  115. T0 * R=NULL;
  116. T0 * _sp=NULL;
  117. _sp=(C)->_start_position;
  118. /*IF*/if (((int)_sp)) {
  119. R=((T46*)_sp)->_base_class_name;
  120. }
  121. /*FI*/return R;
  122. }
  123. void rT75copy(T75 *C,T0 * a1){
  124. /*IF*//*AF*//*AE*/
  125. memcpy(C,a1,s[C->id]);
  126. /*FI*/}
  127. int rT75is_a(T75 *C,T0 * a1){
  128. int R=0;
  129. R=XrT58is_a(rT109run_type((T109*)rT75result_type()),XrT58run_type(XrT68result_type(a1)));
  130. /*IF*/if (!(R)) {
  131. /*UT*/(T45*)oRBC27eh;
  132. rT45add_position((C)->_start_position);
  133. rT75error(XrT68start_position(a1),(T0 *)ms1261);
  134. }
  135. /*FI*/return R;
  136. }
  137. void rT75make(T75 *C,T0 * a1,char a2,int a3){
  138. C->_start_position=a1;
  139. C->_value=a2;
  140. /*(IRF3*/((C)->_pretty_print_mode)=(a3);
  141. /*)*/}
  142. int rT51a_constant(T51 *C){
  143. int R=0;
  144. T0 * _fn=NULL;
  145. T0 * _e_current=NULL;
  146. /*IF*/if (rT51a_identifier(C)) {
  147. R=1;
  148. _fn=rT69to_feature_name((T69*)rT51tmp_name());
  149. {T89 *n=((T89*)new(89));
  150. rT89make(n,XrT67start_position(_fn),0);
  151. _e_current=(T0 *)n;}
  152. {T163 *n=((T163*)new(163));
  153. rT163make(n,_e_current,_fn);
  154. C->_last_expression=(T0 *)n;}}
  155.  else if (rT51a_character_constant(C)) {
  156. R=1;
  157. C->_last_expression=(C)->_last_character_constant;
  158. }
  159.  else if (rT51a_integer_constant(C)) {
  160. R=1;
  161. C->_last_expression=(C)->_last_integer_constant;
  162. }
  163. /*FI*/return R;
  164. }
  165. int rT51a_conditional(T51 *C){
  166. int R=0;
  167. T0 * _ifthenelse=NULL;
  168. /*IF*/if (rT51a_keyword(C,(T0 *)ms353)) {
  169. R=1;
  170. {T218 *n=((T218*)new(218));
  171. /*(IRF3*/((n)->_start_position)=(rT51pos((C)->_start_line,(C)->_start_column));
  172. /*)*/_ifthenelse=(T0 *)n;}
  173. rT51a_then_part_list(C,_ifthenelse);
  174. /*IF*/if (rT51a_keyword(C,(T0 *)ms107)) {
  175. /*(IRF3*/(((T218*)_ifthenelse)->_else_compound)=(rT51a_compound2(C,(T0 *)ms359,(T0 *)ms121));
  176. /*)*/}
  177. else {
  178. /*IF*/if (!(rT51a_keyword(C,(T0 *)ms121))) {
  179. rT51wcp(C,(T0 *)ms360);
  180. }
  181. /*FI*/}
  182. /*FI*/C->_last_instruction=_ifthenelse;
  183. }
  184. /*FI*/return R;
  185. }
  186. int rT51a_boolean_constant(T51 *C){
  187. int R=0;
  188. /*IF*/if (rT51a_keyword(C,(T0 *)ms160)) {
  189. {T73 *n=((T73*)new(73));
  190. /*(IRF3*/((n)->_start_position)=(rT51pos((C)->_start_line,(C)->_start_column));
  191. /*)*/C->_last_boolean_constant=(T0 *)n;}R=1;
  192. }
  193.  else if (rT51a_keyword(C,(T0 *)ms161)) {
  194. {T74 *n=((T74*)new(74));
  195. /*(IRF3*/((n)->_start_position)=(rT51pos((C)->_start_line,(C)->_start_column));
  196. /*)*/C->_last_boolean_constant=(T0 *)n;}R=1;
  197. }
  198. /*FI*/return R;
  199. }
  200. int rT51a_then_part(T51 *C,T0 * a1){
  201. int R=0;
  202. T0 * _expression=NULL;
  203. /*IF*/if (rT51a_expression(C)) {
  204. R=1;
  205. _expression=XrT68add_comment((C)->_last_expression,rT51get_comments(C));
  206. /*IF*/if (!(rT51a_keyword(C,(T0 *)ms104))) {
  207. rT51wcp(C,(T0 *)ms354);
  208. }
  209. /*FI*/rT218add_if_then((T218*)a1,_expression,rT51a_compound1(C,(T0 *)ms355));
  210. }
  211. /*FI*/return R;
  212. }
  213. void rT51a_then_part_list(T51 *C,T0 * a1){
  214. /*IF*/if (!(rT51a_then_part(C,a1))) {
  215. rT51fcp(C,(T0 *)ms356);
  216. }
  217. /*FI*/while (!(!(rT51a_keyword(C,(T0 *)ms357)))) {
  218. /*IF*/if (!(rT51a_then_part(C,a1))) {
  219. rT51fcp(C,(T0 *)ms358);
  220. }
  221. /*FI*/}
  222. }
  223. T0 * rT51get_comments(T51 *C){
  224. T0 * R=NULL;
  225. /*IF*/if (((int)(C)->_last_comments)) {
  226. R=(C)->_last_comments;
  227. C->_last_comments=NULL;
  228. }
  229. /*FI*/return R;
  230. }
  231. int rT51a_parent(T51 *C){
  232. int R=0;
  233. int _old_column=0;
  234. int _old_line=0;
  235. /*IF*/if (rT51a_class_type(C)) {
  236. R=1;
  237. /*IF*/if (rT7is_equal((T7*)((T48*)rT51current_class_name(C))->_to_string,((T48*)XrT58base_class_name((C)->_last_class_type))->_to_string)) {
  238. rT51error(XrT58start_position((C)->_last_class_type),(T0 *)ms225);
  239. }
  240. /*FI*/{T118 *n=((T118*)new(118));
  241. rT118make(n,(C)->_last_class_type);
  242. C->_last_parent=(T0 *)n;}
  243. /*IF*/if (rT51a_keyword(C,(T0 *)ms228)) {
  244. rT51a_rename_list(C);
  245. /*IF*/if (((C)->_cc)==('\73')) {
  246. rT51wcp(C,(T0 *)ms232);
  247. C->_ok=rT51skip1(C,'\73');
  248. }
  249. /*FI*/}
  250. /*FI*/rT51a_new_export_list(C);
  251. /*IF*/if (rT51a_keyword(C,(T0 *)ms243)) {
  252. rT51a_undefine_list(C);
  253. }
  254. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms244)) {
  255. rT51a_redefine_list(C);
  256. }
  257. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms245)) {
  258. rT51a_select_list(C);
  259. }
  260. /*FI*/_old_line=(C)->_line;
  261. _old_column=(C)->_column;
  262. /*IF*/if (((((rT51a_keyword(C,(T0 *)ms246))||(rT51a_keyword(C,(T0 *)ms247)))||(rT51a_keyword(C,(T0 *)ms248)))||(rT51a_keyword(C,(T0 *)ms249)))||(rT51a_keyword(C,(T0 *)ms250))) {
  263. /*UT*/(T45*)oRBC27eh;
  264. rT45add_position(rT51pos(_old_line,_old_column));
  265. rT51fatal_error((T0 *)ms251);
  266. }
  267. /*FI*/C->_ok=rT51a_keyword(C,(T0 *)ms121);
  268. }
  269. /*FI*/return R;
  270. }
  271. void rT51a_parent_list(T51 *C,T0 * a1,T0 * a2){
  272. T0* _list=NULL;
  273. while (!(!(rT51a_parent(C)))) {
  274. /*IF*/if (!(_list)) {
  275. _list=ma(130,0,1,(C)->_last_parent);
  276. }
  277. else {
  278. rT130add_last((T130*)_list,(C)->_last_parent);
  279. }
  280. /*FI*/C->_ok=rT51skip1(C,'\73');
  281. /*(IRF3*/(((T118*)(C)->_last_parent)->_comment)=(rT51get_comments(C));
  282. /*)*/}
  283. /*IF*/if ((((int)a2))||(((int)_list))) {
  284. rT50set_parent_list((T50*)(C)->_last_base_class,a1,a2,_list);
  285. }
  286. /*FI*/}
  287. int rT51a_when_part(T51 *C,T0 * a1){
  288. int R=0;
  289. T0 * _constant=NULL;
  290. T0 * _e_when=NULL;
  291. int _state=0;
  292. /*IF*/if (rT51a_keyword(C,(T0 *)ms365)) {
  293. R=1;
  294. {T226 *n=((T226*)new(226));
  295. rT226make(n,rT51pos((C)->_start_line,(C)->_start_column),rT51get_comments(C));
  296. _e_when=(T0 *)n;}
  297. while (!((_state)>(3))) {
  298. {int iv1=_state;
  299. if (0 == iv1) goto l119;
  300. goto l120;
  301.  l119: ;
  302. /*IF*/if (rT51a_constant(C)) {
  303. _constant=(C)->_last_expression;
  304. _state=1;
  305. }
  306.  else if (rT51a_keyword(C,(T0 *)ms104)) {
  307. /*IF*/if (((int)_constant)) {
  308. rT226add_value((T226*)_e_when,_constant);
  309. }
  310. /*FI*//*(IRF3*/(((T226*)_e_when)->_compound)=(rT51a_compound1(C,(T0 *)ms366));
  311. /*)*/rT225add_when((T225*)a1,_e_when);
  312. _state=4;
  313. }
  314.  else if (((C)->_cc)==('\54')) {
  315. rT51wcp(C,(T0 *)ms234);
  316. C->_ok=rT51skip1(C,'\54');
  317. }
  318. else {
  319. rT51fcp(C,(T0 *)ms367);
  320. _state=4;
  321. }
  322. /*FI*/goto l118;
  323.  l120: ;
  324. if (1 == iv1) goto l121;
  325. goto l122;
  326.  l121: ;
  327. /*IF*/if (rT51a_keyword(C,(T0 *)ms104)) {
  328. /*IF*/if (((int)_constant)) {
  329. rT226add_value((T226*)_e_when,_constant);
  330. }
  331. /*FI*//*(IRF3*/(((T226*)_e_when)->_compound)=(rT51a_compound1(C,(T0 *)ms368));
  332. /*)*/rT225add_when((T225*)a1,_e_when);
  333. _state=4;
  334. }
  335.  else if (rT51skip2(C,'\56','\56')) {
  336. _state=2;
  337. }
  338.  else if (rT51skip1(C,'\54')) {
  339. rT226add_value((T226*)_e_when,_constant);
  340. _constant=NULL;
  341. _state=0;
  342. }
  343. else {
  344. rT51fcp(C,(T0 *)ms367);
  345. _state=4;
  346. }
  347. /*FI*/goto l118;
  348.  l122: ;
  349. if (2 == iv1) goto l123;
  350. goto l124;
  351.  l123: ;
  352. /*IF*/if (rT51a_constant(C)) {
  353. rT226add_slice((T226*)_e_when,_constant,(C)->_last_expression);
  354. _constant=NULL;
  355. _state=3;
  356. }
  357. else {
  358. rT51fcp(C,(T0 *)ms367);
  359. _state=4;
  360. }
  361. /*FI*/goto l118;
  362.  l124: ;
  363. /*IF*/if (rT51skip1(C,'\54')) {
  364. _state=0;
  365. }
  366.  else if (rT51a_keyword(C,(T0 *)ms104)) {
  367. /*(IRF3*/(((T226*)_e_when)->_compound)=(rT51a_compound1(C,(T0 *)ms369));
  368. /*)*/rT225add_when((T225*)a1,_e_when);
  369. _state=4;
  370. }
  371.  else if (rT51a_constant(C)) {
  372. _constant=(C)->_last_expression;
  373. rT51warning(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms217);
  374. _state=1;
  375. }
  376. else {
  377. rT51fcp(C,(T0 *)ms367);
  378. _state=4;
  379. }
  380. /*FI*/ l118: ;
  381. }
  382. }
  383. }
  384. /*FI*/return R;
  385. }
  386. void rT51a_select_list(T51 *C){
  387. /*IF*/if (rT51a_feature_list(C)) {
  388. rT118set_select((T118*)(C)->_last_parent,(C)->_last_feature_list);
  389. }
  390. /*FI*/}
  391. int rT51a_unary(T51 *C){
  392. int R=0;
  393. /*IF*/if (rT51a_keyword(C,(T0 *)ms84)) {
  394. {T66 *n=((T66*)new(66));
  395. rT66make(n,(T0 *)ms84,rT51pos((C)->_start_line,(C)->_start_column));
  396. C->_last_prefix=(T0 *)n;}
  397. R=1;
  398. }
  399.  else if (rT51skip1(C,'\53')) {
  400. {T66 *n=((T66*)new(66));
  401. rT66make(n,(T0 *)ms86,rT51pos((C)->_start_line,(C)->_start_column));
  402. C->_last_prefix=(T0 *)n;}
  403. R=1;
  404. }
  405.  else if (rT51skip1(C,'\55')) {
  406. {T66 *n=((T66*)new(66));
  407. rT66make(n,(T0 *)ms87,rT51pos((C)->_start_line,(C)->_start_column));
  408. C->_last_prefix=(T0 *)n;}
  409. R=1;
  410. }
  411. /*FI*/return R;
  412. }
  413. int rT51a_rename_pair(T51 *C){
  414. int R=0;
  415. T0 * _rename_pair=NULL;
  416. T0 * _name1=NULL;
  417. /*IF*/if (rT51a_identifier(C)) {
  418. _name1=rT69to_feature_name((T69*)rT51tmp_name());
  419. /*IF*/if (rT51a_keyword(C,(T0 *)ms229)) {
  420. /*IF*/if (rT51a_identifier(C)) {
  421. R=1;
  422. /*IF*/if (rT7is_equal((T7*)((T69*)rT51tmp_name())->_to_string,XrT67to_string(_name1))) {
  423. rT51warning(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms230);
  424. }
  425. else {
  426. {T119 *n=((T119*)new(119));
  427. rT119make(n,_name1,rT69to_feature_name((T69*)rT51tmp_name()));
  428. _rename_pair=(T0 *)n;}
  429. rT118add_rename((T118*)(C)->_last_parent,_rename_pair);
  430. }
  431. /*FI*/}
  432. else {
  433. rT51fcp(C,(T0 *)ms231);
  434. }
  435. /*FI*/}
  436. else {
  437. rT51go_back(C,XrT67start_position(_name1));
  438. }
  439. /*FI*/}
  440. /*FI*/return R;
  441. }
  442. void rT51a_rename_list(T51 *C){
  443. while (!(!(rT51a_rename_pair(C)))) {
  444. C->_ok=rT51skip1(C,'\54');
  445. }
  446. }
  447. T0 * rT51to_call(/*C*/T0 * a1,T0 * a2,T0 * a3){
  448. T0 * R=NULL;
  449. /*IF*/if (!(a2)) {
  450. R=a1;
  451. }
  452.  else if (!(a3)) {
  453. {T163 *n=((T163*)new(163));
  454. rT163make(n,a1,a2);
  455. R=(T0 *)n;}}
  456.  else if ((rT170count((T170*)a3))==(1)) {
  457. {T174 *n=((T174*)new(174));
  458. rT174make(n,a1,a2,a3);
  459. R=(T0 *)n;}}
  460. else {
  461. {T175 *n=((T175*)new(175));
  462. rT175make(n,a1,a2,a3);
  463. R=(T0 *)n;}}
  464. /*FI*/return R;
  465. }
  466. int rT51a_e10(T51 *C){
  467. int R=0;
  468. /*IF*/if (rT51a_strip(C)) {
  469. R=1;
  470. }
  471.  else if (rT51skip1(C,'\50')) {
  472. R=1;
  473. /*IF*/if (rT51a_expression(C)) {
  474. /*IF*/if (rT51skip1(C,'\51')) {
  475. rT51a_r10(C,0,(C)->_last_expression,NULL,NULL);
  476. }
  477. else {
  478. rT51fcp(C,(T0 *)ms301);
  479. }
  480. /*FI*/}
  481. else {
  482. rT51fcp(C,(T0 *)ms302);
  483. }
  484. /*FI*/}
  485.  else if (rT51a_manifest_constant(C)) {
  486. C->_last_expression=(C)->_last_manifest_constant;
  487. R=1;
  488. /*IF*/if (rT51skip1unless2(C,'\56','\56')) {
  489. rT51wcp(C,(T0 *)ms303);
  490. rT51a_after_a_dot(C,0,(C)->_last_expression);
  491. }
  492. /*FI*/}
  493.  else if (rT51a_identifier(C)) {
  494. R=1;
  495. /*IF*/if (((((rT51a_result(C))||(rT51a_current(C)))||(rT51a_void(C)))||(rT51a_local_variable(C)))||(rT51a_argument(C))) {
  496. rT51a_r10(C,0,(C)->_last_expression,NULL,NULL);
  497. }
  498. else {
  499. rT51a_function_call(C);
  500. }
  501. /*FI*/}
  502. /*FI*/return R;
  503. }
  504. void rT51a_assignment_aux(T51 *C,int a1){
  505. T0 * _rhs=NULL;
  506. T0 * _writable=NULL;
  507. /*IF*/if (rT51a_current(C)) {
  508. /*UT*/(T45*)oRBC27eh;
  509. rT45add_position(XrT68start_position((C)->_last_expression));
  510. rT51fatal_error((T0 *)ms391);
  511. }
  512.  else if (rT51a_void(C)) {
  513. /*UT*/(T45*)oRBC27eh;
  514. rT45add_position(rT69start_position((T69*)rT51tmp_name()));
  515. rT51fatal_error((T0 *)ms392);
  516. }
  517.  else if (rT51a_argument(C)) {
  518. /*UT*/(T45*)oRBC27eh;
  519. rT45add_position(XrT68start_position((C)->_last_expression));
  520. rT51fatal_error((T0 *)ms393);
  521. }
  522. else {
  523. /*IF*/if (rT7same_as((T7*)(T0 *)ms293,((T69*)rT51tmp_name())->_to_string)) {
  524. /*IF*/if (!((C)->_function_type)) {
  525. rT51error(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms394);
  526. }
  527. /*FI*/_writable=rT69to_e_result((T69*)rT51tmp_name());
  528. }
  529.  else if (rT51a_local_variable(C)) {
  530. _writable=(C)->_last_expression;
  531. }
  532. else {
  533. _writable=rT69to_feature_name((T69*)rT51tmp_name());
  534. }
  535. /*FI*//*IF*/if (rT51a_expression(C)) {
  536. _rhs=(C)->_last_expression;
  537. /*IF*/if (a1) {
  538. {T248 *n=((T248*)new(248));
  539. rT248make(n,_writable,_rhs);
  540. C->_last_instruction=(T0 *)n;}}
  541. else {
  542. {T249 *n=((T249*)new(249));
  543. rT249make(n,_writable,_rhs);
  544. C->_last_instruction=(T0 *)n;}}
  545. /*FI*/}
  546. else {
  547. rT51fcp(C,(T0 *)ms395);
  548. }
  549. /*FI*/}
  550. /*FI*/}
  551. int rT51a_assignment_or_call(T51 *C){
  552. int R=0;
  553. /*IF*/if ((rT51skip1(C,'\50'))&&(rT51a_expression(C))) {
  554. R=1;
  555. /*IF*/if (rT51skip1(C,'\51')) {
  556. rT51a_r10(C,1,(C)->_last_expression,NULL,NULL);
  557. }
  558. else {
  559. rT51fcp(C,(T0 *)ms390);
  560. }
  561. /*FI*/}
  562.  else if (rT51a_identifier(C)) {
  563. R=1;
  564. /*IF*/if (rT51skip2(C,'\72','\75')) {
  565. rT51a_assignment_aux(C,1);
  566. }
  567.  else if (rT51skip2(C,'\77','\75')) {
  568. rT51a_assignment_aux(C,0);
  569. }
  570.  else if ((((rT51a_current(C))||(rT51a_result(C)))||(rT51a_local_variable(C)))||(rT51a_argument(C))) {
  571. rT51a_r10(C,1,(C)->_last_expression,NULL,NULL);
  572. }
  573. else {
  574. rT51a_procedure_call(C);
  575. }
  576. /*FI*/}
  577. /*FI*/return R;
  578. }
  579. T0* rT51a_assertion(T51 *C){
  580. T0* R=NULL;
  581. int _state=0;
  582. T0 * _assertion=NULL;
  583. T0 * _expression=NULL;
  584. T0 * _tag=NULL;
  585. while (!((_state)>(3))) {
  586. {int iv1=_state;
  587. if (0 == iv1) goto l126;
  588. goto l127;
  589.  l126: ;
  590. /*IF*/if (((C)->_cc)==('\73')) {
  591. rT51wcp(C,(T0 *)ms238);
  592. C->_ok=rT51skip1(C,'\73');
  593. /*IF*/if (((int)(C)->_last_comments)) {
  594. {T64 *n=((T64*)new(64));
  595. rT64make(n,NULL,NULL,rT51get_comments(C));
  596. _assertion=(T0 *)n;}
  597. /*IF*/if (!(R)) {
  598. R=ma(158,0,1,_assertion);
  599. }
  600. else {
  601. rT158add_last((T158*)R,_assertion);
  602. }
  603. /*FI*/}
  604. /*FI*/}
  605.  else if (rT51a_tag_mark(C)) {
  606. _tag=(C)->_last_tag_mark;
  607. _state=1;
  608. }
  609.  else if (rT51a_expression(C)) {
  610. _expression=(C)->_last_expression;
  611. _state=2;
  612. }
  613. else {
  614. _state=4;
  615. }
  616. /*FI*/goto l125;
  617.  l127: ;
  618. if (1 == iv1) goto l128;
  619. goto l129;
  620.  l128: ;
  621. /*IF*/if (rT51skip1(C,'\73')) {
  622. {T64 *n=((T64*)new(64));
  623. rT64make(n,_tag,NULL,rT51get_comments(C));
  624. _assertion=(T0 *)n;}
  625. /*IF*/if (!(R)) {
  626. R=ma(158,0,1,_assertion);
  627. }
  628. else {
  629. rT158add_last((T158*)R,_assertion);
  630. }
  631. /*FI*/_state=0;
  632. }
  633.  else if (rT51a_tag_mark(C)) {
  634. {T64 *n=((T64*)new(64));
  635. rT64make(n,_tag,NULL,rT51get_comments(C));
  636. _assertion=(T0 *)n;}
  637. /*IF*/if (!(R)) {
  638. R=ma(158,0,1,_assertion);
  639. }
  640. else {
  641. rT158add_last((T158*)R,_assertion);
  642. }
  643. /*FI*/_tag=(C)->_last_tag_mark;
  644. }
  645.  else if (rT51a_expression(C)) {
  646. _expression=(C)->_last_expression;
  647. _state=3;
  648. }
  649. else {
  650. {T64 *n=((T64*)new(64));
  651. rT64make(n,_tag,NULL,rT51get_comments(C));
  652. _assertion=(T0 *)n;}
  653. /*IF*/if (!(R)) {
  654. R=ma(158,0,1,_assertion);
  655. }
  656. else {
  657. rT158add_last((T158*)R,_assertion);
  658. }
  659. /*FI*/_state=4;
  660. }
  661. /*FI*/goto l125;
  662.  l129: ;
  663. if (2 == iv1) goto l130;
  664. goto l131;
  665.  l130: ;
  666. /*IF*/if (rT51skip1(C,'\73')) {
  667. {T64 *n=((T64*)new(64));
  668. rT64make(n,NULL,_expression,rT51get_comments(C));
  669. _assertion=(T0 *)n;}
  670. /*IF*/if (!(R)) {
  671. R=ma(158,0,1,_assertion);
  672. }
  673. else {
  674. rT158add_last((T158*)R,_assertion);
  675. }
  676. /*FI*/_state=0;
  677. }
  678.  else if (rT51a_tag_mark(C)) {
  679. {T64 *n=((T64*)new(64));
  680. rT64make(n,NULL,_expression,rT51get_comments(C));
  681. _assertion=(T0 *)n;}
  682. /*IF*/if (!(R)) {
  683. R=ma(158,0,1,_assertion);
  684. }
  685. else {
  686. rT158add_last((T158*)R,_assertion);
  687. }
  688. /*FI*/_tag=(C)->_last_tag_mark;
  689. _state=1;
  690. }
  691.  else if (rT51a_expression(C)) {
  692. {T64 *n=((T64*)new(64));
  693. rT64make(n,NULL,_expression,rT51get_comments(C));
  694. _assertion=(T0 *)n;}
  695. /*IF*/if (!(R)) {
  696. R=ma(158,0,1,_assertion);
  697. }
  698. else {
  699. rT158add_last((T158*)R,_assertion);
  700. }
  701. /*FI*/_expression=(C)->_last_expression;
  702. _state=2;
  703. }
  704. else {
  705. {T64 *n=((T64*)new(64));
  706. rT64make(n,NULL,_expression,rT51get_comments(C));
  707. _assertion=(T0 *)n;}
  708. /*IF*/if (!(R)) {
  709. R=ma(158,0,1,_assertion);
  710. }
  711. else {
  712. rT158add_last((T158*)R,_assertion);
  713. }
  714. /*FI*/_state=4;
  715. }
  716. /*FI*/goto l125;
  717.  l131: ;
  718. /*IF*/if (rT51skip1(C,'\73')) {
  719. {T64 *n=((T64*)new(64));
  720. rT64make(n,_tag,_expression,rT51get_comments(C));
  721. _assertion=(T0 *)n;}
  722. /*IF*/if (!(R)) {
  723. R=ma(158,0,1,_assertion);
  724. }
  725. else {
  726. rT158add_last((T158*)R,_assertion);
  727. }
  728. /*FI*/_state=0;
  729. }
  730.  else if (rT51a_tag_mark(C)) {
  731. {T64 *n=((T64*)new(64));
  732. rT64make(n,_tag,_expression,rT51get_comments(C));
  733. _assertion=(T0 *)n;}
  734. /*IF*/if (!(R)) {
  735. R=ma(158,0,1,_assertion);
  736. }
  737. else {
  738. rT158add_last((T158*)R,_assertion);
  739. }
  740. /*FI*/_tag=(C)->_last_tag_mark;
  741. _state=1;
  742. }
  743.  else if (rT51a_expression(C)) {
  744. {T64 *n=((T64*)new(64));
  745. rT64make(n,_tag,_expression,rT51get_comments(C));
  746. _assertion=(T0 *)n;}
  747. /*IF*/if (!(R)) {
  748. R=ma(158,0,1,_assertion);
  749. }
  750. else {
  751. rT158add_last((T158*)R,_assertion);
  752. }
  753. /*FI*/_expression=(C)->_last_expression;
  754. _state=2;
  755. }
  756. else {
  757. {T64 *n=((T64*)new(64));
  758. rT64make(n,_tag,_expression,rT51get_comments(C));
  759. _assertion=(T0 *)n;}
  760. /*IF*/if (!(R)) {
  761. R=ma(158,0,1,_assertion);
  762. }
  763. else {
  764. rT158add_last((T158*)R,_assertion);
  765. }
  766. /*FI*/_state=4;
  767. }
  768. /*FI*/ l125: ;
  769. }
  770. }
  771. return R;
  772. }
  773. void rT51a_formal_arg_list(T51 *C){
  774. int _state=0;
  775. T0* _list=NULL;
  776. T0 * _declaration=NULL;
  777. T0* _name_list=NULL;
  778. T0 * _name=NULL;
  779. T0 * _sp=NULL;
  780. C->_arguments=NULL;
  781. while (!((_state)>(5))) {
  782. {int iv1=_state;
  783. if (0 == iv1) goto l133;
  784. goto l134;
  785.  l133: ;
  786. /*IF*/if (rT51skip1(C,'\50')) {
  787. {T46 *n=((T46*)new(46));
  788. rT46make(n,(C)->_start_line,(C)->_start_column);
  789. _sp=(T0 *)n;}
  790. _state=1;
  791. }
  792. else {
  793. _state=6;
  794. }
  795. /*FI*/goto l132;
  796.  l134: ;
  797. if (1 == iv1) goto l135;
  798. goto l136;
  799.  l135: ;
  800. /*IF*/if (rT51a_identifier(C)) {
  801. _name=rT69to_decl_name((T69*)rT51tmp_name());
  802. _state=2;
  803. }
  804.  else if (rT51skip1(C,'\51')) {
  805. _state=6;
  806. }
  807. else {
  808. _state=7;
  809. }
  810. /*FI*/goto l132;
  811.  l136: ;
  812. if (2 == iv1) goto l137;
  813. goto l138;
  814.  l137: ;
  815. /*IF*/if (rT51skip1(C,'\72')) {
  816. /*IF*/if (((int)_name_list)) {
  817. rT141add_last((T141*)_name_list,_name);
  818. _name=NULL;
  819. }
  820. /*FI*/_state=4;
  821. }
  822. else {
  823. C->_ok=rT51skip1(C,'\54');
  824. /*IF*/if (!(_name_list)) {
  825. _name_list=ma(141,0,1,_name);
  826. }
  827. else {
  828. rT141add_last((T141*)_name_list,_name);
  829. }
  830. /*FI*/_name=NULL;
  831. _state=3;
  832. }
  833. /*FI*/goto l132;
  834.  l138: ;
  835. if (3 == iv1) goto l139;
  836. goto l140;
  837.  l139: ;
  838. /*IF*/if (rT51a_identifier(C)) {
  839. _name=rT69to_decl_name((T69*)rT51tmp_name());
  840. _state=2;
  841. }
  842.  else if ((((C)->_cc)==('\54'))||(((C)->_cc)==('\73'))) {
  843. rT51wcp(C,(T0 *)ms258);
  844. C->_ok=(rT51skip1(C,'\54'))||(rT51skip1(C,'\73'));
  845. }
  846. else {
  847. _state=7;
  848. }
  849. /*FI*/goto l132;
  850.  l140: ;
  851. if (4 == iv1) goto l141;
  852. goto l142;
  853.  l141: ;
  854. /*IF*/if (rT51a_type(C)) {
  855. /*IF*/if (((int)_name_list)) {
  856. {T142 *n=((T142*)new(142));
  857. rT142make(n,_name_list,(C)->_last_type);
  858. _declaration=(T0 *)n;}_name_list=NULL;
  859. }
  860. else {
  861. {T94 *n=((T94*)new(94));
  862. rT94make(n,_name,(C)->_last_type);
  863. _declaration=(T0 *)n;}_name=NULL;
  864. }
  865. /*FI*//*IF*/if (!(_list)) {
  866. _list=ma(143,0,1,_declaration);
  867. }
  868. else {
  869. XrT143add_last(_list,_declaration);
  870. }
  871. /*FI*/_declaration=NULL;
  872. _state=5;
  873. }
  874. else {
  875. _state=7;
  876. }
  877. /*FI*/goto l132;
  878.  l142: ;
  879. /*IF*/if (rT51skip1(C,'\51')) {
  880. _state=6;
  881. }
  882.  else if (((C)->_cc)==('\54')) {
  883. rT51wcp(C,(T0 *)ms259);
  884. C->_ok=rT51skip1(C,'\54');
  885. _state=1;
  886. }
  887. else {
  888. C->_ok=rT51skip1(C,'\73');
  889. _state=1;
  890. }
  891. /*FI*/ l132: ;
  892. }
  893. }
  894. /*IF*/if ((_state)==(7)) {
  895. rT51fcp(C,(T0 *)ms260);
  896. }
  897.  else if ((((int)_sp))&&(!(_list))) {
  898. rT51warning(_sp,(T0 *)ms261);
  899. }
  900.  else if (((int)_sp)) {
  901. {T92 *n=((T92*)new(92));
  902. rT92make(n,_sp,_list);
  903. C->_arguments=(T0 *)n;}
  904. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_arguments)=((C)->_arguments);
  905. /*)*/}
  906. /*FI*/}
  907. void rT51a_undefine_list(T51 *C){
  908. /*IF*/if (rT51a_feature_list(C)) {
  909. rT118set_undefine((T118*)(C)->_last_parent,(C)->_last_feature_list);
  910. }
  911. /*FI*/}
  912. int rT51a_prefix(T51 *C){
  913. int R=0;
  914. /*IF*/if (rT51a_keyword(C,(T0 *)ms81)) {
  915. R=1;
  916. /*IF*/if (((C)->_cc)==('\42')) {
  917. rT51next_char(C);
  918. }
  919. else {
  920. rT51wcp(C,(T0 *)ms83);
  921. }
  922. /*FI*//*IF*/if (rT51a_unary(C)) {
  923. }
  924.  else if (rT51a_free_operator(C)) {
  925. C->_last_prefix=rT69to_prefix_name((T69*)rT51tmp_operator());
  926. }
  927. else {
  928. rT51fcp(C,(T0 *)ms88);
  929. }
  930. /*FI*//*IF*/if (!(rT51skip1(C,'\42'))) {
  931. rT51wcp(C,(T0 *)ms89);
  932. }
  933. /*FI*/}
  934. /*FI*/return R;
  935. }
  936. void rT51a_formal_generic_list(T51 *C){
  937. int _state=0;
  938. T0* _list=NULL;
  939. T0 * _fga=NULL;
  940. T0 * _constraint=NULL;
  941. T0 * _name=NULL;
  942. T0 * _sp=NULL;
  943. C->_formal_generic_list=NULL;
  944. while (!((_state)>(4))) {
  945. {int iv1=_state;
  946. if (0 == iv1) goto l144;
  947. goto l145;
  948.  l144: ;
  949. /*IF*/if (rT51skip1(C,'\133')) {
  950. {T46 *n=((T46*)new(46));
  951. rT46make(n,(C)->_start_line,(C)->_start_column);
  952. _sp=(T0 *)n;}
  953. _state=1;
  954. }
  955. else {
  956. _state=5;
  957. }
  958. /*FI*/goto l143;
  959.  l145: ;
  960. if (1 == iv1) goto l146;
  961. goto l147;
  962.  l146: ;
  963. /*IF*/if (rT51a_base_class_name(C)) {
  964. _name=(C)->_last_class_name;
  965. _state=2;
  966. }
  967. else {
  968. _state=6;
  969. }
  970. /*FI*/goto l143;
  971.  l147: ;
  972. if (2 == iv1) goto l148;
  973. goto l149;
  974.  l148: ;
  975. /*IF*/if (rT51skip2(C,'\55','\76')) {
  976. _state=4;
  977. }
  978.  else if ((((C)->_cc)==('\54'))||(((C)->_cc)==('\135'))) {
  979. {T84 *n=((T84*)new(84));
  980. rT84make(n,_name,_constraint);
  981. _fga=(T0 *)n;}
  982. _name=NULL;
  983. _constraint=NULL;
  984. /*IF*/if (!(_list)) {
  985. _list=ma(86,0,1,_fga);
  986. }
  987. else {
  988. rT86add_last((T86*)_list,_fga);
  989. }
  990. /*FI*/_fga=NULL;
  991. /*IF*/if (rT51skip1(C,'\54')) {
  992. _state=1;
  993. }
  994. else {
  995. C->_ok=rT51skip1(C,'\135');
  996. _state=5;
  997. }
  998. /*FI*/}
  999. else {
  1000. _state=6;
  1001. }
  1002. /*FI*/goto l143;
  1003.  l149: ;
  1004. if (3 == iv1) goto l150;
  1005. goto l151;
  1006.  l150: ;
  1007. /*IF*/if ((((C)->_cc)==('\54'))||(((C)->_cc)==('\135'))) {
  1008. {T84 *n=((T84*)new(84));
  1009. rT84make(n,_name,_constraint);
  1010. _fga=(T0 *)n;}
  1011. _name=NULL;
  1012. _constraint=NULL;
  1013. /*IF*/if (!(_list)) {
  1014. _list=ma(86,0,1,_fga);
  1015. }
  1016. else {
  1017. rT86add_last((T86*)_list,_fga);
  1018. }
  1019. /*FI*/_fga=NULL;
  1020. /*IF*/if (rT51skip1(C,'\54')) {
  1021. _state=1;
  1022. }
  1023. else {
  1024. C->_ok=rT51skip1(C,'\135');
  1025. _state=5;
  1026. }
  1027. /*FI*/}
  1028. else {
  1029. _state=6;
  1030. }
  1031. /*FI*/goto l143;
  1032.  l151: ;
  1033. /*IF*/if (rT51a_class_type(C)) {
  1034. _constraint=(C)->_last_class_type;
  1035. _state=3;
  1036. }
  1037. else {
  1038. rT51fcp(C,(T0 *)ms219);
  1039. _state=6;
  1040. }
  1041. /*FI*/ l143: ;
  1042. }
  1043. }
  1044. /*IF*/if ((_state)==(6)) {
  1045. }
  1046.  else if ((((int)_sp))&&(!(_list))) {
  1047. rT51warning(_sp,(T0 *)ms220);
  1048. }
  1049.  else if (((int)_sp)) {
  1050. {T85 *n=((T85*)new(85));
  1051. rT85make(n,_sp,_list);
  1052. C->_formal_generic_list=(T0 *)n;}
  1053. /*(IRF3*/(((T50*)(C)->_last_base_class)->_formal_generic_list)=((C)->_formal_generic_list);
  1054. /*)*/}
  1055. /*FI*/}
  1056. void rT51fatal_error(/*C*/T0* a1){
  1057. rT45fatal_error((T45*)oRBC27eh,a1);
  1058. }
  1059. void rT51a_function_call(T51 *C){
  1060. T0 * _e_current=NULL;
  1061. T0 * _fn=NULL;
  1062. _fn=rT69to_feature_name((T69*)rT51tmp_name());
  1063. {T89 *n=((T89*)new(89));
  1064. rT89make(n,XrT67start_position(_fn),0);
  1065. _e_current=(T0 *)n;}
  1066. rT51a_r10(C,0,_e_current,_fn,rT51a_actuals(C));
  1067. }
  1068. int rT51a_keyword(T51 *C,T0* a1){
  1069. int R=0;
  1070. int _i=0;
  1071. C->_start_line=(C)->_line;
  1072. C->_start_column=(C)->_column;
  1073. while (!(((_i)==(((T7*)a1)->_count))||(!(rT3same_as((C)->_cc,rT7item((T7*)a1,(_i)+(1))))))) {
  1074. _i=(_i)+(1);
  1075. rT51next_char(C);
  1076. }
  1077. /*IF*/if ((_i)==(((T7*)a1)->_count)) {
  1078. {int iv1=(C)->_cc;
  1079. if ((9 <= iv1) && (iv1<= 10)) goto l153;
  1080. if (32 == iv1) goto l153;
  1081. if (45 == iv1) goto l153;
  1082. goto l154;
  1083.  l153: ;
  1084. R=1;
  1085. rT51skip_comments(C);
  1086. goto l152;
  1087.  l154: ;
  1088. if ((48 <= iv1) && (iv1<= 57)) goto l155;
  1089. if ((65 <= iv1) && (iv1<= 90)) goto l155;
  1090. if (95 == iv1) goto l155;
  1091. if ((97 <= iv1) && (iv1<= 122)) goto l155;
  1092. goto l156;
  1093.  l155: ;
  1094. while (!((_i)==(0))) {
  1095. rT51prev_char(C);
  1096. _i=(_i)-(1);
  1097. }
  1098. goto l152;
  1099.  l156: ;
  1100. R=1;
  1101.  l152: ;
  1102. }
  1103. }
  1104. else {
  1105. while (!((_i)==(0))) {
  1106. rT51prev_char(C);
  1107. _i=(_i)-(1);
  1108. }
  1109. }
  1110. /*FI*/return R;
  1111. }
  1112. int rT51a_loop(T51 *C){
  1113. int R=0;
  1114. T0* _al=NULL;
  1115. T0 * _hc=NULL;
  1116. T0 * _lb=NULL;
  1117. T0 * _ue=NULL;
  1118. T0 * _vc=NULL;
  1119. T0 * _ic=NULL;
  1120. T0 * _i=NULL;
  1121. T0 * _e_loop=NULL;
  1122. T0 * _sp2=NULL;
  1123. T0 * _sp=NULL;
  1124. /*IF*/if (rT51a_keyword(C,(T0 *)ms372)) {
  1125. R=1;
  1126. {T46 *n=((T46*)new(46));
  1127. rT46make(n,(C)->_start_line,(C)->_start_column);
  1128. _sp=(T0 *)n;}
  1129. _i=rT51a_compound1(C,(T0 *)ms373);
  1130. /*IF*/if (rT51a_keyword(C,(T0 *)ms374)) {
  1131. {T46 *n=((T46*)new(46));
  1132. rT46make(n,(C)->_start_line,(C)->_start_column);
  1133. _sp2=(T0 *)n;}
  1134. _hc=rT51get_comments(C);
  1135. _al=rT51a_assertion(C);
  1136. /*IF*/if ((((int)_hc))||(((int)_al))) {
  1137. {T236 *n=((T236*)new(236));
  1138. rT236make(n,_sp2,_hc,_al);
  1139. _ic=(T0 *)n;}
  1140. }
  1141. /*FI*/}
  1142. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms375)) {
  1143. /*IF*/if ((rT51a_tag_mark(C))&&(rT51a_expression(C))) {
  1144. {T238 *n=((T238*)new(238));
  1145. rT238make(n,(C)->_last_tag_mark,(C)->_last_expression,rT51get_comments(C));
  1146. _vc=(T0 *)n;}}
  1147.  else if (rT51a_expression(C)) {
  1148. {T239 *n=((T239*)new(239));
  1149. rT239make(n,(C)->_last_expression,rT51get_comments(C));
  1150. _vc=(T0 *)n;}}
  1151. else {
  1152. rT51wcp(C,(T0 *)ms376);
  1153. }
  1154. /*FI*/}
  1155. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms377)) {
  1156. /*IF*/if (rT51a_expression(C)) {
  1157. _ue=XrT68add_comment((C)->_last_expression,rT51get_comments(C));
  1158. }
  1159. else {
  1160. rT51fcp(C,(T0 *)ms378);
  1161. _ue=(C)->_last_expression;
  1162. }
  1163. /*FI*/}
  1164. else {
  1165. rT51fcp(C,(T0 *)ms379);
  1166. _ue=(C)->_last_expression;
  1167. }
  1168. /*FI*//*IF*/if (((C)->_cc)==('\73')) {
  1169. rT51wcp(C,(T0 *)ms238);
  1170. C->_ok=rT51skip1(C,'\73');
  1171. }
  1172. /*FI*//*IF*/if (!(rT51a_keyword(C,(T0 *)ms380))) {
  1173. rT51wcp(C,(T0 *)ms381);
  1174. }
  1175. /*FI*/_lb=rT51a_compound2(C,(T0 *)ms382,(T0 *)ms121);
  1176. {T235 *n=((T235*)new(235));
  1177. rT235make(n,_sp,_i,_ic,_vc,_ue,_lb);
  1178. _e_loop=(T0 *)n;}
  1179. C->_last_instruction=_e_loop;
  1180. }
  1181. /*FI*/return R;
  1182. }
  1183. int rT51a_inspect(T51 *C){
  1184. int R=0;
  1185. T0 * _ec=NULL;
  1186. T0 * _i=NULL;
  1187. T0 * _spec=NULL;
  1188. T0 * _sp=NULL;
  1189. /*IF*/if (rT51a_keyword(C,(T0 *)ms363)) {
  1190. R=1;
  1191. {T46 *n=((T46*)new(46));
  1192. rT46make(n,(C)->_start_line,(C)->_start_column);
  1193. _sp=(T0 *)n;}
  1194. /*IF*/if (rT51a_expression(C)) {
  1195. C->_last_expression=XrT68add_comment((C)->_last_expression,rT51get_comments(C));
  1196. }
  1197. else {
  1198. rT51fcp(C,(T0 *)ms364);
  1199. }
  1200. /*FI*/{T225 *n=((T225*)new(225));
  1201. rT225make(n,_sp,(C)->_last_expression);
  1202. _i=(T0 *)n;}
  1203. while (!(!(rT51a_when_part(C,_i)))) {
  1204. }
  1205. /*IF*/if (rT51a_keyword(C,(T0 *)ms107)) {
  1206. {T46 *n=((T46*)new(46));
  1207. rT46make(n,(C)->_start_line,(C)->_start_column);
  1208. _spec=(T0 *)n;}
  1209. _ec=rT51a_compound2(C,(T0 *)ms370,(T0 *)ms121);
  1210. rT225set_else_compound((T225*)_i,_spec,_ec);
  1211. }
  1212.  else if (!(rT51a_keyword(C,(T0 *)ms121))) {
  1213. rT51wcp(C,(T0 *)ms371);
  1214. }
  1215. /*FI*/C->_last_instruction=_i;
  1216. }
  1217. /*FI*/return R;
  1218. }
  1219. int rT51a_instruction(T51 *C){
  1220. int R=0;
  1221. R=(((((((rT51a_check(C))||(rT51a_debug(C)))||(rT51a_conditional(C)))||(rT51a_retry(C)))||(rT51a_inspect(C)))||(rT51a_loop(C)))||(rT51a_creation(C)))||(rT51a_assignment_or_call(C));
  1222. return R;
  1223. }
  1224. int rT51a_result(T51 *C){
  1225. int R=0;
  1226. /*IF*/if (rT7same_as((T7*)(T0 *)ms293,((T69*)rT51tmp_name())->_to_string)) {
  1227. /*IF*/if (!((C)->_function_type)) {
  1228. rT51error(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms294);
  1229. }
  1230. /*FI*/C->_last_expression=rT69to_e_result((T69*)rT51tmp_name());
  1231. R=1;
  1232. }
  1233. /*FI*/return R;
  1234. }
  1235. void rT51a_new_export_list(T51 *C){
  1236. int _state=0;
  1237. T0 * _new_export_item=NULL;
  1238. T0* _items=NULL;
  1239. T0 * _clients=NULL;
  1240. T0 * _sp=NULL;
  1241. T0 * _export_list=NULL;
  1242. /*IF*/if (rT51a_keyword(C,(T0 *)ms233)) {
  1243. {T46 *n=((T46*)new(46));
  1244. rT46make(n,(C)->_start_line,(C)->_start_column);
  1245. _sp=(T0 *)n;}
  1246. while (!((_state)>(3))) {
  1247. {int iv1=_state;
  1248. if (0 == iv1) goto l158;
  1249. goto l159;
  1250.  l158: ;
  1251. /*IF*/if (((C)->_cc)==('\173')) {
  1252. _clients=rT51a_clients(C);
  1253. _state=1;
  1254. }
  1255.  else if (((C)->_cc)==('\73')) {
  1256. rT51wcp(C,(T0 *)ms238);
  1257. C->_ok=rT51skip1(C,'\73');
  1258. }
  1259. else {
  1260. /*IF*/if (((int)_items)) {
  1261. {T122 *n=((T122*)new(122));
  1262. rT122make(n,_sp,_items);
  1263. _export_list=(T0 *)n;}
  1264. /*(IRF3*/(((T118*)(C)->_last_parent)->_export_list)=(_export_list);
  1265. /*)*/}
  1266. /*FI*/_state=4;
  1267. }
  1268. /*FI*/goto l157;
  1269.  l159: ;
  1270. if (1 == iv1) goto l160;
  1271. goto l161;
  1272.  l160: ;
  1273. /*IF*/if (rT51a_keyword(C,(T0 *)ms239)) {
  1274. {T124 *n=((T124*)new(124));
  1275. rT124make_all(n,_clients);
  1276. _new_export_item=(T0 *)n;}
  1277. /*IF*/if (!(_items)) {
  1278. _items=ma(127,0,1,_new_export_item);
  1279. }
  1280. else {
  1281. rT127add_last((T127*)_items,_new_export_item);
  1282. }
  1283. /*FI*/_state=2;
  1284. }
  1285. else {
  1286. /*IF*/if (rT51a_feature_list(C)) {
  1287. {T124 *n=((T124*)new(124));
  1288. rT124make(n,_clients,(C)->_last_feature_list);
  1289. _new_export_item=(T0 *)n;}
  1290. /*IF*/if (!(_items)) {
  1291. _items=ma(127,0,1,_new_export_item);
  1292. }
  1293. else {
  1294. rT127add_last((T127*)_items,_new_export_item);
  1295. }
  1296. /*FI*/_state=2;
  1297. }
  1298. else {
  1299. _state=3;
  1300. }
  1301. /*FI*/}
  1302. /*FI*/goto l157;
  1303.  l161: ;
  1304. if (2 == iv1) goto l162;
  1305. goto l163;
  1306.  l162: ;
  1307. /*IF*/if (rT51skip1(C,'\73')) {
  1308. _state=0;
  1309. }
  1310.  else if (((C)->_cc)==('\173')) {
  1311. rT51wcp(C,(T0 *)ms242);
  1312. _state=0;
  1313. }
  1314. else {
  1315. /*IF*/if (((int)_items)) {
  1316. {T122 *n=((T122*)new(122));
  1317. rT122make(n,_sp,_items);
  1318. _export_list=(T0 *)n;}
  1319. /*(IRF3*/(((T118*)(C)->_last_parent)->_export_list)=(_export_list);
  1320. /*)*/}
  1321. /*FI*/_state=4;
  1322. }
  1323. /*FI*/goto l157;
  1324.  l163: ;
  1325. rT51fcp(C,(T0 *)ms236);
  1326. _state=4;
  1327.  l157: ;
  1328. }
  1329. }
  1330. }
  1331. /*FI*/}
  1332. int rT51a_current(T51 *C){
  1333. int R=0;
  1334. /*IF*/if (rT7same_as((T7*)(T0 *)ms205,((T69*)rT51tmp_name())->_to_string)) {
  1335. C->_last_expression=rT69to_e_current((T69*)rT51tmp_name());
  1336. R=1;
  1337. }
  1338. /*FI*/return R;
  1339. }
  1340. int rT51a_retry(T51 *C){
  1341. int R=0;
  1342. /*IF*/if (rT51a_keyword(C,(T0 *)ms361)) {
  1343. /*IF*/if (!((C)->_in_rescue)) {
  1344. rT51error(rT51pos((C)->_start_line,(C)->_start_column),(T0 *)ms362);
  1345. }
  1346. /*FI*/{T224 *n=((T224*)new(224));
  1347. /*(IRF3*/((n)->_start_position)=(rT51pos((C)->_start_line,(C)->_start_column));
  1348. /*)*/C->_last_instruction=(T0 *)n;}R=1;
  1349. }
  1350. /*FI*/return R;
  1351. }
  1352. int rT51a_integer_constant(T51 *C){
  1353. int R=0;
  1354. /*IF*/if (rT51skip1(C,'\53')) {
  1355. /*IF*/if (!(rT51a_integer(C))) {
  1356. rT51fcp(C,(T0 *)ms175);
  1357. }
  1358. else {
  1359. R=1;
  1360. }
  1361. /*FI*/}
  1362.  else if (rT51skip1(C,'\55')) {
  1363. /*IF*/if (!(rT51a_integer(C))) {
  1364. rT51fcp(C,(T0 *)ms175);
  1365. }
  1366. else {
  1367. C->_last_integer_constant=rT80_px45((T80*)(C)->_last_integer_constant);
  1368. R=1;
  1369. }
  1370. /*FI*/}
  1371. else {
  1372. R=rT51a_integer(C);
  1373. }
  1374. /*FI*/return R;
  1375. }
  1376. int rT51a_integer(T51 *C){
  1377. int R=0;
  1378. int _value=0;
  1379. int _state=0;
  1380. /*IF*/if (rT3is_digit((C)->_cc)) {
  1381. R=1;
  1382. C->_start_line=(C)->_line;
  1383. C->_start_column=(C)->_column;
  1384. _value=rT3value((C)->_cc);
  1385. while (!((_state)>(3))) {
  1386. rT51next_char(C);
  1387. {int iv1=_state;
  1388. if (0 == iv1) goto l165;
  1389. goto l166;
  1390.  l165: ;
  1391. {int iv2=(C)->_cc;
  1392. if ((48 <= iv2) && (iv2<= 57)) goto l168;
  1393. goto l169;
  1394.  l168: ;
  1395. _value=((_value)*(10))+(rT3value((C)->_cc));
  1396. goto l167;
  1397.  l169: ;
  1398. if (95 == iv2) goto l170;
  1399. goto l171;
  1400.  l170: ;
  1401. _state=1;
  1402. goto l167;
  1403.  l171: ;
  1404. _state=4;
  1405.  l167: ;
  1406. }
  1407. goto l164;
  1408.  l166: ;
  1409. if (1 == iv1) goto l172;
  1410. goto l173;
  1411.  l172: ;
  1412. {int iv2=(C)->_cc;
  1413. if ((48 <= iv2) && (iv2<= 57)) goto l175;
  1414. goto l176;
  1415.  l175: ;
  1416. _value=((_value)*(10))+(rT3value((C)->_cc));
  1417. _state=2;
  1418. goto l174;
  1419.  l176: ;
  1420. rT51fcp(C,(T0 *)ms171);
  1421.  l174: ;
  1422. }
  1423. goto l164;
  1424.  l173: ;
  1425. if (2 == iv1) goto l177;
  1426. goto l178;
  1427.  l177: ;
  1428. {int iv2=(C)->_cc;
  1429. if ((48 <= iv2) && (iv2<= 57)) goto l180;
  1430. goto l181;
  1431.  l180: ;
  1432. _value=((_value)*(10))+(rT3value((C)->_cc));
  1433. _state=3;
  1434. goto l179;
  1435.  l181: ;
  1436. rT51fcp(C,(T0 *)ms171);
  1437.  l179: ;
  1438. }
  1439. goto l164;
  1440.  l178: ;
  1441. {int iv2=(C)->_cc;
  1442. if ((48 <= iv2) && (iv2<= 57)) goto l183;
  1443. goto l184;
  1444.  l183: ;
  1445. _value=((_value)*(10))+(rT3value((C)->_cc));
  1446. _state=0;
  1447. goto l182;
  1448.  l184: ;
  1449. rT51fcp(C,(T0 *)ms171);
  1450.  l182: ;
  1451. }
  1452.  l164: ;
  1453. }
  1454. rT51skip_comments(C);
  1455. {T80 *n=((T80*)new(80));
  1456. rT80make(n,_value,rT51pos((C)->_start_line,(C)->_start_column));
  1457. C->_last_integer_constant=(T0 *)n;}
  1458. }
  1459. }
  1460. /*FI*/return R;
  1461. }
  1462. void rT51err_exp(/*C*/T0 * a1,T0* a2){
  1463. T0* _msg=NULL;
  1464. {T7 *n=((T7*)new(7));
  1465. rT7make(n,0);
  1466. _msg=(T0 *)n;}
  1467. rT7append((T7*)_msg,(T0 *)ms283);
  1468. rT7append((T7*)_msg,a2);
  1469. rT7append((T7*)_msg,(T0 *)ms284);
  1470. /*UT*/(T45*)oRBC27eh;
  1471. rT45add_position(a1);
  1472. rT51fatal_error(_msg);
  1473. }
  1474. int rT51a_expression(T51 *C){
  1475. int R=0;
  1476. T0* _list=NULL;
  1477. T0 * _sp=NULL;
  1478. /*IF*/if (rT51skip2(C,'\74','\74')) {
  1479. R=1;
  1480. {T46 *n=((T46*)new(46));
  1481. rT46make(n,(C)->_start_line,(C)->_start_column);
  1482. _sp=(T0 *)n;}
  1483. while (!(!(rT51a_expression(C)))) {
  1484. /*IF*/if (!(_list)) {
  1485. _list=ma(81,0,1,(C)->_last_expression);
  1486. }
  1487. else {
  1488. XrT81add_last(_list,(C)->_last_expression);
  1489. }
  1490. /*FI*/C->_ok=rT51skip1(C,'\54');
  1491. }
  1492. /*IF*/if (!(rT51skip2(C,'\76','\76'))) {
  1493. rT51fcp(C,(T0 *)ms282);
  1494. }
  1495. /*FI*/{T160 *n=((T160*)new(160));
  1496. rT160make(n,_sp,_list);
  1497. C->_last_expression=(T0 *)n;}}
  1498. else {
  1499. R=rT51a_e0(C);
  1500. }
  1501. /*FI*/return R;
  1502. }
  1503. int rT51a_void(T51 *C){
  1504. int R=0;
  1505. /*IF*/if (rT7same_as((T7*)(T0 *)ms295,((T69*)rT51tmp_name())->_to_string)) {
  1506. C->_last_expression=rT69to_e_void((T69*)rT51tmp_name());
  1507. R=1;
  1508. }
  1509. /*FI*/return R;
  1510. }
  1511. void rT51a_procedure_call(T51 *C){
  1512. T0 * _e_current=NULL;
  1513. T0 * _fn=NULL;
  1514. _fn=rT69to_feature_name((T69*)rT51tmp_name());
  1515. {T89 *n=((T89*)new(89));
  1516. rT89make(n,XrT67start_position(_fn),0);
  1517. _e_current=(T0 *)n;}
  1518. rT51a_r10(C,1,_e_current,_fn,rT51a_actuals(C));
  1519. }
  1520. T0* rT51a_external_name(T51 *C){
  1521. T0* R=NULL;
  1522. /*IF*/if (rT51a_keyword(C,(T0 *)ms341)) {
  1523. /*IF*/if (!(rT51a_manifest_string(C))) {
  1524. rT51fcp(C,(T0 *)ms342);
  1525. }
  1526. else {
  1527. R=((T76*)(C)->_last_manifest_string)->_to_string;
  1528. }
  1529. /*FI*/}
  1530. /*FI*/return R;
  1531. }
  1532. T0 * rT51a_external(T51 *C){
  1533. T0 * R=NULL;
  1534. T0 * _external_lgg=NULL;
  1535. /*IF*/if (!(rT51a_manifest_string(C))) {
  1536. rT51fcp(C,(T0 *)ms335);
  1537. _external_lgg=((T0 *)((T207*)new(207)));
  1538. }
  1539.  else if (rT7is_equal(ms336,((T76*)(C)->_last_manifest_string)->_to_string)) {
  1540. _external_lgg=((T0 *)((T207*)new(207)));
  1541. }
  1542.  else if (rT7is_equal(ms337,((T76*)(C)->_last_manifest_string)->_to_string)) {
  1543. _external_lgg=((T0 *)((T208*)new(208)));
  1544. }
  1545.  else if (rT7is_equal(ms338,((T76*)(C)->_last_manifest_string)->_to_string)) {
  1546. _external_lgg=((T0 *)((T209*)new(209)));
  1547. }
  1548. else {
  1549. /*UT*/(T45*)oRBC27eh;
  1550. rT45append((T0 *)ms339);
  1551. /*UT*/(T45*)oRBC27eh;
  1552. rT45append(((T76*)(C)->_last_manifest_string)->_to_string);
  1553. rT51fcp(C,(T0 *)ms340);
  1554. _external_lgg=((T0 *)((T207*)new(207)));
  1555. }
  1556. /*FI*/R=rT136to_external_routine((T136*)oRBC51tmp_feature,_external_lgg,rT51a_external_name(C));
  1557. return R;
  1558. }
  1559. T0* rT51clone(T51 *C,T0* a1){
  1560. T0* R=NULL;
  1561. /*IF*/if (((int)a1)) {
  1562. R=(T0 *)new(a1->id);
  1563. AF_1
  1564. XrT28copy(R,a1);
  1565. AF_0
  1566. }
  1567. /*FI*/return R;
  1568. }
  1569. T0*oRBC51forbidden_class;
  1570. void rT51a_r10(T51 *C,int a1,T0 * a2,T0 * a3,T0 * a4){
  1571. /*IF*/if (rT51skip1unless2(C,'\56','\56')) {
  1572. rT51a_after_a_dot(C,a1,rT51to_call(a2,a3,a4));
  1573. }
  1574. else {
  1575. /*IF*/if (a1) {
  1576. C->_last_instruction=rT51to_proc_call(C,a2,a3,a4);
  1577. C->_last_expression=NULL;
  1578. }
  1579. else {
  1580. C->_last_expression=rT51to_call(a2,a3,a4);
  1581. C->_last_instruction=NULL;
  1582. }
  1583. /*FI*/}
  1584. /*FI*/}
  1585. T0 * rT51analyse_class(T51 *C,T0* a1){
  1586. T0 * R=NULL;
  1587. int _old_nbw=0;
  1588. int _old_nbe=0;
  1589. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)>(0)) {
  1590. /*UT*/(T45*)oRBC27eh;
  1591. rT45append((T0 *)ms76);
  1592. rT45print_as_fatal_error((T45*)oRBC27eh);
  1593. }
  1594. /*FI*//*IF*/if (/*(IRF4*/(!(/*(IRF4*/(!(/*(IRF4*/((T51*)oRBC27eiffel_parser)->_is_running/*)*/))&&(((T52*)oRBC27small_eiffel)->_is_doing_eval_flag)/*)*/))&&(((T52*)oRBC27small_eiffel)->_is_compiling_flag)/*)*/) {
  1595. rT38put_integer((T38*)oRBC1std_output,(/*(IRF4*/(/*UT*/(T52*)oRBC27small_eiffel,
  1596. ((T54*)oRBC52base_class_dictionary)->_count/*)*/))+(1));
  1597. rT38put_character((T38*)oRBC1std_output,'\11');
  1598. rT38put_string((T38*)oRBC1std_output,a1);
  1599. rT38put_character((T38*)oRBC1std_output,'\12');
  1600. }
  1601. /*FI*/_old_nbe=/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/;
  1602. _old_nbw=/*(IRF4*/((T45*)oRBC27eh)->_nb_warnings/*)*/;
  1603. C->_is_running=1;
  1604. C->_function_type=NULL;
  1605. C->_in_ensure=0;
  1606. C->_last_comments=NULL;
  1607. rT60read((T60*)oRBC51text,a1);
  1608. C->_line=1;
  1609. C->_column=1;
  1610. C->_current_line=(/*UT*/(T60*)oRBC51text,
  1611. rT60item((C)->_line));
  1612. /*IF*/if ((((T7*)(C)->_current_line)->_count)==(0)) {
  1613. C->_cc='\12';
  1614. }
  1615. else {
  1616. C->_cc=rT7first((T7*)(C)->_current_line);
  1617. }
  1618. /*FI*/{T50 *n=((T50*)new(50));
  1619. rT50make(n,a1);
  1620. C->_last_base_class=(T0 *)n;}
  1621. rT51skip_comments(C);
  1622. rT51a_class_declaration(C);
  1623. C->_is_running=0;
  1624. R=(C)->_last_base_class;
  1625. /*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_old_nbe))>(0)) {
  1626. rT33put_string((T33*)oRBC1std_error,(T0 *)ms411);
  1627. rT33put_integer((T33*)oRBC1std_error,/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/);
  1628. rT33put_string((T33*)oRBC1std_error,(T0 *)ms412);
  1629. rT33put_string((T33*)oRBC1std_error,(T0 *)ms413);
  1630. rT33put_string((T33*)oRBC1std_error,a1);
  1631. rT33put_string((T33*)oRBC1std_error,(T0 *)ms414);
  1632. R=NULL;
  1633. }
  1634.  else if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_warnings/*)*/)-(_old_nbw))>(0)) {
  1635. rT33put_string((T33*)oRBC1std_error,(T0 *)ms415);
  1636. rT33put_integer((T33*)oRBC1std_error,/*(IRF4*/((T45*)oRBC27eh)->_nb_warnings/*)*/);
  1637. rT33put_string((T33*)oRBC1std_error,(T0 *)ms416);
  1638. }
  1639. /*FI*//*IF*/if (((int)R)) {
  1640. rT52add_class((T52*)oRBC27small_eiffel,R);
  1641. rT50get_started((T50*)R);
  1642. }
  1643. /*FI*/return R;
  1644. }
  1645. T0 * rT51a_routine_body(T51 *C){
  1646. T0 * R=NULL;
  1647. /*IF*/if (rT51a_keyword(C,(T0 *)ms333)) {
  1648. rT50set_is_deferred((T50*)(C)->_last_base_class);
  1649. R=rT136to_deferred_routine((T136*)oRBC51tmp_feature);
  1650. }
  1651.  else if (rT51a_keyword(C,(T0 *)ms334)) {
  1652. R=rT51a_external(C);
  1653. }
  1654.  else if (rT51a_keyword(C,(T0 *)ms343)) {
  1655. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_routine_body)=(rT51a_compound1(C,(T0 *)ms396));
  1656. /*)*/R=rT136to_procedure_or_function((T136*)oRBC51tmp_feature);
  1657. }
  1658.  else if (rT51a_keyword(C,(T0 *)ms397)) {
  1659. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_routine_body)=(rT51a_compound1(C,(T0 *)ms398));
  1660. /*)*/R=rT136to_once_routine((T136*)oRBC51tmp_feature);
  1661. }
  1662. else {
  1663. rT51fcp(C,(T0 *)ms399);
  1664. }
  1665. /*FI*/return R;
  1666. }
  1667. T0 * rT51a_routine(T51 *C){
  1668. T0 * R=NULL;
  1669. T0 * _ea=NULL;
  1670. T0* _al=NULL;
  1671. T0 * _hc=NULL;
  1672. T0 * _sp=NULL;
  1673. /*IF*/if (rT51a_keyword(C,(T0 *)ms279)) {
  1674. /*IF*/if (rT51a_manifest_string(C)) {
  1675. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_obsolete_mark)=((C)->_last_manifest_string);
  1676. /*)*/}
  1677. else {
  1678. rT51fcp(C,(T0 *)ms280);
  1679. }
  1680. /*FI*/}
  1681. /*FI*//*(IRF3*/(((T136*)oRBC51tmp_feature)->_header_comment)=(rT51get_comments(C));
  1682. /*)*//*IF*/if (rT51a_keyword(C,(T0 *)ms281)) {
  1683. {T46 *n=((T46*)new(46));
  1684. rT46make(n,(C)->_start_line,(C)->_start_column);
  1685. _sp=(T0 *)n;}
  1686. /*IF*/if (rT51a_keyword(C,(T0 *)ms107)) {
  1687. _hc=rT51get_comments(C);
  1688. rT136set_require_else((T136*)oRBC51tmp_feature,_sp,_hc,rT51a_assertion(C));
  1689. }
  1690. else {
  1691. _hc=rT51get_comments(C);
  1692. rT136set_require((T136*)oRBC51tmp_feature,_sp,_hc,rT51a_assertion(C));
  1693. }
  1694. /*FI*/}
  1695. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms327)) {
  1696. rT51a_local_var_list(C,rT51pos((C)->_start_line,(C)->_start_column));
  1697. }
  1698. /*FI*/R=rT51a_routine_body(C);
  1699. /*IF*/if (rT51a_keyword(C,(T0 *)ms400)) {
  1700. {T46 *n=((T46*)new(46));
  1701. rT46make(n,(C)->_start_line,(C)->_start_column);
  1702. _sp=(T0 *)n;}
  1703. C->_in_ensure=1;
  1704. /*IF*/if (rT51a_keyword(C,(T0 *)ms104)) {
  1705. _hc=rT51get_comments(C);
  1706. _al=rT51a_assertion(C);
  1707. /*IF*/if ((((int)_hc))||(((int)_al))) {
  1708. {T157 *n=((T157*)new(157));
  1709. rT157make(n,_sp,_hc,_al);
  1710. _ea=(T0 *)n;}
  1711. /*(IRF3*/(((T157*)_ea)->_is_ensure_then)=(1);
  1712. /*)*/}
  1713. /*FI*/XrT156set_ensure_assertion(R,_ea);
  1714. }
  1715. else {
  1716. _hc=rT51get_comments(C);
  1717. _al=rT51a_assertion(C);
  1718. /*IF*/if ((((int)_hc))||(((int)_al))) {
  1719. {T157 *n=((T157*)new(157));
  1720. rT157make(n,_sp,_hc,_al);
  1721. _ea=(T0 *)n;}
  1722. }
  1723. /*FI*/XrT156set_ensure_assertion(R,_ea);
  1724. }
  1725. /*FI*/C->_in_ensure=0;
  1726. }
  1727. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms401)) {
  1728. C->_in_rescue=1;
  1729. XrT156set_rescue_compound(R,rT51a_compound2(C,(T0 *)ms403,(T0 *)ms121));
  1730. C->_in_rescue=0;
  1731. }
  1732. else {
  1733. /*IF*/if (!(rT51a_keyword(C,(T0 *)ms121))) {
  1734. rT51wcp(C,(T0 *)ms404);
  1735. }
  1736. /*FI*/}
  1737. /*FI*/C->_local_vars=NULL;
  1738. return R;
  1739. }
  1740. T0*oRBC51tmp_feature;
  1741. void rT51skip_comments(T51 *C){
  1742. int _state=0;
  1743. T0 * _sp=NULL;
  1744. while (!((_state)==(2))) {
  1745. {int iv1=_state;
  1746. if (0 == iv1) goto l186;
  1747. goto l187;
  1748.  l186: ;
  1749. {int iv2=(C)->_cc;
  1750. if ((9 <= iv2) && (iv2<= 10)) goto l189;
  1751. if (32 == iv2) goto l189;
  1752. goto l190;
  1753.  l189: ;
  1754. rT51next_char(C);
  1755. goto l188;
  1756.  l190: ;
  1757. if (45 == iv2) goto l191;
  1758. goto l192;
  1759.  l191: ;
  1760. rT51next_char(C);
  1761. _state=1;
  1762. goto l188;
  1763.  l192: ;
  1764. _state=2;
  1765.  l188: ;
  1766. }
  1767. goto l185;
  1768.  l187: ;
  1769. if (1 == iv1) goto l193;
  1770. goto l194;
  1771.  l193: ;
  1772. {int iv2=(C)->_cc;
  1773. if (45 == iv2) goto l196;
  1774. goto l197;
  1775.  l196: ;
  1776. /*IF*/if (!((C)->_last_comments)) {
  1777. {T46 *n=((T46*)new(46));
  1778. rT46make(n,(C)->_line,((C)->_column)-(1));
  1779. _sp=(T0 *)n;}
  1780. }
  1781. /*FI*/rT51next_char(C);
  1782. /*(IRF3*/(((T7*)oRBC51lcs)->_count)=(0);
  1783. /*)*/while (!(((C)->_cc)==('\12'))) {
  1784. rT7extend((T7*)oRBC51lcs,(C)->_cc);
  1785. rT51next_char(C);
  1786. }
  1787. /*IF*/if (!((C)->_last_comments)) {
  1788. {T59 *n=((T59*)new(59));
  1789. rT59make(n,_sp,ma(41,0,1,rT51clone(C,oRBC51lcs)));
  1790. C->_last_comments=(T0 *)n;}
  1791. }
  1792. else {
  1793. rT59add_last((T59*)(C)->_last_comments,rT51clone(C,oRBC51lcs));
  1794. }
  1795. /*FI*/_state=0;
  1796. goto l195;
  1797.  l197: ;
  1798. rT51prev_char(C);
  1799. _state=2;
  1800.  l195: ;
  1801. }
  1802. goto l185;
  1803.  l194: ;
  1804.  l185: ;
  1805. }
  1806. }
  1807. }
  1808. int rT51a_strip(T51 *C){
  1809. int R=0;
  1810. T0 * _sp=NULL;
  1811. /*IF*/if (rT51a_keyword(C,(T0 *)ms290)) {
  1812. {T46 *n=((T46*)new(46));
  1813. rT46make(n,(C)->_start_line,(C)->_start_column);
  1814. _sp=(T0 *)n;}
  1815. /*IF*/if (rT51skip1(C,'\50')) {
  1816. C->_ok=rT51a_feature_list(C);
  1817. {T169 *n=((T169*)new(169));
  1818. rT169make(n,_sp,(C)->_last_feature_list);
  1819. C->_last_expression=(T0 *)n;}/*IF*/if (!(rT51skip1(C,'\51'))) {
  1820. rT51fcp(C,(T0 *)ms291);
  1821. }
  1822. /*FI*/R=1;
  1823. }
  1824. else {
  1825. rT51fcp(C,(T0 *)ms292);
  1826. }
  1827. /*FI*/}
  1828. /*FI*/return R;
  1829. }
  1830. void rT51prev_char(T51 *C){
  1831. /*IF*/if (((C)->_column)>(1)) {
  1832. C->_column=((C)->_column)-(1);
  1833. C->_cc=rT7item((T7*)(C)->_current_line,(C)->_column);
  1834. }
  1835. else {
  1836. /*IF*/if (((C)->_line)>(1)) {
  1837. C->_line=((C)->_line)-(1);
  1838. C->_current_line=(/*UT*/(T60*)oRBC51text,
  1839. rT60item((C)->_line));
  1840. C->_column=(((T7*)(C)->_current_line)->_count)+(1);
  1841. C->_cc='\12';
  1842. }
  1843. else {
  1844. C->_column=0;
  1845. C->_cc='\0';
  1846. }
  1847. /*FI*/}
  1848. /*FI*/}
  1849. int rT51a_type(T51 *C){
  1850. int R=0;
  1851. T0 * _argument_name=NULL;
  1852. T0 * _sp=NULL;
  1853. R=1;
  1854. /*IF*/if (rT51a_keyword(C,(T0 *)ms204)) {
  1855. {T46 *n=((T46*)new(46));
  1856. rT46make(n,(C)->_start_line,(C)->_start_column);
  1857. _sp=(T0 *)n;}
  1858. /*IF*/if (rT51a_identifier(C)) {
  1859. /*IF*/if (rT51a_current(C)) {
  1860. {T90 *n=((T90*)new(90));
  1861. rT90make(n,_sp,(C)->_last_expression);
  1862. C->_last_type=(T0 *)n;}}
  1863.  else if (rT51a_argument(C)) {
  1864. _argument_name=(C)->_last_expression;
  1865. if ((int)_argument_name) switch (((T0 *)_argument_name)->id) {
  1866. case 88: 
  1867. break;
  1868. default:
  1869. _argument_name = NULL;
  1870. };{T98 *n=((T98*)new(98));
  1871. rT98make(n,_sp,_argument_name);
  1872. C->_last_type=(T0 *)n;}}
  1873. else {
  1874. {T99 *n=((T99*)new(99));
  1875. rT99make(n,_sp,rT69to_feature_name((T69*)rT51tmp_name()));
  1876. C->_last_type=(T0 *)n;}}
  1877. /*FI*/}
  1878. else {
  1879. rT51fcp(C,(T0 *)ms208);
  1880. }
  1881. /*FI*/}
  1882.  else if (rT51a_keyword(C,(T0 *)ms123)) {
  1883. {T46 *n=((T46*)new(46));
  1884. rT46make(n,(C)->_start_line,(C)->_start_column);
  1885. _sp=(T0 *)n;}
  1886. /*IF*/if (rT51a_class_type(C)) {
  1887. {T100 *n=((T100*)new(100));
  1888. rT100make(n,_sp,(C)->_last_class_type);
  1889. C->_last_type=(T0 *)n;}}
  1890. else {
  1891. rT51fcp(C,(T0 *)ms210);
  1892. }
  1893. /*FI*/}
  1894.  else if (rT51a_keyword(C,(T0 *)ms200)) {
  1895. {T46 *n=((T46*)new(46));
  1896. rT46make(n,(C)->_start_line,(C)->_start_column);
  1897. _sp=(T0 *)n;}
  1898. /*IF*/if (rT51a_integer(C)) {
  1899. {T101 *n=((T101*)new(101));
  1900. rT101make(n,_sp,(C)->_last_integer_constant);
  1901. C->_last_type=(T0 *)n;}}
  1902.  else if (rT51a_identifier(C)) {
  1903. {T103 *n=((T103*)new(103));
  1904. rT103make(n,_sp,rT69to_feature_name((T69*)rT51tmp_name()));
  1905. C->_last_type=(T0 *)n;}}
  1906. else {
  1907. rT51fcp(C,(T0 *)ms211);
  1908. }
  1909. /*FI*/}
  1910.  else if (rT51a_type_formal_generic(C)) {
  1911. C->_last_type=(C)->_last_type_formal_generic;
  1912. }
  1913.  else if (rT51a_class_type(C)) {
  1914. C->_last_type=(C)->_last_class_type;
  1915. }
  1916. else {
  1917. R=0;
  1918. }
  1919. /*FI*/return R;
  1920. }
  1921. int rT51a_type_formal_generic(T51 *C){
  1922. int R=0;
  1923. int _rank=0;
  1924. T0 * _cn=NULL;
  1925. T0 * _fga=NULL;
  1926. /*IF*/if (((int)(C)->_formal_generic_list)) {
  1927. _rank=1;
  1928. while (!((R)||((_rank)>(rT85count((T85*)(C)->_formal_generic_list))))) {
  1929. _fga=rT85item((T85*)(C)->_formal_generic_list,_rank);
  1930. /*IF*/if (rT51a_keyword(C,((T48*)((T84*)_fga)->_name)->_to_string)) {
  1931. {T48 *n=((T48*)new(48));
  1932. rT48make(n,((T48*)((T84*)_fga)->_name)->_to_string,rT51pos((C)->_start_line,(C)->_start_column));
  1933. _cn=(T0 *)n;}
  1934. {T104 *n=((T104*)new(104));
  1935. rT104make(n,_cn,_rank);
  1936. C->_last_type_formal_generic=(T0 *)n;}
  1937. R=1;
  1938. }
  1939. /*FI*/_rank=(_rank)+(1);
  1940. }
  1941. }
  1942. /*FI*/return R;
  1943. }
  1944. void rT51next_char(T51 *C){
  1945. /*IF*/if (((C)->_column)<(((T7*)(C)->_current_line)->_count)) {
  1946. C->_column=((C)->_column)+(1);
  1947. C->_cc=rT7item((T7*)(C)->_current_line,(C)->_column);
  1948. }
  1949.  else if (((C)->_column)==(((T7*)(C)->_current_line)->_count)) {
  1950. C->_column=((C)->_column)+(1);
  1951. C->_cc='\12';
  1952. }
  1953.  else if (((C)->_line)==(((T60*)oRBC51text)->_count)) {
  1954. C->_cc='\1';
  1955. }
  1956. else {
  1957. C->_column=1;
  1958. C->_line=((C)->_line)+(1);
  1959. C->_current_line=(/*UT*/(T60*)oRBC51text,
  1960. rT60item((C)->_line));
  1961. /*IF*/if ((((T7*)(C)->_current_line)->_count)==(0)) {
  1962. C->_cc='\12';
  1963. }
  1964. else {
  1965. C->_cc=rT7first((T7*)(C)->_current_line);
  1966. }
  1967. /*FI*/}
  1968. /*FI*/}
  1969. int ofBC51tmp_name=0;
  1970. T0*oRBC51tmp_name;
  1971. T0 * rT51tmp_name(/*C*/void){
  1972. T0 * R=NULL;
  1973. if (ofBC51tmp_name==0){
  1974. ofBC51tmp_name=1;
  1975. {T69 *n=((T69*)new(69));
  1976. rT69make(n,0,0);
  1977. R=(T0 *)n;}
  1978. oRBC51tmp_name=R;}
  1979. return oRBC51tmp_name;}
  1980. int ofBC51tmp_operator=0;
  1981. T0*oRBC51tmp_operator;
  1982. T0 * rT51tmp_operator(/*C*/void){
  1983. T0 * R=NULL;
  1984. if (ofBC51tmp_operator==0){
  1985. ofBC51tmp_operator=1;
  1986. {T69 *n=((T69*)new(69));
  1987. rT69make(n,0,0);
  1988. R=(T0 *)n;}
  1989. oRBC51tmp_operator=R;}
  1990. return oRBC51tmp_operator;}
  1991. T0 * rT51current_position(T51 *C){
  1992. T0 * R=NULL;
  1993. {T46 *n=((T46*)new(46));
  1994. rT46make(n,(C)->_line,(C)->_column);
  1995. R=(T0 *)n;}
  1996. return R;
  1997. }
  1998. void rT51warning(/*C*/T0 * a1,T0* a2){
  1999. /*UT*/(T45*)oRBC27eh;
  2000. rT45add_position(a1);
  2001. rT45warning((T45*)oRBC27eh,a2);
  2002. }
  2003. T0 * rT51current_class_name(T51 *C){
  2004. T0 * R=NULL;
  2005. R=((T50*)(C)->_last_base_class)->_base_class_name;
  2006. return R;
  2007. }
  2008. T0 * rT51to_proc_call(T51 *C,T0 * a1,T0 * a2,T0 * a3){
  2009. T0 * R=NULL;
  2010. /*IF*/if (!(a2)) {
  2011. rT51fcp(C,(T0 *)ms300);
  2012. }
  2013.  else if (!(a3)) {
  2014. {T178 *n=((T178*)new(178));
  2015. rT178make(n,a1,a2);
  2016. R=(T0 *)n;}}
  2017.  else if ((rT170count((T170*)a3))==(1)) {
  2018. {T179 *n=((T179*)new(179));
  2019. rT179make(n,a1,a2,a3);
  2020. R=(T0 *)n;}}
  2021. else {
  2022. {T180 *n=((T180*)new(180));
  2023. rT180make(n,a1,a2,a3);
  2024. R=(T0 *)n;}}
  2025. /*FI*/return R;
  2026. }
  2027. void rT51error(/*C*/T0 * a1,T0* a2){
  2028. /*UT*/(T45*)oRBC27eh;
  2029. rT45add_position(a1);
  2030. rT45error((T45*)oRBC27eh,a2);
  2031. }
  2032. void rT51ecp(T51 *C,T0* a1){
  2033. rT51error(rT51current_position(C),a1);
  2034. }
  2035. void rT51fcp(T51 *C,T0* a1){
  2036. /*UT*/(T45*)oRBC27eh;
  2037. rT45add_position(rT51current_position(C));
  2038. rT51fatal_error(a1);
  2039. }
  2040. void rT51copy(T51 *C,T0 * a1){
  2041. /*IF*//*AF*//*AE*/
  2042. memcpy(C,a1,s[C->id]);
  2043. /*FI*/}
  2044. T0*oRBC51lcs;
  2045. T0*oRBC51text;
  2046. void rT51wcp(T51 *C,T0* a1){
  2047. rT51warning(rT51current_position(C),a1);
  2048. }
  2049. T0 * rT51pos(/*C*/int a1,int a2){
  2050. T0 * R=NULL;
  2051. {T46 *n=((T46*)new(46));
  2052. rT46make(n,a1,a2);
  2053. R=(T0 *)n;}
  2054. return R;
  2055. }
  2056. int rT51a_e0(T51 *C){
  2057. int R=0;
  2058. R=rT51a_e1(C);
  2059. rT51a_r1(C,(C)->_last_expression);
  2060. return R;
  2061. }
  2062. int rT51a_e1(T51 *C){
  2063. int R=0;
  2064. R=rT51a_e2(C);
  2065. rT51a_r2(C,(C)->_last_expression);
  2066. return R;
  2067. }
  2068. int rT51a_e2(T51 *C){
  2069. int R=0;
  2070. R=rT51a_e3(C);
  2071. rT51a_r3(C,(C)->_last_expression);
  2072. return R;
  2073. }
  2074. int rT51a_e3(T51 *C){
  2075. int R=0;
  2076. R=rT51a_e4(C);
  2077. rT51a_r4(C,(C)->_last_expression);
  2078. return R;
  2079. }
  2080. int rT51a_e4(T51 *C){
  2081. int R=0;
  2082. R=rT51a_e5(C);
  2083. rT51a_r5(C,(C)->_last_expression);
  2084. return R;
  2085. }
  2086. int rT51a_e5(T51 *C){
  2087. int R=0;
  2088. R=rT51a_e6(C);
  2089. rT51a_r6(C,(C)->_last_expression);
  2090. return R;
  2091. }
  2092. int rT51a_e6(T51 *C){
  2093. int R=0;
  2094. R=rT51a_e7(C);
  2095. rT51a_r7(C,(C)->_last_expression);
  2096. return R;
  2097. }
  2098. int rT51a_e7(T51 *C){
  2099. int R=0;
  2100. R=rT51a_e8(C);
  2101. rT51a_r8(C,(C)->_last_expression);
  2102. return R;
  2103. }
  2104. int rT51a_e8(T51 *C){
  2105. int R=0;
  2106. T0 * _sp=NULL;
  2107. T0 * _prefix_freeop=NULL;
  2108. T0 * _op=NULL;
  2109. T0 * _prefix_moins=NULL;
  2110. T0 * _prefix_plus=NULL;
  2111. T0 * _prefix_not=NULL;
  2112. /*IF*/if (rT51a_keyword(C,(T0 *)ms84)) {
  2113. {T46 *n=((T46*)new(46));
  2114. rT46make(n,(C)->_start_line,(C)->_start_column);
  2115. _sp=(T0 *)n;}
  2116. /*IF*/if (rT51a_e8(C)) {
  2117. {T161 *n=((T161*)new(161));
  2118. rT161make(n,_sp,(C)->_last_expression);
  2119. _prefix_not=(T0 *)n;}
  2120. C->_last_expression=_prefix_not;
  2121. R=1;
  2122. }
  2123. else {
  2124. rT51err_exp(_sp,(T0 *)ms84);
  2125. }
  2126. /*FI*/}
  2127.  else if (rT51skip1(C,'\53')) {
  2128. {T46 *n=((T46*)new(46));
  2129. rT46make(n,(C)->_start_line,(C)->_start_column);
  2130. _sp=(T0 *)n;}
  2131. /*IF*/if (rT51a_e8(C)) {
  2132. {T165 *n=((T165*)new(165));
  2133. rT165make(n,_sp,(C)->_last_expression);
  2134. _prefix_plus=(T0 *)n;}
  2135. C->_last_expression=_prefix_plus;
  2136. R=1;
  2137. }
  2138. else {
  2139. rT51err_exp(_sp,(T0 *)ms285);
  2140. }
  2141. /*FI*/}
  2142.  else if (rT51skip1(C,'\55')) {
  2143. {T46 *n=((T46*)new(46));
  2144. rT46make(n,(C)->_start_line,(C)->_start_column);
  2145. _sp=(T0 *)n;}
  2146. /*IF*/if (rT51a_e8(C)) {
  2147. {T166 *n=((T166*)new(166));
  2148. rT166make(n,_sp,(C)->_last_expression);
  2149. _prefix_moins=(T0 *)n;}
  2150. C->_last_expression=_prefix_moins;
  2151. R=1;
  2152. }
  2153. else {
  2154. rT51err_exp(_sp,(T0 *)ms286);
  2155. }
  2156. /*FI*/}
  2157.  else if (rT51a_free_operator(C)) {
  2158. _op=rT69to_prefix_name((T69*)rT51tmp_operator());
  2159. /*IF*/if (rT51a_e8(C)) {
  2160. {T167 *n=((T167*)new(167));
  2161. rT167make(n,(C)->_last_expression,_op);
  2162. _prefix_freeop=(T0 *)n;}
  2163. C->_last_expression=_prefix_freeop;
  2164. R=1;
  2165. }
  2166. else {
  2167. /*UT*/(T45*)oRBC27eh;
  2168. rT45append((T0 *)ms287);
  2169. rT51err_exp(((T66*)_op)->_start_position,((T66*)_op)->_to_string);
  2170. }
  2171. /*FI*/}
  2172. else {
  2173. R=rT51a_e9(C);
  2174. }
  2175. /*FI*/return R;
  2176. }
  2177. int rT51a_e9(T51 *C){
  2178. int R=0;
  2179. T0 * _e_old=NULL;
  2180. /*IF*/if (rT51a_keyword(C,(T0 *)ms288)) {
  2181. /*IF*/if (!((C)->_in_ensure)) {
  2182. rT51error(rT51pos((C)->_start_line,(C)->_start_column),(T0 *)ms289);
  2183. }
  2184. /*FI*//*IF*/if (rT51a_e10(C)) {
  2185. {T168 *n=((T168*)new(168));
  2186. /*(IRF3*/((n)->_expression)=((C)->_last_expression);
  2187. /*)*/_e_old=(T0 *)n;}
  2188. C->_last_expression=_e_old;
  2189. R=1;
  2190. }
  2191. else {
  2192. rT51fcp(C,(T0 *)ms304);
  2193. }
  2194. /*FI*/}
  2195. else {
  2196. R=rT51a_e10(C);
  2197. }
  2198. /*FI*/return R;
  2199. }
  2200. void rT51a_r1(T51 *C,T0 * a1){
  2201. T0 * _sp=NULL;
  2202. T0 * _infix_implies=NULL;
  2203. /*IF*/if (rT51a_keyword(C,(T0 *)ms102)) {
  2204. {T46 *n=((T46*)new(46));
  2205. rT46make(n,(C)->_start_line,(C)->_start_column);
  2206. _sp=(T0 *)n;}
  2207. /*IF*/if (rT51a_e1(C)) {
  2208. {T202 *n=((T202*)new(202));
  2209. rT202make(n,a1,_sp,(C)->_last_expression);
  2210. _infix_implies=(T0 *)n;}
  2211. rT51a_r1(C,_infix_implies);
  2212. }
  2213. else {
  2214. rT51error(_sp,(T0 *)ms326);
  2215. }
  2216. /*FI*/}
  2217. else {
  2218. C->_last_expression=a1;
  2219. }
  2220. /*FI*/}
  2221. void rT51a_r2(T51 *C,T0 * a1){
  2222. T0 * _sp=NULL;
  2223. T0 * _infix_xor=NULL;
  2224. T0 * _infix_or=NULL;
  2225. T0 * _infix_or_else=NULL;
  2226. /*IF*/if (rT51a_keyword(C,(T0 *)ms106)) {
  2227. {T46 *n=((T46*)new(46));
  2228. rT46make(n,(C)->_start_line,(C)->_start_column);
  2229. _sp=(T0 *)n;}
  2230. /*IF*/if (rT51a_keyword(C,(T0 *)ms107)) {
  2231. /*IF*/if (rT51a_e2(C)) {
  2232. {T199 *n=((T199*)new(199));
  2233. rT199make(n,a1,_sp,(C)->_last_expression);
  2234. _infix_or_else=(T0 *)n;}
  2235. rT51a_r2(C,_infix_or_else);
  2236. }
  2237. else {
  2238. rT51err_exp(_sp,(T0 *)ms108);
  2239. }
  2240. /*FI*/}
  2241. else {
  2242. /*IF*/if (rT51a_e2(C)) {
  2243. {T200 *n=((T200*)new(200));
  2244. rT200make(n,a1,_sp,(C)->_last_expression);
  2245. _infix_or=(T0 *)n;}
  2246. rT51a_r2(C,_infix_or);
  2247. }
  2248. else {
  2249. rT51err_exp(_sp,(T0 *)ms106);
  2250. }
  2251. /*FI*/}
  2252. /*FI*/}
  2253.  else if (rT51a_keyword(C,(T0 *)ms101)) {
  2254. {T46 *n=((T46*)new(46));
  2255. rT46make(n,(C)->_start_line,(C)->_start_column);
  2256. _sp=(T0 *)n;}
  2257. /*IF*/if (rT51a_e2(C)) {
  2258. {T201 *n=((T201*)new(201));
  2259. rT201make(n,a1,_sp,(C)->_last_expression);
  2260. _infix_xor=(T0 *)n;}
  2261. rT51a_r2(C,_infix_xor);
  2262. }
  2263. else {
  2264. rT51err_exp(_sp,(T0 *)ms101);
  2265. }
  2266. /*FI*/}
  2267. else {
  2268. C->_last_expression=a1;
  2269. }
  2270. /*FI*/}
  2271. void rT51a_r3(T51 *C,T0 * a1){
  2272. T0 * _sp=NULL;
  2273. T0 * _infix_and=NULL;
  2274. T0 * _infix_and_then=NULL;
  2275. /*IF*/if (rT51a_keyword(C,(T0 *)ms103)) {
  2276. {T46 *n=((T46*)new(46));
  2277. rT46make(n,(C)->_start_line,(C)->_start_column);
  2278. _sp=(T0 *)n;}
  2279. /*IF*/if (rT51a_keyword(C,(T0 *)ms104)) {
  2280. /*IF*/if (rT51a_e3(C)) {
  2281. {T197 *n=((T197*)new(197));
  2282. rT197make(n,a1,_sp,(C)->_last_expression);
  2283. _infix_and_then=(T0 *)n;}
  2284. rT51a_r3(C,_infix_and_then);
  2285. }
  2286. else {
  2287. rT51err_exp(_sp,(T0 *)ms105);
  2288. }
  2289. /*FI*/}
  2290. else {
  2291. /*IF*/if (rT51a_e3(C)) {
  2292. {T198 *n=((T198*)new(198));
  2293. rT198make(n,a1,_sp,(C)->_last_expression);
  2294. _infix_and=(T0 *)n;}
  2295. rT51a_r3(C,_infix_and);
  2296. }
  2297. else {
  2298. rT51err_exp(_sp,(T0 *)ms103);
  2299. }
  2300. /*FI*/}
  2301. /*FI*/}
  2302. else {
  2303. C->_last_expression=a1;
  2304. }
  2305. /*FI*/}
  2306. void rT51a_r4(T51 *C,T0 * a1){
  2307. T0 * _sp=NULL;
  2308. T0 * _infix_gt=NULL;
  2309. T0 * _infix_ge=NULL;
  2310. T0 * _infix_lt=NULL;
  2311. T0 * _infix_le=NULL;
  2312. T0 * _infix_not_equal=NULL;
  2313. T0 * _infix_equal=NULL;
  2314. /*IF*/if (rT51skip1(C,'\75')) {
  2315. {T46 *n=((T46*)new(46));
  2316. rT46make(n,(C)->_start_line,(C)->_start_column);
  2317. _sp=(T0 *)n;}
  2318. /*IF*/if (rT51a_e4(C)) {
  2319. {T191 *n=((T191*)new(191));
  2320. rT191make(n,a1,_sp,(C)->_last_expression);
  2321. _infix_equal=(T0 *)n;}
  2322. rT51a_r4(C,_infix_equal);
  2323. }
  2324. else {
  2325. rT51err_exp(_sp,(T0 *)ms315);
  2326. }
  2327. /*FI*/}
  2328.  else if (rT51skip2(C,'\57','\75')) {
  2329. {T46 *n=((T46*)new(46));
  2330. rT46make(n,(C)->_start_line,(C)->_start_column);
  2331. _sp=(T0 *)n;}
  2332. /*IF*/if (rT51a_e4(C)) {
  2333. {T192 *n=((T192*)new(192));
  2334. rT192make(n,a1,_sp,(C)->_last_expression);
  2335. _infix_not_equal=(T0 *)n;}
  2336. rT51a_r4(C,_infix_not_equal);
  2337. }
  2338. else {
  2339. rT51err_exp(_sp,(T0 *)ms317);
  2340. }
  2341. /*FI*/}
  2342.  else if (rT51skip2(C,'\74','\75')) {
  2343. {T46 *n=((T46*)new(46));
  2344. rT46make(n,(C)->_start_line,(C)->_start_column);
  2345. _sp=(T0 *)n;}
  2346. /*IF*/if (rT51a_e4(C)) {
  2347. {T193 *n=((T193*)new(193));
  2348. rT193make(n,a1,_sp,(C)->_last_expression);
  2349. _infix_le=(T0 *)n;}
  2350. rT51a_r4(C,_infix_le);
  2351. }
  2352. else {
  2353. rT51err_exp(_sp,(T0 *)ms319);
  2354. }
  2355. /*FI*/}
  2356.  else if (rT51skip2(C,'\76','\75')) {
  2357. {T46 *n=((T46*)new(46));
  2358. rT46make(n,(C)->_start_line,(C)->_start_column);
  2359. _sp=(T0 *)n;}
  2360. /*IF*/if (rT51a_e4(C)) {
  2361. {T195 *n=((T195*)new(195));
  2362. rT195make(n,a1,_sp,(C)->_last_expression);
  2363. _infix_ge=(T0 *)n;}
  2364. rT51a_r4(C,_infix_ge);
  2365. }
  2366. else {
  2367. rT51err_exp(_sp,(T0 *)ms321);
  2368. }
  2369. /*FI*/}
  2370.  else if (rT51skip1(C,'\74')) {
  2371. {T46 *n=((T46*)new(46));
  2372. rT46make(n,(C)->_start_line,(C)->_start_column);
  2373. _sp=(T0 *)n;}
  2374. /*IF*/if (rT51a_e4(C)) {
  2375. {T194 *n=((T194*)new(194));
  2376. rT194make(n,a1,_sp,(C)->_last_expression);
  2377. _infix_lt=(T0 *)n;}
  2378. rT51a_r4(C,_infix_lt);
  2379. }
  2380. else {
  2381. rT51err_exp(_sp,(T0 *)ms323);
  2382. }
  2383. /*FI*/}
  2384.  else if (rT51skip1unless2(C,'\76','\76')) {
  2385. {T46 *n=((T46*)new(46));
  2386. rT46make(n,(C)->_start_line,(C)->_start_column);
  2387. _sp=(T0 *)n;}
  2388. /*IF*/if (rT51a_e4(C)) {
  2389. {T196 *n=((T196*)new(196));
  2390. rT196make(n,a1,_sp,(C)->_last_expression);
  2391. _infix_gt=(T0 *)n;}
  2392. rT51a_r4(C,_infix_gt);
  2393. }
  2394. else {
  2395. rT51err_exp(_sp,(T0 *)ms325);
  2396. }
  2397. /*FI*/}
  2398. else {
  2399. C->_last_expression=a1;
  2400. }
  2401. /*FI*/}
  2402. void rT51a_r5(T51 *C,T0 * a1){
  2403. T0 * _sp=NULL;
  2404. T0 * _infix_minus=NULL;
  2405. T0 * _infix_plus=NULL;
  2406. /*IF*/if (rT51skip1(C,'\53')) {
  2407. {T46 *n=((T46*)new(46));
  2408. rT46make(n,(C)->_start_line,(C)->_start_column);
  2409. _sp=(T0 *)n;}
  2410. /*IF*/if (rT51a_e5(C)) {
  2411. {T189 *n=((T189*)new(189));
  2412. rT189make(n,a1,_sp,(C)->_last_expression);
  2413. _infix_plus=(T0 *)n;}
  2414. rT51a_r5(C,_infix_plus);
  2415. }
  2416. else {
  2417. rT51err_exp(_sp,(T0 *)ms86);
  2418. }
  2419. /*FI*/}
  2420.  else if (rT51skip1(C,'\55')) {
  2421. {T46 *n=((T46*)new(46));
  2422. rT46make(n,(C)->_start_line,(C)->_start_column);
  2423. _sp=(T0 *)n;}
  2424. /*IF*/if (rT51a_e5(C)) {
  2425. {T190 *n=((T190*)new(190));
  2426. rT190make(n,a1,_sp,(C)->_last_expression);
  2427. _infix_minus=(T0 *)n;}
  2428. rT51a_r5(C,_infix_minus);
  2429. }
  2430. else {
  2431. rT51err_exp(_sp,(T0 *)ms87);
  2432. }
  2433. /*FI*/}
  2434. else {
  2435. C->_last_expression=a1;
  2436. }
  2437. /*FI*/}
  2438. void rT51a_r6(T51 *C,T0 * a1){
  2439. T0 * _sp=NULL;
  2440. T0 * _infix_div=NULL;
  2441. T0 * _infix_int_rem=NULL;
  2442. T0 * _infix_int_div=NULL;
  2443. T0 * _infix_times=NULL;
  2444. /*IF*/if (rT51skip1(C,'\52')) {
  2445. {T46 *n=((T46*)new(46));
  2446. rT46make(n,(C)->_start_line,(C)->_start_column);
  2447. _sp=(T0 *)n;}
  2448. /*IF*/if (rT51a_e6(C)) {
  2449. {T185 *n=((T185*)new(185));
  2450. rT185make(n,a1,_sp,(C)->_last_expression);
  2451. _infix_times=(T0 *)n;}
  2452. rT51a_r6(C,_infix_times);
  2453. }
  2454. else {
  2455. rT51err_exp(_sp,(T0 *)ms309);
  2456. }
  2457. /*FI*/}
  2458.  else if (rT51skip2(C,'\57','\57')) {
  2459. {T46 *n=((T46*)new(46));
  2460. rT46make(n,(C)->_start_line,(C)->_start_column);
  2461. _sp=(T0 *)n;}
  2462. /*IF*/if (rT51a_e6(C)) {
  2463. {T186 *n=((T186*)new(186));
  2464. rT186make(n,a1,_sp,(C)->_last_expression);
  2465. _infix_int_div=(T0 *)n;}
  2466. rT51a_r6(C,_infix_int_div);
  2467. }
  2468. else {
  2469. rT51err_exp(_sp,(T0 *)ms311);
  2470. }
  2471. /*FI*/}
  2472.  else if (rT51skip2(C,'\134','\134')) {
  2473. {T46 *n=((T46*)new(46));
  2474. rT46make(n,(C)->_start_line,(C)->_start_column);
  2475. _sp=(T0 *)n;}
  2476. /*IF*/if (rT51a_e6(C)) {
  2477. {T187 *n=((T187*)new(187));
  2478. rT187make(n,a1,_sp,(C)->_last_expression);
  2479. _infix_int_rem=(T0 *)n;}
  2480. rT51a_r6(C,_infix_int_rem);
  2481. }
  2482. else {
  2483. rT51err_exp(_sp,(T0 *)ms313);
  2484. }
  2485. /*FI*/}
  2486.  else if (rT51skip1unless2(C,'\57','\75')) {
  2487. {T46 *n=((T46*)new(46));
  2488. rT46make(n,(C)->_start_line,(C)->_start_column);
  2489. _sp=(T0 *)n;}
  2490. /*IF*/if (rT51a_e6(C)) {
  2491. {T188 *n=((T188*)new(188));
  2492. rT188make(n,a1,_sp,(C)->_last_expression);
  2493. _infix_div=(T0 *)n;}
  2494. rT51a_r6(C,_infix_div);
  2495. }
  2496. else {
  2497. rT51err_exp(_sp,(T0 *)ms97);
  2498. }
  2499. /*FI*/}
  2500. else {
  2501. C->_last_expression=a1;
  2502. }
  2503. /*FI*/}
  2504. int rT51skip1unless2(T51 *C,char a1,char a2){
  2505. int R=0;
  2506. C->_start_line=(C)->_line;
  2507. C->_start_column=(C)->_column;
  2508. /*IF*/if (((C)->_cc)==(a1)) {
  2509. rT51next_char(C);
  2510. /*IF*/if (((C)->_cc)==(a2)) {
  2511. rT51prev_char(C);
  2512. }
  2513. else {
  2514. R=1;
  2515. rT51skip_comments(C);
  2516. }
  2517. /*FI*/}
  2518. /*FI*/return R;
  2519. }
  2520. int rT51skip1(T51 *C,char a1){
  2521. int R=0;
  2522. /*IF*/if ((a1)==((C)->_cc)) {
  2523. C->_start_line=(C)->_line;
  2524. C->_start_column=(C)->_column;
  2525. R=1;
  2526. rT51next_char(C);
  2527. rT51skip_comments(C);
  2528. }
  2529. /*FI*/return R;
  2530. }
  2531. void rT51a_r7(T51 *C,T0 * a1){
  2532. T0 * _sp=NULL;
  2533. T0 * _infix_power=NULL;
  2534. /*IF*/if (rT51skip1(C,'\136')) {
  2535. {T46 *n=((T46*)new(46));
  2536. rT46make(n,(C)->_start_line,(C)->_start_column);
  2537. _sp=(T0 *)n;}
  2538. /*IF*/if (rT51a_e7(C)) {
  2539. {T184 *n=((T184*)new(184));
  2540. rT184make(n,a1,_sp,(C)->_last_expression);
  2541. _infix_power=(T0 *)n;}
  2542. rT51a_r7(C,_infix_power);
  2543. }
  2544. else {
  2545. rT51err_exp(_sp,(T0 *)ms307);
  2546. }
  2547. /*FI*/}
  2548. else {
  2549. C->_last_expression=a1;
  2550. }
  2551. /*FI*/}
  2552. int rT51skip2(T51 *C,char a1,char a2){
  2553. int R=0;
  2554. /*IF*/if ((a1)==((C)->_cc)) {
  2555. C->_start_line=(C)->_line;
  2556. C->_start_column=(C)->_column;
  2557. rT51next_char(C);
  2558. /*IF*/if ((a2)==((C)->_cc)) {
  2559. R=1;
  2560. rT51next_char(C);
  2561. rT51skip_comments(C);
  2562. }
  2563. else {
  2564. rT51prev_char(C);
  2565. }
  2566. /*FI*/}
  2567. /*FI*/return R;
  2568. }
  2569. void rT51a_r8(T51 *C,T0 * a1){
  2570. T0 * _infix_freeop=NULL;
  2571. T0 * _infix_name=NULL;
  2572. /*IF*/if (rT51a_free_operator(C)) {
  2573. _infix_name=rT69to_infix_name_use((T69*)rT51tmp_operator());
  2574. /*IF*/if (rT51a_e8(C)) {
  2575. {T182 *n=((T182*)new(182));
  2576. rT182make(n,a1,_infix_name,(C)->_last_expression);
  2577. _infix_freeop=(T0 *)n;}
  2578. rT51a_r8(C,_infix_freeop);
  2579. }
  2580. else {
  2581. rT51err_exp(((T70*)_infix_name)->_start_position,((T70*)_infix_name)->_to_string);
  2582. }
  2583. /*FI*/}
  2584. else {
  2585. C->_last_expression=a1;
  2586. }
  2587. /*FI*/}
  2588. int rT51a_debug(T51 *C){
  2589. int R=0;
  2590. T0 * _e_debug=NULL;
  2591. T0* _list=NULL;
  2592. T0 * _sp=NULL;
  2593. /*IF*/if (rT51a_keyword(C,(T0 *)ms346)) {
  2594. {T46 *n=((T46*)new(46));
  2595. rT46make(n,(C)->_start_line,(C)->_start_column);
  2596. _sp=(T0 *)n;}
  2597. /*IF*/if (rT51skip1(C,'\50')) {
  2598. while (!(!(rT51a_manifest_string(C)))) {
  2599. /*IF*/if (!(_list)) {
  2600. _list=ma(151,0,1,(C)->_last_manifest_string);
  2601. }
  2602. else {
  2603. rT151add_last((T151*)_list,(C)->_last_manifest_string);
  2604. }
  2605. /*FI*/C->_ok=rT51skip1(C,'\54');
  2606. }
  2607. /*IF*/if (!(_list)) {
  2608. rT51wcp(C,(T0 *)ms347);
  2609. }
  2610. /*FI*//*IF*/if (!(rT51skip1(C,'\51'))) {
  2611. rT51fcp(C,(T0 *)ms348);
  2612. }
  2613. /*FI*/}
  2614. /*FI*/R=1;
  2615. {T215 *n=((T215*)new(215));
  2616. rT215make(n,_sp,_list,rT51a_compound2(C,(T0 *)ms352,(T0 *)ms121));
  2617. _e_debug=(T0 *)n;}
  2618. C->_last_instruction=_e_debug;
  2619. }
  2620. /*FI*/return R;
  2621. }
  2622. int rT51a_feature_declaration(T51 *C){
  2623. int R=0;
  2624. rT136initialize((T136*)oRBC51tmp_feature);
  2625. /*IF*/if (rT51a_keyword(C,(T0 *)ms254)) {
  2626. /*IF*/if (rT51a_feature_name(C)) {
  2627. R=1;
  2628. XrT67set_is_frozen((C)->_last_feature_name,1);
  2629. /*UT*/(T136*)oRBC51tmp_feature;
  2630. rT136add_synonym((C)->_last_feature_name);
  2631. }
  2632. else {
  2633. rT51fcp(C,(T0 *)ms240);
  2634. }
  2635. /*FI*/}
  2636.  else if (rT51a_feature_name(C)) {
  2637. R=1;
  2638. /*UT*/(T136*)oRBC51tmp_feature;
  2639. rT136add_synonym((C)->_last_feature_name);
  2640. }
  2641. /*FI*/while (!(!(rT51skip1(C,'\54')))) {
  2642. /*IF*/if (rT51a_keyword(C,(T0 *)ms255)) {
  2643. /*IF*/if (rT51a_feature_name(C)) {
  2644. XrT67set_is_frozen((C)->_last_feature_name,1);
  2645. /*UT*/(T136*)oRBC51tmp_feature;
  2646. rT136add_synonym((C)->_last_feature_name);
  2647. }
  2648. else {
  2649. rT51fcp(C,(T0 *)ms256);
  2650. }
  2651. /*FI*/}
  2652.  else if (rT51a_feature_name(C)) {
  2653. /*UT*/(T136*)oRBC51tmp_feature;
  2654. rT136add_synonym((C)->_last_feature_name);
  2655. }
  2656. else {
  2657. rT51ecp(C,(T0 *)ms257);
  2658. }
  2659. /*FI*/}
  2660. /*IF*/if (R) {
  2661. rT51a_formal_arg_list(C);
  2662. C->_function_type=NULL;
  2663. /*IF*/if (rT51skip1(C,'\72')) {
  2664. /*IF*/if (!(rT51a_type(C))) {
  2665. rT51fcp(C,(T0 *)ms263);
  2666. }
  2667. else {
  2668. C->_function_type=(C)->_last_type;
  2669. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_type)=((C)->_last_type);
  2670. /*)*/}
  2671. /*FI*/}
  2672. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms264)) {
  2673. /*IF*/if (rT51a_keyword(C,(T0 *)ms265)) {
  2674. C->_last_feature_declaration=rT136to_cst_att_unique((T136*)oRBC51tmp_feature);
  2675. }
  2676.  else if (rT51a_boolean_constant(C)) {
  2677. C->_last_feature_declaration=rT136to_cst_att_boolean((T136*)oRBC51tmp_feature,(C)->_last_boolean_constant);
  2678. }
  2679.  else if (rT51a_character_constant(C)) {
  2680. C->_last_feature_declaration=rT136to_cst_att_character((T136*)oRBC51tmp_feature,(C)->_last_character_constant);
  2681. }
  2682.  else if (rT51a_manifest_string(C)) {
  2683. C->_last_feature_declaration=rT136to_cst_att_string((T136*)oRBC51tmp_feature,(C)->_last_manifest_string);
  2684. }
  2685.  else if (rT51a_bit_constant(C)) {
  2686. C->_last_feature_declaration=rT136to_cst_att_bit((T136*)oRBC51tmp_feature,(C)->_last_bit_constant);
  2687. }
  2688.  else if (rT51a_real_constant(C)) {
  2689. C->_last_feature_declaration=rT136to_cst_att_real((T136*)oRBC51tmp_feature,(C)->_last_real_constant);
  2690. }
  2691.  else if (rT51a_integer_constant(C)) {
  2692. C->_last_feature_declaration=rT136to_cst_att_integer((T136*)oRBC51tmp_feature,(C)->_last_integer_constant);
  2693. }
  2694. else {
  2695. C->_last_feature_declaration=rT51a_routine(C);
  2696. }
  2697. /*FI*/}
  2698. else {
  2699. C->_last_feature_declaration=rT136to_writable_attribute((T136*)oRBC51tmp_feature);
  2700. }
  2701. /*FI*/C->_function_type=NULL;
  2702. C->_arguments=NULL;
  2703. }
  2704. /*FI*/return R;
  2705. }
  2706. void rT51a_feature_clause(T51 *C){
  2707. T0* _aof=NULL;
  2708. T0 * _comment=NULL;
  2709. T0 * _clients=NULL;
  2710. T0 * _feature_clause=NULL;
  2711. _clients=rT51a_clients(C);
  2712. _comment=rT51get_comments(C);
  2713. while (!(!(rT51a_feature_declaration(C)))) {
  2714. C->_ok=rT51skip1(C,'\73');
  2715. /*IF*/if (((int)(C)->_last_feature_declaration)) {
  2716. /*IF*/if (!(_aof)) {
  2717. _aof=ma(63,0,1,(C)->_last_feature_declaration);
  2718. }
  2719. else {
  2720. XrT63add_last(_aof,(C)->_last_feature_declaration);
  2721. }
  2722. /*FI*/XrT62set_header_comment((C)->_last_feature_declaration,rT51get_comments(C));
  2723. }
  2724. /*FI*/}
  2725. /*IF*/if ((((int)_aof))||(((int)_comment))) {
  2726. {T135 *n=((T135*)new(135));
  2727. rT135make(n,_clients,_comment,_aof);
  2728. _feature_clause=(T0 *)n;}
  2729. rT50add_feature_clause((T50*)(C)->_last_base_class,_feature_clause);
  2730. }
  2731. /*FI*/}
  2732. int rT51a_feature_list(T51 *C){
  2733. int R=0;
  2734. int _state=0;
  2735. C->_last_feature_list=NULL;
  2736. while (!((_state)>=(3))) {
  2737. {int iv1=_state;
  2738. if (0 == iv1) goto l199;
  2739. goto l200;
  2740.  l199: ;
  2741. /*IF*/if (rT51a_feature_name(C)) {
  2742. C->_last_feature_list=ma(129,0,1,(C)->_last_feature_name);
  2743. R=1;
  2744. _state=1;
  2745. }
  2746.  else if (((C)->_cc)==('\54')) {
  2747. rT51wcp(C,(T0 *)ms234);
  2748. C->_ok=rT51skip1(C,'\54');
  2749. }
  2750. else {
  2751. _state=3;
  2752. }
  2753. /*FI*/goto l198;
  2754.  l200: ;
  2755. if (1 == iv1) goto l201;
  2756. goto l202;
  2757.  l201: ;
  2758. /*IF*/if (((C)->_cc)==('\54')) {
  2759. C->_ok=rT51skip1(C,'\54');
  2760. _state=2;
  2761. }
  2762.  else if (rT51a_feature_name(C)) {
  2763. rT51warning(XrT67start_position((C)->_last_feature_name),(T0 *)ms217);
  2764. rT129add_last((T129*)(C)->_last_feature_list,(C)->_last_feature_name);
  2765. }
  2766. else {
  2767. _state=3;
  2768. }
  2769. /*FI*/goto l198;
  2770.  l202: ;
  2771. if (2 == iv1) goto l203;
  2772. goto l204;
  2773.  l203: ;
  2774. /*IF*/if (rT51a_feature_name(C)) {
  2775. rT129add_last((T129*)(C)->_last_feature_list,(C)->_last_feature_name);
  2776. _state=1;
  2777. }
  2778.  else if (((C)->_cc)==('\54')) {
  2779. rT51wcp(C,(T0 *)ms214);
  2780. C->_ok=rT51skip1(C,'\54');
  2781. }
  2782. else {
  2783. rT51ecp(C,(T0 *)ms240);
  2784. _state=3;
  2785. }
  2786. /*FI*/goto l198;
  2787.  l204: ;
  2788.  l198: ;
  2789. }
  2790. }
  2791. return R;
  2792. }
  2793. int rT51a_feature_name(T51 *C){
  2794. int R=0;
  2795. /*IF*/if (rT51a_prefix(C)) {
  2796. C->_last_feature_name=(C)->_last_prefix;
  2797. R=1;
  2798. }
  2799.  else if (rT51a_infix(C)) {
  2800. C->_last_feature_name=(C)->_last_infix;
  2801. R=1;
  2802. }
  2803.  else if (rT51a_identifier(C)) {
  2804. C->_last_feature_name=rT69to_feature_name((T69*)rT51tmp_name());
  2805. R=1;
  2806. }
  2807. /*FI*/return R;
  2808. }
  2809. int rT51a_character_constant(T51 *C){
  2810. int R=0;
  2811. char _value='\0';
  2812. int _printing_mode=0;
  2813. int _state=0;
  2814. T0 * _sp=NULL;
  2815. /*IF*/if (((C)->_cc)==('\47')) {
  2816. {T46 *n=((T46*)new(46));
  2817. rT46make(n,(C)->_line,(C)->_column);
  2818. _sp=(T0 *)n;}
  2819. R=1;
  2820. while (!((_state)>(2))) {
  2821. rT51next_char(C);
  2822. {int iv1=_state;
  2823. if (0 == iv1) goto l206;
  2824. goto l207;
  2825.  l206: ;
  2826. {int iv2=(C)->_cc;
  2827. if (37 == iv2) goto l209;
  2828. goto l210;
  2829.  l209: ;
  2830. _state=1;
  2831. goto l208;
  2832.  l210: ;
  2833. if (39 == iv2) goto l211;
  2834. goto l212;
  2835.  l211: ;
  2836. rT51fcp(C,(T0 *)ms162);
  2837. _state=2;
  2838. goto l208;
  2839.  l212: ;
  2840. _value=(C)->_cc;
  2841. _printing_mode=0;
  2842. _state=2;
  2843.  l208: ;
  2844. }
  2845. goto l205;
  2846.  l207: ;
  2847. if (1 == iv1) goto l213;
  2848. goto l214;
  2849.  l213: ;
  2850. _printing_mode=1;
  2851. _state=2;
  2852. {int iv2=(C)->_cc;
  2853. if (65 == iv2) goto l216;
  2854. goto l217;
  2855.  l216: ;
  2856. _value='\100';
  2857. goto l215;
  2858.  l217: ;
  2859. if (66 == iv2) goto l218;
  2860. goto l219;
  2861.  l218: ;
  2862. _value='\10';
  2863. goto l215;
  2864.  l219: ;
  2865. if (67 == iv2) goto l220;
  2866. goto l221;
  2867.  l220: ;
  2868. _value='\136';
  2869. goto l215;
  2870.  l221: ;
  2871. if (68 == iv2) goto l222;
  2872. goto l223;
  2873.  l222: ;
  2874. _value='\44';
  2875. goto l215;
  2876.  l223: ;
  2877. if (70 == iv2) goto l224;
  2878. goto l225;
  2879.  l224: ;
  2880. _value='\14';
  2881. goto l215;
  2882.  l225: ;
  2883. if (72 == iv2) goto l226;
  2884. goto l227;
  2885.  l226: ;
  2886. _value='\134';
  2887. goto l215;
  2888.  l227: ;
  2889. if (76 == iv2) goto l228;
  2890. goto l229;
  2891.  l228: ;
  2892. _value='\176';
  2893. goto l215;
  2894.  l229: ;
  2895. if (78 == iv2) goto l230;
  2896. goto l231;
  2897.  l230: ;
  2898. _value='\12';
  2899. goto l215;
  2900.  l231: ;
  2901. if (81 == iv2) goto l232;
  2902. goto l233;
  2903.  l232: ;
  2904. _value='\140';
  2905. goto l215;
  2906.  l233: ;
  2907. if (82 == iv2) goto l234;
  2908. goto l235;
  2909.  l234: ;
  2910. _value='\15';
  2911. goto l215;
  2912.  l235: ;
  2913. if (83 == iv2) goto l236;
  2914. goto l237;
  2915.  l236: ;
  2916. _value='\43';
  2917. goto l215;
  2918.  l237: ;
  2919. if (84 == iv2) goto l238;
  2920. goto l239;
  2921.  l238: ;
  2922. _value='\11';
  2923. goto l215;
  2924.  l239: ;
  2925. if (85 == iv2) goto l240;
  2926. goto l241;
  2927.  l240: ;
  2928. _value='\0';
  2929. goto l215;
  2930.  l241: ;
  2931. if (86 == iv2) goto l242;
  2932. goto l243;
  2933.  l242: ;
  2934. _value='\174';
  2935. goto l215;
  2936.  l243: ;
  2937. if (37 == iv2) goto l244;
  2938. goto l245;
  2939.  l244: ;
  2940. _value='\45';
  2941. goto l215;
  2942.  l245: ;
  2943. if (39 == iv2) goto l246;
  2944. goto l247;
  2945.  l246: ;
  2946. _value='\47';
  2947. goto l215;
  2948.  l247: ;
  2949. if (34 == iv2) goto l248;
  2950. goto l249;
  2951.  l248: ;
  2952. _value='\42';
  2953. goto l215;
  2954.  l249: ;
  2955. if (40 == iv2) goto l250;
  2956. goto l251;
  2957.  l250: ;
  2958. _value='\133';
  2959. goto l215;
  2960.  l251: ;
  2961. if (41 == iv2) goto l252;
  2962. goto l253;
  2963.  l252: ;
  2964. _value='\135';
  2965. goto l215;
  2966.  l253: ;
  2967. if (60 == iv2) goto l254;
  2968. goto l255;
  2969.  l254: ;
  2970. _value='\173';
  2971. goto l215;
  2972.  l255: ;
  2973. if (62 == iv2) goto l256;
  2974. goto l257;
  2975.  l256: ;
  2976. _value='\175';
  2977. goto l215;
  2978.  l257: ;
  2979. if (47 == iv2) goto l258;
  2980. goto l259;
  2981.  l258: ;
  2982. rT51a_ascii_code(C);
  2983. _value=(C)->_last_ascii_code;
  2984. _printing_mode=2;
  2985. goto l215;
  2986.  l259: ;
  2987. rT51fcp(C,(T0 *)ms166);
  2988.  l215: ;
  2989. }
  2990. goto l205;
  2991.  l214: ;
  2992. _state=3;
  2993. {int iv2=(C)->_cc;
  2994. if (39 == iv2) goto l261;
  2995. goto l262;
  2996.  l261: ;
  2997. goto l260;
  2998.  l262: ;
  2999. rT51fcp(C,(T0 *)ms162);
  3000.  l260: ;
  3001. }
  3002. rT51next_char(C);
  3003. rT51skip_comments(C);
  3004.  l205: ;
  3005. }
  3006. }
  3007. {T75 *n=((T75*)new(75));
  3008. rT75make(n,_sp,_value,_printing_mode);
  3009. C->_last_character_constant=(T0 *)n;}
  3010. }
  3011. /*FI*/return R;
  3012. }
  3013. int rT51a_check(T51 *C){
  3014. int R=0;
  3015. T0* _al=NULL;
  3016. T0 * _hc=NULL;
  3017. T0 * _sp=NULL;
  3018. /*IF*/if (rT51a_keyword(C,(T0 *)ms114)) {
  3019. R=1;
  3020. {T46 *n=((T46*)new(46));
  3021. rT46make(n,(C)->_start_line,(C)->_start_column);
  3022. _sp=(T0 *)n;}
  3023. _hc=rT51get_comments(C);
  3024. _al=rT51a_assertion(C);
  3025. /*IF*/if ((((int)_hc))||(((int)_al))) {
  3026. {T213 *n=((T213*)new(213));
  3027. rT213make(n,_sp,_hc,_al);
  3028. C->_last_instruction=(T0 *)n;}}
  3029. else {
  3030. rT51wcp(C,(T0 *)ms344);
  3031. }
  3032. /*FI*//*IF*/if (!(rT51a_keyword(C,(T0 *)ms121))) {
  3033. rT51fcp(C,(T0 *)ms345);
  3034. }
  3035. /*FI*/}
  3036. /*FI*/return R;
  3037. }
  3038. void rT51a_class_declaration(T51 *C){
  3039. T0* _al=NULL;
  3040. T0 * _hc=NULL;
  3041. T0 * _sp=NULL;
  3042. rT51a_indexing(C);
  3043. /*IF*/if (rT51a_keyword(C,(T0 *)ms177)) {
  3044. rT50set_is_deferred((T50*)(C)->_last_base_class);
  3045. }
  3046. /*FI*//*IF*/if (rT51a_keyword(C,(T0 *)ms123)) {
  3047. rT50set_is_expanded((T50*)(C)->_last_base_class);
  3048. /*IF*/if (rT51a_keyword(C,(T0 *)ms179)) {
  3049. rT50set_is_deferred((T50*)(C)->_last_base_class);
  3050. }
  3051. /*FI*/}
  3052. /*FI*//*(IRF3*/(((T50*)(C)->_last_base_class)->_heading_comment1)=(rT51get_comments(C));
  3053. /*)*//*IF*/if (!(rT51a_keyword(C,(T0 *)ms180))) {
  3054. rT51fcp(C,(T0 *)ms181);
  3055. }
  3056. /*FI*//*IF*/if (rT51a_base_class_name(C)) {
  3057. rT48set_with((T48*)rT51current_class_name(C),(C)->_last_class_name);
  3058. /*IF*/if (rT41fast_has((T41*)oRBC51forbidden_class,((T48*)(C)->_last_class_name)->_to_string)) {
  3059. /*UT*/(T45*)oRBC27eh;
  3060. rT45add_position(((T48*)(C)->_last_class_name)->_start_position);
  3061. rT51fatal_error((T0 *)ms202);
  3062. }
  3063. /*FI*/}
  3064. else {
  3065. rT51fcp(C,(T0 *)ms203);
  3066. }
  3067. /*FI*/rT51a_formal_generic_list(C);
  3068. /*IF*/if (rT51a_keyword(C,(T0 *)ms222)) {
  3069. /*IF*/if (rT51a_manifest_string(C)) {
  3070. /*(IRF3*/(((T50*)(C)->_last_base_class)->_obsolete_type_string)=((C)->_last_manifest_string);
  3071. /*)*/}
  3072. else {
  3073. rT51fcp(C,(T0 *)ms223);
  3074. }
  3075. /*FI*/}
  3076. /*FI*//*(IRF3*/(((T50*)(C)->_last_base_class)->_heading_comment2)=(rT51get_comments(C));
  3077. /*)*//*IF*/if (rT51a_keyword(C,(T0 *)ms224)) {
  3078. rT51a_parent_list(C,rT51pos((C)->_start_line,(C)->_start_column),rT51get_comments(C));
  3079. }
  3080. /*FI*/while (!(!(rT51a_keyword(C,(T0 *)ms116)))) {
  3081. rT51a_creation_clause(C);
  3082. }
  3083. while (!(!(rT51a_keyword(C,(T0 *)ms253)))) {
  3084. rT51a_feature_clause(C);
  3085. }
  3086. /*IF*/if (rT51a_keyword(C,(T0 *)ms407)) {
  3087. {T46 *n=((T46*)new(46));
  3088. rT46make(n,(C)->_start_line,(C)->_start_column);
  3089. _sp=(T0 *)n;}
  3090. _hc=rT51get_comments(C);
  3091. _al=rT51a_assertion(C);
  3092. rT50set_invariant((T50*)(C)->_last_base_class,_sp,_hc,_al);
  3093. }
  3094. /*FI*//*(IRF3*/(((T50*)(C)->_last_base_class)->_end_comment)=(rT51get_comments(C));
  3095. /*)*//*IF*/if (rT51a_keyword(C,(T0 *)ms121)) {
  3096. /*IF*/if (((C)->_cc)==('\73')) {
  3097. rT51wcp(C,(T0 *)ms238);
  3098. C->_ok=rT51skip1(C,'\73');
  3099. }
  3100. /*FI*//*IF*/if (((C)->_cc)!=('\1')) {
  3101. rT51fcp(C,(T0 *)ms408);
  3102. }
  3103. /*FI*//*IF*/if ((((int)(C)->_last_comments))&&((rT59count((T59*)(C)->_last_comments))>(1))) {
  3104. rT51fcp(C,(T0 *)ms409);
  3105. }
  3106. /*FI*/}
  3107. else {
  3108. rT51fcp(C,(T0 *)ms410);
  3109. }
  3110. /*FI*/}
  3111. int rT51a_class_type(T51 *C){
  3112. int R=0;
  3113. T0* _generic_list=NULL;
  3114. T0 * _base_class_name=NULL;
  3115. int _state=0;
  3116. /*IF*/if (rT51a_base_type(C)) {
  3117. C->_last_class_type=(C)->_last_base_type;
  3118. R=1;
  3119. }
  3120.  else if (rT51a_base_class_name(C)) {
  3121. R=1;
  3122. _base_class_name=(C)->_last_class_name;
  3123. while (!((_state)>(2))) {
  3124. {int iv1=_state;
  3125. if (0 == iv1) goto l264;
  3126. goto l265;
  3127.  l264: ;
  3128. /*IF*/if (rT51skip1(C,'\133')) {
  3129. _state=1;
  3130. }
  3131. else {
  3132. {T116 *n=((T116*)new(116));
  3133. /*(IRF3*/((n)->_base_class_name)=(_base_class_name);
  3134. /*)*/C->_last_class_type=(T0 *)n;}_state=3;
  3135. }
  3136. /*FI*/goto l263;
  3137.  l265: ;
  3138. if (1 == iv1) goto l266;
  3139. goto l267;
  3140.  l266: ;
  3141. /*IF*/if (rT51a_type(C)) {
  3142. /*IF*/if (!(_generic_list)) {
  3143. _generic_list=ma(106,0,1,(C)->_last_type);
  3144. }
  3145. else {
  3146. rT106add_last((T106*)_generic_list,(C)->_last_type);
  3147. }
  3148. /*FI*/_state=2;
  3149. }
  3150.  else if (((C)->_cc)==('\54')) {
  3151. rT51wcp(C,(T0 *)ms214);
  3152. C->_ok=rT51skip1(C,'\54');
  3153. }
  3154.  else if (((C)->_cc)==('\135')) {
  3155. _state=2;
  3156. }
  3157. else {
  3158. rT51fcp(C,(T0 *)ms215);
  3159. _state=2;
  3160. }
  3161. /*FI*/goto l263;
  3162.  l267: ;
  3163. /*IF*/if (rT51skip1(C,'\54')) {
  3164. _state=1;
  3165. }
  3166.  else if (((C)->_cc)==('\135')) {
  3167. /*IF*/if (!(_generic_list)) {
  3168. rT51wcp(C,(T0 *)ms216);
  3169. {T116 *n=((T116*)new(116));
  3170. /*(IRF3*/((n)->_base_class_name)=(_base_class_name);
  3171. /*)*/C->_last_class_type=(T0 *)n;}}
  3172. else {
  3173. {T117 *n=((T117*)new(117));
  3174. rT117make(n,_base_class_name,_generic_list);
  3175. C->_last_class_type=(T0 *)n;}}
  3176. /*FI*/C->_ok=rT51skip1(C,'\135');
  3177. _state=3;
  3178. }
  3179.  else if (rT51a_type(C)) {
  3180. /*IF*/if (!(_generic_list)) {
  3181. _generic_list=ma(106,0,1,(C)->_last_type);
  3182. }
  3183. else {
  3184. rT106add_last((T106*)_generic_list,(C)->_last_type);
  3185. }
  3186. /*FI*/rT51warning(XrT58start_position((C)->_last_type),(T0 *)ms217);
  3187. }
  3188. else {
  3189. rT51fcp(C,(T0 *)ms218);
  3190. _state=3;
  3191. }
  3192. /*FI*/ l263: ;
  3193. }
  3194. }
  3195. }
  3196. /*FI*/return R;
  3197. }
  3198. int rT51a_identifier(T51 *C){
  3199. int R=0;
  3200. int _do_warning=0;
  3201. int _state=0;
  3202. /*IF*/if (rT3is_letter((C)->_cc)) {
  3203. rT69make((T69*)rT51tmp_name(),(C)->_line,(C)->_column);
  3204. rT69extend((T69*)rT51tmp_name(),(C)->_cc);
  3205. while (!((_state)>(0))) {
  3206. rT51next_char(C);
  3207. {int iv1=(C)->_cc;
  3208. if ((48 <= iv1) && (iv1<= 57)) goto l269;
  3209. if (95 == iv1) goto l269;
  3210. if ((97 <= iv1) && (iv1<= 122)) goto l269;
  3211. goto l270;
  3212.  l269: ;
  3213. rT69extend((T69*)rT51tmp_name(),(C)->_cc);
  3214. goto l268;
  3215.  l270: ;
  3216. if ((65 <= iv1) && (iv1<= 90)) goto l271;
  3217. goto l272;
  3218.  l271: ;
  3219. _do_warning=1;
  3220. rT69extend((T69*)rT51tmp_name(),rT3to_lower((C)->_cc));
  3221. goto l268;
  3222.  l272: ;
  3223. _state=1;
  3224.  l268: ;
  3225. }
  3226. }
  3227. /*IF*/if (rT69isa_keyword((T69*)rT51tmp_name())) {
  3228. _state=rT69count((T69*)rT51tmp_name());
  3229. while (!((_state)==(0))) {
  3230. _state=(_state)-(1);
  3231. rT51prev_char(C);
  3232. }
  3233. }
  3234. else {
  3235. R=1;
  3236. rT51skip_comments(C);
  3237. /*IF*/if (_do_warning) {
  3238. rT51warning(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms159);
  3239. }
  3240. /*FI*/}
  3241. /*FI*/}
  3242. /*FI*/return R;
  3243. }
  3244. int rT51a_base_class_name(T51 *C){
  3245. int R=0;
  3246. int _do_warning=0;
  3247. int _state=0;
  3248. /*IF*/if (rT3is_letter((C)->_cc)) {
  3249. /*IF*/if (((C)->_cc)>=('a')) {
  3250. _do_warning=1;
  3251. C->_cc=rT3to_upper((C)->_cc);
  3252. }
  3253. /*FI*/rT69make((T69*)rT51tmp_name(),(C)->_line,(C)->_column);
  3254. rT69extend((T69*)rT51tmp_name(),(C)->_cc);
  3255. while (!((_state)>(0))) {
  3256. rT51next_char(C);
  3257. {int iv1=(C)->_cc;
  3258. if ((48 <= iv1) && (iv1<= 57)) goto l274;
  3259. if ((65 <= iv1) && (iv1<= 90)) goto l274;
  3260. if (95 == iv1) goto l274;
  3261. goto l275;
  3262.  l274: ;
  3263. rT69extend((T69*)rT51tmp_name(),(C)->_cc);
  3264. goto l273;
  3265.  l275: ;
  3266. if ((97 <= iv1) && (iv1<= 122)) goto l276;
  3267. goto l277;
  3268.  l276: ;
  3269. _do_warning=1;
  3270. rT69extend((T69*)rT51tmp_name(),rT3to_upper((C)->_cc));
  3271. goto l273;
  3272.  l277: ;
  3273. _state=1;
  3274.  l273: ;
  3275. }
  3276. }
  3277. /*IF*/if (rT69isa_keyword((T69*)rT51tmp_name())) {
  3278. _state=rT69count((T69*)rT51tmp_name());
  3279. while (!((_state)==(0))) {
  3280. _state=(_state)-(1);
  3281. rT51prev_char(C);
  3282. }
  3283. }
  3284. else {
  3285. R=1;
  3286. rT51skip_comments(C);
  3287. /*IF*/if (_do_warning) {
  3288. rT51warning(rT69start_position((T69*)rT51tmp_name()),(T0 *)ms182);
  3289. }
  3290. /*FI*/C->_last_class_name=rT69to_class_name((T69*)rT51tmp_name());
  3291. }
  3292. /*FI*/}
  3293. /*FI*/return R;
  3294. }
  3295. int rT51a_base_type(T51 *C){
  3296. int R=0;
  3297. T0 * _sp=NULL;
  3298. R=1;
  3299. /*IF*/if (rT51a_keyword(C,(T0 *)ms183)) {
  3300. {T87 *n=((T87*)new(87));
  3301. rT87make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3302. C->_last_base_type=(T0 *)n;}}
  3303.  else if (rT51a_keyword(C,(T0 *)ms187)) {
  3304. {T46 *n=((T46*)new(46));
  3305. rT46make(n,(C)->_start_line,(C)->_start_column);
  3306. _sp=(T0 *)n;}
  3307. /*IF*/if (((rT51skip1(C,'\133'))&&(rT51a_type(C)))&&(rT51skip1(C,'\135'))) {
  3308. {T105 *n=((T105*)new(105));
  3309. rT105make(n,_sp,(C)->_last_type);
  3310. C->_last_base_type=(T0 *)n;}}
  3311. else {
  3312. rT51fcp(C,(T0 *)ms213);
  3313. }
  3314. /*FI*/}
  3315.  else if (rT51a_keyword(C,(T0 *)ms189)) {
  3316. {T107 *n=((T107*)new(107));
  3317. rT107make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3318. C->_last_base_type=(T0 *)n;}}
  3319.  else if (rT51a_keyword(C,(T0 *)ms191)) {
  3320. {T109 *n=((T109*)new(109));
  3321. rT109make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3322. C->_last_base_type=(T0 *)n;}}
  3323.  else if (rT51a_keyword(C,(T0 *)ms198)) {
  3324. {T110 *n=((T110*)new(110));
  3325. rT110make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3326. C->_last_base_type=(T0 *)n;}}
  3327.  else if (rT51a_keyword(C,(T0 *)ms194)) {
  3328. {T111 *n=((T111*)new(111));
  3329. rT111make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3330. C->_last_base_type=(T0 *)n;}}
  3331.  else if (rT51a_keyword(C,(T0 *)ms185)) {
  3332. {T112 *n=((T112*)new(112));
  3333. rT112make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3334. C->_last_base_type=(T0 *)n;}}
  3335.  else if (rT51a_keyword(C,(T0 *)ms186)) {
  3336. {T113 *n=((T113*)new(113));
  3337. rT113make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3338. C->_last_base_type=(T0 *)n;}}
  3339.  else if (rT51a_keyword(C,(T0 *)ms196)) {
  3340. {T114 *n=((T114*)new(114));
  3341. rT114make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3342. C->_last_base_type=(T0 *)n;}}
  3343.  else if (rT51a_keyword(C,(T0 *)ms188)) {
  3344. {T115 *n=((T115*)new(115));
  3345. rT115make(n,rT51pos((C)->_start_line,(C)->_start_column));
  3346. C->_last_base_type=(T0 *)n;}}
  3347. else {
  3348. R=0;
  3349. }
  3350. /*FI*/return R;
  3351. }
  3352. void rT51a_ascii_code(T51 *C){
  3353. int _counter=0;
  3354. rT51next_char(C);
  3355. _counter=0;
  3356. C->_last_ascii_code=0;
  3357. while (!(((_counter)>(3))||(((C)->_cc)==('\57')))) {
  3358. {int iv1=(C)->_cc;
  3359. if ((48 <= iv1) && (iv1<= 57)) goto l279;
  3360. goto l280;
  3361.  l279: ;
  3362. C->_last_ascii_code=(((C)->_last_ascii_code)*(10))+(rT3value((C)->_cc));
  3363. goto l278;
  3364.  l280: ;
  3365. rT51fcp(C,(T0 *)ms163);
  3366.  l278: ;
  3367. }
  3368. _counter=(_counter)+(1);
  3369. rT51next_char(C);
  3370. }
  3371. /*IF*/if ((_counter)==(0)) {
  3372. rT51fcp(C,(T0 *)ms164);
  3373. }
  3374.  else if ((_counter)>(3)) {
  3375. rT51fcp(C,(T0 *)ms165);
  3376. }
  3377. else {
  3378. }
  3379. /*FI*/}
  3380. int rT51a_actual(T51 *C){
  3381. int R=0;
  3382. /*IF*/if (rT51skip1(C,'\44')) {
  3383. /*IF*/if (rT51a_identifier(C)) {
  3384. {T173 *n=((T173*)new(173));
  3385. /*(IRF3*/((n)->_feature_name)=(rT69to_feature_name((T69*)rT51tmp_name()));
  3386. /*)*/C->_last_expression=(T0 *)n;}R=1;
  3387. }
  3388. else {
  3389. rT51fcp(C,(T0 *)ms240);
  3390. }
  3391. /*FI*/}
  3392.  else if (rT51a_expression(C)) {
  3393. R=1;
  3394. }
  3395. /*FI*/return R;
  3396. }
  3397. T0 * rT51a_actuals(T51 *C){
  3398. T0 * R=NULL;
  3399. T0* _args=NULL;
  3400. /*IF*/if (rT51skip1(C,'\50')) {
  3401. while (!(!(rT51a_actual(C)))) {
  3402. /*IF*/if (!(_args)) {
  3403. _args=ma(81,0,1,(C)->_last_expression);
  3404. }
  3405. else {
  3406. XrT81add_last(_args,(C)->_last_expression);
  3407. }
  3408. /*FI*/C->_ok=rT51skip1(C,'\54');
  3409. }
  3410. /*IF*/if (!(_args)) {
  3411. rT51wcp(C,(T0 *)ms297);
  3412. }
  3413. else {
  3414. {T170 *n=((T170*)new(170));
  3415. /*(IRF3*/((n)->_list)=(_args);
  3416. /*)*/R=(T0 *)n;}
  3417. }
  3418. /*FI*//*IF*/if (!(rT51skip1(C,'\51'))) {
  3419. rT51fcp(C,(T0 *)ms298);
  3420. }
  3421. /*FI*/}
  3422. /*FI*/return R;
  3423. }
  3424. T0 * rT51a_clients(T51 *C){
  3425. T0 * R=NULL;
  3426. int _state=0;
  3427. T0* _list=NULL;
  3428. T0 * _sp=NULL;
  3429. /*IF*/if (rT51skip1(C,'\173')) {
  3430. {T46 *n=((T46*)new(46));
  3431. rT46make(n,(C)->_start_line,(C)->_start_column);
  3432. _sp=(T0 *)n;}
  3433. while (!((_state)>(3))) {
  3434. {int iv1=_state;
  3435. if (0 == iv1) goto l282;
  3436. goto l283;
  3437.  l282: ;
  3438. /*IF*/if (rT51a_base_class_name(C)) {
  3439. _list=ma(125,0,1,(C)->_last_class_name);
  3440. _state=2;
  3441. }
  3442.  else if (rT51skip1(C,'\175')) {
  3443. _state=4;
  3444. }
  3445.  else if (((C)->_cc)==('\54')) {
  3446. rT51wcp(C,(T0 *)ms234);
  3447. C->_ok=rT51skip1(C,'\54');
  3448. }
  3449. else {
  3450. _state=3;
  3451. }
  3452. /*FI*/goto l281;
  3453.  l283: ;
  3454. if (1 == iv1) goto l284;
  3455. goto l285;
  3456.  l284: ;
  3457. /*IF*/if (rT51a_base_class_name(C)) {
  3458. rT125add_last((T125*)_list,(C)->_last_class_name);
  3459. _state=2;
  3460. }
  3461.  else if (((C)->_cc)==('\54')) {
  3462. rT51wcp(C,(T0 *)ms234);
  3463. C->_ok=rT51skip1(C,'\54');
  3464. }
  3465.  else if (((C)->_cc)==('\175')) {
  3466. rT51wcp(C,(T0 *)ms235);
  3467. C->_ok=rT51skip1(C,'\175');
  3468. _state=4;
  3469. }
  3470. else {
  3471. _state=3;
  3472. }
  3473. /*FI*/goto l281;
  3474.  l285: ;
  3475. if (2 == iv1) goto l286;
  3476. goto l287;
  3477.  l286: ;
  3478. /*IF*/if (rT51skip1(C,'\54')) {
  3479. _state=1;
  3480. }
  3481.  else if (rT51skip1(C,'\175')) {
  3482. _state=4;
  3483. }
  3484.  else if (rT51a_base_class_name(C)) {
  3485. rT51warning(((T48*)(C)->_last_class_name)->_start_position,(T0 *)ms217);
  3486. rT125add_last((T125*)_list,(C)->_last_class_name);
  3487. }
  3488. else {
  3489. _state=3;
  3490. }
  3491. /*FI*/goto l281;
  3492.  l287: ;
  3493. rT51fcp(C,(T0 *)ms236);
  3494. _state=4;
  3495.  l281: ;
  3496. }
  3497. }
  3498. {T123 *n=((T123*)new(123));
  3499. rT123make(n,_sp,_list);
  3500. R=(T0 *)n;}
  3501. }
  3502. else {
  3503. {T123 *n=((T123*)new(123));
  3504. /*(IRF3*//*)*/R=(T0 *)n;}
  3505. }
  3506. /*FI*/return R;
  3507. }
  3508. void rT51go_back(T51 *C,T0 * a1){
  3509. rT51go_back_at(C,((T46*)a1)->_line,((T46*)a1)->_column);
  3510. }
  3511. int rT51a_real_constant(T51 *C){
  3512. int R=0;
  3513. int _old_column=0;
  3514. int _old_line=0;
  3515. _old_line=(C)->_line;
  3516. _old_column=(C)->_column;
  3517. /*IF*/if (rT51skip1(C,'\53')) {
  3518. /*IF*/if (rT51a_real(C)) {
  3519. R=1;
  3520. }
  3521. else {
  3522. rT51go_back_at(C,_old_line,_old_column);
  3523. }
  3524. /*FI*/}
  3525.  else if (rT51skip1(C,'\55')) {
  3526. /*IF*/if (rT51a_real(C)) {
  3527. C->_last_real_constant=rT79_px45((T79*)(C)->_last_real_constant);
  3528. R=1;
  3529. }
  3530. else {
  3531. rT51go_back_at(C,_old_line,_old_column);
  3532. }
  3533. /*FI*/}
  3534.  else if (rT51a_real(C)) {
  3535. R=1;
  3536. }
  3537. /*FI*/return R;
  3538. }
  3539. int rT51a_real(T51 *C){
  3540. int R=0;
  3541. float _frac_i=0;
  3542. float _frac_part=0;
  3543. int _integral_part=0;
  3544. int _back_count=0;
  3545. int _exponent_sign=0;
  3546. int _exponent=0;
  3547. int _state=0;
  3548. T0* _ts=NULL;
  3549. T0 * _sp=NULL;
  3550. /*IF*/if ((rT3is_digit((C)->_cc))||(((C)->_cc)==('\56'))) {
  3551. {T46 *n=((T46*)new(46));
  3552. rT46make(n,(C)->_line,(C)->_column);
  3553. _sp=(T0 *)n;}
  3554. _exponent_sign=1;
  3555. _frac_i=((float)1.);
  3556. /*IF*/if (((C)->_cc)==('\56')) {
  3557. _state=5;
  3558. }
  3559. else {
  3560. _integral_part=rT3value((C)->_cc);
  3561. }
  3562. /*FI*/while (!((_state)>(11))) {
  3563. rT51next_char(C);
  3564. _back_count=(_back_count)+(1);
  3565. {int iv1=_state;
  3566. if (0 == iv1) goto l289;
  3567. goto l290;
  3568.  l289: ;
  3569. {int iv2=(C)->_cc;
  3570. if ((48 <= iv2) && (iv2<= 57)) goto l292;
  3571. goto l293;
  3572.  l292: ;
  3573. _integral_part=((_integral_part)*(10))+(rT3value((C)->_cc));
  3574. goto l291;
  3575.  l293: ;
  3576. if (46 == iv2) goto l294;
  3577. goto l295;
  3578.  l294: ;
  3579. _state=4;
  3580. goto l291;
  3581.  l295: ;
  3582. _state=13;
  3583.  l291: ;
  3584. }
  3585. goto l288;
  3586.  l290: ;
  3587. if (1 == iv1) goto l296;
  3588. goto l297;
  3589.  l296: ;
  3590. {int iv2=(C)->_cc;
  3591. if ((48 <= iv2) && (iv2<= 57)) goto l299;
  3592. goto l300;
  3593.  l299: ;
  3594. _integral_part=((_integral_part)*(10))+(rT3value((C)->_cc));
  3595. _state=2;
  3596. goto l298;
  3597.  l300: ;
  3598. rT51fcp(C,(T0 *)ms171);
  3599.  l298: ;
  3600. }
  3601. goto l288;
  3602.  l297: ;
  3603. if (2 == iv1) goto l301;
  3604. goto l302;
  3605.  l301: ;
  3606. {int iv2=(C)->_cc;
  3607. if ((48 <= iv2) && (iv2<= 57)) goto l304;
  3608. goto l305;
  3609.  l304: ;
  3610. _integral_part=((_integral_part)*(10))+(rT3value((C)->_cc));
  3611. _state=3;
  3612. goto l303;
  3613.  l305: ;
  3614. rT51fcp(C,(T0 *)ms171);
  3615.  l303: ;
  3616. }
  3617. goto l288;
  3618.  l302: ;
  3619. if (3 == iv1) goto l306;
  3620. goto l307;
  3621.  l306: ;
  3622. {int iv2=(C)->_cc;
  3623. if ((48 <= iv2) && (iv2<= 57)) goto l309;
  3624. goto l310;
  3625.  l309: ;
  3626. _integral_part=((_integral_part)*(10))+(rT3value((C)->_cc));
  3627. _state=0;
  3628. goto l308;
  3629.  l310: ;
  3630. rT51fcp(C,(T0 *)ms171);
  3631.  l308: ;
  3632. }
  3633. goto l288;
  3634.  l307: ;
  3635. if (4 == iv1) goto l311;
  3636. goto l312;
  3637.  l311: ;
  3638. {int iv2=(C)->_cc;
  3639. if ((48 <= iv2) && (iv2<= 57)) goto l314;
  3640. goto l315;
  3641.  l314: ;
  3642. _frac_i=((float)10.);
  3643. _frac_part=(rT2to_real(rT3value((C)->_cc)))/(_frac_i);
  3644. _state=6;
  3645. goto l313;
  3646.  l315: ;
  3647. if (69 == iv2) goto l316;
  3648. if (101 == iv2) goto l316;
  3649. goto l317;
  3650.  l316: ;
  3651. _state=10;
  3652. goto l313;
  3653.  l317: ;
  3654. _state=12;
  3655.  l313: ;
  3656. }
  3657. goto l288;
  3658.  l312: ;
  3659. if (5 == iv1) goto l318;
  3660. goto l319;
  3661.  l318: ;
  3662. {int iv2=(C)->_cc;
  3663. if ((48 <= iv2) && (iv2<= 57)) goto l321;
  3664. goto l322;
  3665.  l321: ;
  3666. _frac_i=((float)10.);
  3667. _frac_part=(rT2to_real(rT3value((C)->_cc)))/(_frac_i);
  3668. _state=6;
  3669. goto l320;
  3670.  l322: ;
  3671. _state=13;
  3672.  l320: ;
  3673. }
  3674. goto l288;
  3675.  l319: ;
  3676. if (6 == iv1) goto l323;
  3677. goto l324;
  3678.  l323: ;
  3679. {int iv2=(C)->_cc;
  3680. if ((48 <= iv2) && (iv2<= 57)) goto l326;
  3681. goto l327;
  3682.  l326: ;
  3683. _frac_i=(_frac_i)*(((float)10.));
  3684. _frac_part=(_frac_part)+((rT2to_real(rT3value((C)->_cc)))/(_frac_i));
  3685. goto l325;
  3686.  l327: ;
  3687. if (69 == iv2) goto l328;
  3688. if (101 == iv2) goto l328;
  3689. goto l329;
  3690.  l328: ;
  3691. _state=10;
  3692. goto l325;
  3693.  l329: ;
  3694. if (95 == iv2) goto l330;
  3695. goto l331;
  3696.  l330: ;
  3697. _state=7;
  3698. goto l325;
  3699.  l331: ;
  3700. _state=12;
  3701.  l325: ;
  3702. }
  3703. goto l288;
  3704.  l324: ;
  3705. if (7 == iv1) goto l332;
  3706. goto l333;
  3707.  l332: ;
  3708. {int iv2=(C)->_cc;
  3709. if ((48 <= iv2) && (iv2<= 57)) goto l335;
  3710. goto l336;
  3711.  l335: ;
  3712. _frac_i=(_frac_i)*(((float)10.));
  3713. _frac_part=(_frac_part)+((rT2to_real(rT3value((C)->_cc)))/(_frac_i));
  3714. _state=8;
  3715. goto l334;
  3716.  l336: ;
  3717. rT51fcp(C,(T0 *)ms172);
  3718.  l334: ;
  3719. }
  3720. goto l288;
  3721.  l333: ;
  3722. if (8 == iv1) goto l337;
  3723. goto l338;
  3724.  l337: ;
  3725. {int iv2=(C)->_cc;
  3726. if ((48 <= iv2) && (iv2<= 57)) goto l340;
  3727. goto l341;
  3728.  l340: ;
  3729. _frac_i=(_frac_i)*(((float)10.));
  3730. _frac_part=(_frac_part)+((rT2to_real(rT3value((C)->_cc)))/(_frac_i));
  3731. _state=9;
  3732. goto l339;
  3733.  l341: ;
  3734. rT51fcp(C,(T0 *)ms172);
  3735.  l339: ;
  3736. }
  3737. goto l288;
  3738.  l338: ;
  3739. if (9 == iv1) goto l342;
  3740. goto l343;
  3741.  l342: ;
  3742. {int iv2=(C)->_cc;
  3743. if ((48 <= iv2) && (iv2<= 57)) goto l345;
  3744. goto l346;
  3745.  l345: ;
  3746. _frac_i=(_frac_i)*(((float)10.));
  3747. _frac_part=(_frac_part)+((rT2to_real(rT3value((C)->_cc)))/(_frac_i));
  3748. _state=6;
  3749. goto l344;
  3750.  l346: ;
  3751. rT51fcp(C,(T0 *)ms172);
  3752.  l344: ;
  3753. }
  3754. goto l288;
  3755.  l343: ;
  3756. if (10 == iv1) goto l347;
  3757. goto l348;
  3758.  l347: ;
  3759. {int iv2=(C)->_cc;
  3760. if (43 == iv2) goto l350;
  3761. goto l351;
  3762.  l350: ;
  3763. _state=11;
  3764. goto l349;
  3765.  l351: ;
  3766. if (45 == iv2) goto l352;
  3767. goto l353;
  3768.  l352: ;
  3769. _exponent_sign=-(1);
  3770. _state=11;
  3771. goto l349;
  3772.  l353: ;
  3773. if ((48 <= iv2) && (iv2<= 57)) goto l354;
  3774. goto l355;
  3775.  l354: ;
  3776. _exponent=rT3value((C)->_cc);
  3777. _state=11;
  3778. goto l349;
  3779.  l355: ;
  3780. rT51fcp(C,(T0 *)ms173);
  3781. _state=13;
  3782.  l349: ;
  3783. }
  3784. goto l288;
  3785.  l348: ;
  3786. {int iv2=(C)->_cc;
  3787. if ((48 <= iv2) && (iv2<= 57)) goto l357;
  3788. goto l358;
  3789.  l357: ;
  3790. _exponent=((_exponent)*(10))+(rT3value((C)->_cc));
  3791. goto l356;
  3792.  l358: ;
  3793. _state=12;
  3794.  l356: ;
  3795. }
  3796.  l288: ;
  3797. }
  3798. }
  3799. /*IF*/if ((_state)==(12)) {
  3800. _ts=rT7substring((T7*)(C)->_current_line,((T46*)_sp)->_column,((C)->_column)-(1));
  3801. {T79 *n=((T79*)new(79));
  3802. rT79make(n,_sp,_ts,_integral_part,_frac_part,(_exponent)*(_exponent_sign));
  3803. C->_last_real_constant=(T0 *)n;}
  3804. R=1;
  3805. rT51skip_comments(C);
  3806. }
  3807. else {
  3808. while (!((_back_count)==(0))) {
  3809. _back_count=(_back_count)-(1);
  3810. rT51prev_char(C);
  3811. }
  3812. }
  3813. /*FI*/}
  3814. /*FI*/return R;
  3815. }
  3816. void rT51go_back_at(T51 *C,int a1,int a2){
  3817. C->_line=a1;
  3818. C->_column=a2;
  3819. C->_current_line=(/*UT*/(T60*)oRBC51text,
  3820. rT60item((C)->_line));
  3821. /*IF*/if (((C)->_column)==((((T7*)(C)->_current_line)->_count)+(1))) {
  3822. C->_cc='\12';
  3823. }
  3824.  else if (((C)->_column)==(0)) {
  3825. C->_cc='\0';
  3826. }
  3827. else {
  3828. C->_cc=rT7item((T7*)(C)->_current_line,(C)->_column);
  3829. }
  3830. /*FI*/}
  3831. int rT51a_binary(T51 *C,T0 * a1){
  3832. int R=0;
  3833. R=1;
  3834. /*IF*/if (rT51skip2(C,'\74','\75')) {
  3835. {T70 *n=((T70*)new(70));
  3836. rT70make(n,(T0 *)ms92,a1);
  3837. C->_last_binary=(T0 *)n;}
  3838. }
  3839.  else if (rT51skip2(C,'\76','\75')) {
  3840. {T70 *n=((T70*)new(70));
  3841. rT70make(n,(T0 *)ms93,a1);
  3842. C->_last_binary=(T0 *)n;}
  3843. }
  3844.  else if (rT51skip2(C,'\57','\57')) {
  3845. {T70 *n=((T70*)new(70));
  3846. rT70make(n,(T0 *)ms94,a1);
  3847. C->_last_binary=(T0 *)n;}
  3848. }
  3849.  else if (rT51skip2(C,'\134','\134')) {
  3850. {T70 *n=((T70*)new(70));
  3851. rT70make(n,(T0 *)ms95,a1);
  3852. C->_last_binary=(T0 *)n;}
  3853. }
  3854.  else if (rT51skip1(C,'\53')) {
  3855. {T70 *n=((T70*)new(70));
  3856. rT70make(n,(T0 *)ms86,a1);
  3857. C->_last_binary=(T0 *)n;}
  3858. }
  3859.  else if (rT51skip1(C,'\55')) {
  3860. {T70 *n=((T70*)new(70));
  3861. rT70make(n,(T0 *)ms87,a1);
  3862. C->_last_binary=(T0 *)n;}
  3863. }
  3864.  else if (rT51skip1(C,'\52')) {
  3865. {T70 *n=((T70*)new(70));
  3866. rT70make(n,(T0 *)ms96,a1);
  3867. C->_last_binary=(T0 *)n;}
  3868. }
  3869.  else if (rT51skip1(C,'\57')) {
  3870. {T70 *n=((T70*)new(70));
  3871. rT70make(n,(T0 *)ms97,a1);
  3872. C->_last_binary=(T0 *)n;}
  3873. }
  3874.  else if (rT51skip1(C,'\76')) {
  3875. {T70 *n=((T70*)new(70));
  3876. rT70make(n,(T0 *)ms98,a1);
  3877. C->_last_binary=(T0 *)n;}
  3878. }
  3879.  else if (rT51skip1(C,'\74')) {
  3880. {T70 *n=((T70*)new(70));
  3881. rT70make(n,(T0 *)ms99,a1);
  3882. C->_last_binary=(T0 *)n;}
  3883. }
  3884.  else if (rT51skip1(C,'\136')) {
  3885. {T70 *n=((T70*)new(70));
  3886. rT70make(n,(T0 *)ms100,a1);
  3887. C->_last_binary=(T0 *)n;}
  3888. }
  3889.  else if (rT51a_keyword(C,(T0 *)ms101)) {
  3890. {T70 *n=((T70*)new(70));
  3891. rT70make(n,(T0 *)ms101,a1);
  3892. C->_last_binary=(T0 *)n;}
  3893. }
  3894.  else if (rT51a_keyword(C,(T0 *)ms102)) {
  3895. {T70 *n=((T70*)new(70));
  3896. rT70make(n,(T0 *)ms102,a1);
  3897. C->_last_binary=(T0 *)n;}
  3898. }
  3899.  else if (rT51a_keyword(C,(T0 *)ms103)) {
  3900. /*IF*/if (rT51a_keyword(C,(T0 *)ms104)) {
  3901. {T70 *n=((T70*)new(70));
  3902. rT70make(n,(T0 *)ms105,a1);
  3903. C->_last_binary=(T0 *)n;}
  3904. }
  3905. else {
  3906. {T70 *n=((T70*)new(70));
  3907. rT70make(n,(T0 *)ms103,a1);
  3908. C->_last_binary=(T0 *)n;}
  3909. }
  3910. /*FI*/}
  3911.  else if (rT51a_keyword(C,(T0 *)ms106)) {
  3912. /*IF*/if (rT51a_keyword(C,(T0 *)ms107)) {
  3913. {T70 *n=((T70*)new(70));
  3914. rT70make(n,(T0 *)ms108,a1);
  3915. C->_last_binary=(T0 *)n;}
  3916. }
  3917. else {
  3918. {T70 *n=((T70*)new(70));
  3919. rT70make(n,(T0 *)ms106,a1);
  3920. C->_last_binary=(T0 *)n;}
  3921. }
  3922. /*FI*/}
  3923. else {
  3924. C->_last_binary=NULL;
  3925. R=0;
  3926. }
  3927. /*FI*/return R;
  3928. }
  3929. int rT51a_creation(T51 *C){
  3930. int R=0;
  3931. int _state=0;
  3932. T0 * _call=NULL;
  3933. T0 * _proc_name=NULL;
  3934. T0 * _writable=NULL;
  3935. T0 * _type=NULL;
  3936. T0 * _sp=NULL;
  3937. while (!((_state)>(6))) {
  3938. {int iv1=_state;
  3939. if (0 == iv1) goto l360;
  3940. goto l361;
  3941.  l360: ;
  3942. /*IF*/if (rT51skip1(C,'\41')) {
  3943. {T46 *n=((T46*)new(46));
  3944. rT46make(n,(C)->_start_line,(C)->_start_column);
  3945. _sp=(T0 *)n;}
  3946. _state=1;
  3947. }
  3948. else {
  3949. _state=7;
  3950. }
  3951. /*FI*/goto l359;
  3952.  l361: ;
  3953. if (1 == iv1) goto l362;
  3954. goto l363;
  3955.  l362: ;
  3956. /*IF*/if (rT51a_type(C)) {
  3957. _type=(C)->_last_type;
  3958. /*IF*/if (XrT58is_anchored(_type)) {
  3959. rT51warning(XrT58start_position(_type),(T0 *)ms383);
  3960. }
  3961. /*FI*/_state=2;
  3962. }
  3963.  else if (rT51skip1(C,'\41')) {
  3964. _state=3;
  3965. }
  3966. else {
  3967. rT51fcp(C,(T0 *)ms384);
  3968. _state=8;
  3969. }
  3970. /*FI*/goto l359;
  3971.  l363: ;
  3972. if (2 == iv1) goto l364;
  3973. goto l365;
  3974.  l364: ;
  3975. /*IF*/if (rT51skip1(C,'\41')) {
  3976. _state=3;
  3977. }
  3978. else {
  3979. _state=8;
  3980. rT51fcp(C,(T0 *)ms385);
  3981. }
  3982. /*FI*/goto l359;
  3983.  l365: ;
  3984. if (3 == iv1) goto l366;
  3985. goto l367;
  3986.  l366: ;
  3987. /*IF*/if (rT51a_identifier(C)) {
  3988. /*IF*/if (rT51a_current(C)) {
  3989. _state=8;
  3990. rT51error(XrT68start_position((C)->_last_expression),(T0 *)ms386);
  3991. }
  3992.  else if (rT51a_argument(C)) {
  3993. _state=8;
  3994. rT51error(XrT68start_position((C)->_last_expression),(T0 *)ms387);
  3995. }
  3996.  else if ((rT51a_result(C))||(rT51a_local_variable(C))) {
  3997. _writable=(C)->_last_expression;
  3998. _state=4;
  3999. }
  4000. else {
  4001. _writable=rT69to_feature_name((T69*)rT51tmp_name());
  4002. _state=4;
  4003. }
  4004. /*FI*/}
  4005. else {
  4006. _state=8;
  4007. rT51fcp(C,(T0 *)ms388);
  4008. }
  4009. /*FI*/goto l359;
  4010.  l367: ;
  4011. if (4 == iv1) goto l368;
  4012. goto l369;
  4013.  l368: ;
  4014. /*IF*/if (rT51skip1unless2(C,'\56','\56')) {
  4015. _state=5;
  4016. }
  4017. else {
  4018. _state=7;
  4019. }
  4020. /*FI*/goto l359;
  4021.  l369: ;
  4022. if (5 == iv1) goto l370;
  4023. goto l371;
  4024.  l370: ;
  4025. /*IF*/if (rT51a_identifier(C)) {
  4026. _proc_name=rT69to_feature_name((T69*)rT51tmp_name());
  4027. _state=6;
  4028. }
  4029. else {
  4030. _state=8;
  4031. rT51fcp(C,(T0 *)ms389);
  4032. }
  4033. /*FI*/goto l359;
  4034.  l371: ;
  4035. /*IF*/if (((C)->_cc)==('\50')) {
  4036. _call=rT51to_proc_call(C,_writable,_proc_name,rT51a_actuals(C));
  4037. }
  4038. else {
  4039. {T178 *n=((T178*)new(178));
  4040. rT178make(n,_writable,_proc_name);
  4041. _call=(T0 *)n;}}
  4042. /*FI*/_state=7;
  4043.  l359: ;
  4044. }
  4045. }
  4046. /*IF*/if (((_state)==(7))&&(((int)_sp))) {
  4047. R=1;
  4048. /*IF*/if ((!(_type))&&(!(_call))) {
  4049. {T240 *n=((T240*)new(240));
  4050. rT240make(n,_sp,_writable);
  4051. C->_last_instruction=(T0 *)n;}}
  4052.  else if ((((int)_type))&&(!(_call))) {
  4053. {T243 *n=((T243*)new(243));
  4054. rT243make(n,_sp,_type,_writable);
  4055. C->_last_instruction=(T0 *)n;}}
  4056.  else if ((!(_type))&&(((int)_call))) {
  4057. {T245 *n=((T245*)new(245));
  4058. rT245make(n,_sp,_writable,_call);
  4059. C->_last_instruction=(T0 *)n;}}
  4060. else {
  4061. {T247 *n=((T247*)new(247));
  4062. rT247make(n,_sp,_type,_writable,_call);
  4063. C->_last_instruction=(T0 *)n;}}
  4064. /*FI*/}
  4065. /*FI*/return R;
  4066. }
  4067. void rT51a_creation_clause(T51 *C){
  4068. T0 * _creation_clause=NULL;
  4069. T0* _list=NULL;
  4070. T0 * _comments=NULL;
  4071. T0 * _clients=NULL;
  4072. _clients=rT51a_clients(C);
  4073. _comments=rT51get_comments(C);
  4074. /*IF*/if (rT51a_feature_list(C)) {
  4075. _list=(C)->_last_feature_list;
  4076. {T132 *n=((T132*)new(132));
  4077. rT132make(n,_clients,_comments,_list);
  4078. _creation_clause=(T0 *)n;}
  4079. rT50add_creation_clause((T50*)(C)->_last_base_class,_creation_clause);
  4080. }
  4081. else {
  4082. /*IF*/if ((((int)_comments))||(((int)_clients))) {
  4083. /*IF*/if (((int)_comments)) {
  4084. /*UT*/(T45*)oRBC27eh;
  4085. rT45add_position(((T59*)_comments)->_start_position);
  4086. }
  4087. /*FI*//*IF*/if (((int)_clients)) {
  4088. /*UT*/(T45*)oRBC27eh;
  4089. rT45add_position(((T123*)_clients)->_start_position);
  4090. }
  4091. /*FI*/rT45warning((T45*)oRBC27eh,(T0 *)ms252);
  4092. }
  4093. /*FI*/}
  4094. /*FI*/}
  4095. int rT51a_argument(T51 *C){
  4096. int R=0;
  4097. int _rank=0;
  4098. /*IF*/if (((int)(C)->_arguments)) {
  4099. _rank=rT92rank_of((T92*)(C)->_arguments,rT51tmp_name());
  4100. /*IF*/if ((_rank)>(0)) {
  4101. C->_last_expression=rT69to_argument_name((T69*)rT51tmp_name(),(C)->_arguments,_rank);
  4102. R=1;
  4103. }
  4104. /*FI*/}
  4105. /*FI*/return R;
  4106. }
  4107. void rT51a_after_a_dot(T51 *C,int a1,T0 * a2){
  4108. T0 * _eal=NULL;
  4109. T0 * _fn=NULL;
  4110. /*IF*/if (rT51a_identifier(C)) {
  4111. /*IF*/if (((rT51a_result(C))||(rT51a_void(C)))||(rT51a_current(C))) {
  4112. /*UT*/(T45*)oRBC27eh;
  4113. rT45add_position(XrT68start_position((C)->_last_expression));
  4114. rT45error((T45*)oRBC27eh,(T0 *)ms296);
  4115. }
  4116. /*FI*/_fn=rT69to_feature_name((T69*)rT51tmp_name());
  4117. _eal=rT51a_actuals(C);
  4118. rT51a_r10(C,a1,a2,_fn,_eal);
  4119. }
  4120. else {
  4121. rT51fcp(C,(T0 *)ms299);
  4122. }
  4123. /*FI*/}
  4124. void rT51a_redefine_list(T51 *C){
  4125. /*IF*/if (rT51a_feature_list(C)) {
  4126. rT118set_redefine((T118*)(C)->_last_parent,(C)->_last_feature_list);
  4127. }
  4128. /*FI*/}
  4129. int rT51a_index_clause(T51 *C){
  4130. int R=0;
  4131. T0 * _index_clause=NULL;
  4132. /*IF*/if (rT51a_feature_name(C)) {
  4133. R=1;
  4134. /*IF*/if (rT51skip1(C,'\72')) {
  4135. {T65 *n=((T65*)new(65));
  4136. /*(IRF3*/((n)->_index)=(XrT67to_string((C)->_last_feature_name));
  4137. /*)*/_index_clause=(T0 *)n;}
  4138. /*IF*/if (rT51a_index_value(C)) {
  4139. rT65add_index_value((T65*)_index_clause,(C)->_last_index_value);
  4140. }
  4141. else {
  4142. rT51fcp(C,(T0 *)ms176);
  4143. }
  4144. /*FI*/}
  4145. else {
  4146. {T65 *n=((T65*)new(65));
  4147. /*(IRF3*/((n)->_index)=(NULL);
  4148. /*)*/_index_clause=(T0 *)n;}
  4149. rT65add_index_value((T65*)_index_clause,(C)->_last_feature_name);
  4150. }
  4151. /*FI*/}
  4152.  else if (rT51a_manifest_constant(C)) {
  4153. R=1;
  4154. {T65 *n=((T65*)new(65));
  4155. /*(IRF3*/((n)->_index)=(NULL);
  4156. /*)*/_index_clause=(T0 *)n;}
  4157. rT65add_index_value((T65*)_index_clause,(C)->_last_manifest_constant);
  4158. }
  4159. /*FI*//*IF*/if (R) {
  4160. while (!(!(rT51skip1(C,'\54')))) {
  4161. /*IF*/if (rT51a_index_value(C)) {
  4162. rT65add_index_value((T65*)_index_clause,(C)->_last_index_value);
  4163. }
  4164. else {
  4165. rT51fcp(C,(T0 *)ms176);
  4166. }
  4167. /*FI*/}
  4168. rT50add_index_clause((T50*)(C)->_last_base_class,_index_clause);
  4169. }
  4170. /*FI*/return R;
  4171. }
  4172. void rT51a_index_list(T51 *C){
  4173. while (!(!(rT51a_index_clause(C)))) {
  4174. C->_ok=rT51skip1(C,'\73');
  4175. }
  4176. }
  4177. void rT51a_indexing(T51 *C){
  4178. /*IF*/if (rT51a_keyword(C,(T0 *)ms80)) {
  4179. rT51a_index_list(C);
  4180. }
  4181. /*FI*/}
  4182. int rT51a_index_value(T51 *C){
  4183. int R=0;
  4184. /*IF*/if (rT51a_feature_name(C)) {
  4185. C->_last_index_value=(C)->_last_feature_name;
  4186. R=1;
  4187. }
  4188.  else if (rT51a_manifest_constant(C)) {
  4189. C->_last_index_value=(C)->_last_manifest_constant;
  4190. R=1;
  4191. }
  4192. /*FI*/return R;
  4193. }
  4194. int rT51a_tag_mark(T51 *C){
  4195. int R=0;
  4196. /*IF*/if (rT51a_identifier(C)) {
  4197. /*IF*/if (rT51skip1unless2(C,'\72','\75')) {
  4198. R=1;
  4199. C->_last_tag_mark=rT69to_tag_name((T69*)rT51tmp_name());
  4200. }
  4201. else {
  4202. C->_last_tag_mark=NULL;
  4203. rT51go_back_at(C,((T69*)rT51tmp_name())->_li,((T69*)rT51tmp_name())->_co);
  4204. }
  4205. /*FI*/}
  4206. else {
  4207. C->_last_tag_mark=NULL;
  4208. }
  4209. /*FI*/return R;
  4210. }
  4211. int rT51a_manifest_constant(T51 *C){
  4212. int R=0;
  4213. /*IF*/if (rT51a_boolean_constant(C)) {
  4214. C->_last_manifest_constant=(C)->_last_boolean_constant;
  4215. R=1;
  4216. }
  4217.  else if (rT51a_character_constant(C)) {
  4218. C->_last_manifest_constant=(C)->_last_character_constant;
  4219. R=1;
  4220. }
  4221.  else if (rT51a_manifest_string(C)) {
  4222. C->_last_manifest_constant=(C)->_last_manifest_string;
  4223. R=1;
  4224. }
  4225.  else if (rT51a_bit_constant(C)) {
  4226. C->_last_manifest_constant=(C)->_last_bit_constant;
  4227. R=1;
  4228. }
  4229.  else if (rT51a_real_constant(C)) {
  4230. C->_last_manifest_constant=(C)->_last_real_constant;
  4231. R=1;
  4232. }
  4233.  else if (rT51a_integer_constant(C)) {
  4234. C->_last_manifest_constant=(C)->_last_integer_constant;
  4235. R=1;
  4236. }
  4237. /*FI*/return R;
  4238. }
  4239. int rT51a_manifest_string(T51 *C){
  4240. int R=0;
  4241. int _state=0;
  4242. /*IF*/if (((C)->_cc)==('\42')) {
  4243. R=1;
  4244. {T76 *n=((T76*)new(76));
  4245. rT76make(n,rT51pos((C)->_line,(C)->_column));
  4246. C->_last_manifest_string=(T0 *)n;}
  4247. while (!((_state)>(3))) {
  4248. rT51next_char(C);
  4249. {int iv1=_state;
  4250. if (0 == iv1) goto l373;
  4251. goto l374;
  4252.  l373: ;
  4253. {int iv2=(C)->_cc;
  4254. if (10 == iv2) goto l376;
  4255. goto l377;
  4256.  l376: ;
  4257. rT51fcp(C,(T0 *)ms167);
  4258. goto l375;
  4259.  l377: ;
  4260. if (34 == iv2) goto l378;
  4261. goto l379;
  4262.  l378: ;
  4263. _state=4;
  4264. goto l375;
  4265.  l379: ;
  4266. if (37 == iv2) goto l380;
  4267. goto l381;
  4268.  l380: ;
  4269. _state=1;
  4270. goto l375;
  4271.  l381: ;
  4272. rT76add((T76*)(C)->_last_manifest_string,(C)->_cc);
  4273.  l375: ;
  4274. }
  4275. goto l372;
  4276.  l374: ;
  4277. if (1 == iv1) goto l382;
  4278. goto l383;
  4279.  l382: ;
  4280. _state=0;
  4281. {int iv2=(C)->_cc;
  4282. if (10 == iv2) goto l385;
  4283. goto l386;
  4284.  l385: ;
  4285. _state=3;
  4286. goto l384;
  4287.  l386: ;
  4288. if (65 == iv2) goto l387;
  4289. goto l388;
  4290.  l387: ;
  4291. rT76add_percent((T76*)(C)->_last_manifest_string,'\100');
  4292. goto l384;
  4293.  l388: ;
  4294. if (66 == iv2) goto l389;
  4295. goto l390;
  4296.  l389: ;
  4297. rT76add_percent((T76*)(C)->_last_manifest_string,'\10');
  4298. goto l384;
  4299.  l390: ;
  4300. if (67 == iv2) goto l391;
  4301. goto l392;
  4302.  l391: ;
  4303. rT76add_percent((T76*)(C)->_last_manifest_string,'\136');
  4304. goto l384;
  4305.  l392: ;
  4306. if (68 == iv2) goto l393;
  4307. goto l394;
  4308.  l393: ;
  4309. rT76add_percent((T76*)(C)->_last_manifest_string,'\44');
  4310. goto l384;
  4311.  l394: ;
  4312. if (70 == iv2) goto l395;
  4313. goto l396;
  4314.  l395: ;
  4315. rT76add_percent((T76*)(C)->_last_manifest_string,'\14');
  4316. goto l384;
  4317.  l396: ;
  4318. if (72 == iv2) goto l397;
  4319. goto l398;
  4320.  l397: ;
  4321. rT76add_percent((T76*)(C)->_last_manifest_string,'\134');
  4322. goto l384;
  4323.  l398: ;
  4324. if (76 == iv2) goto l399;
  4325. goto l400;
  4326.  l399: ;
  4327. rT76add_percent((T76*)(C)->_last_manifest_string,'\176');
  4328. goto l384;
  4329.  l400: ;
  4330. if (78 == iv2) goto l401;
  4331. goto l402;
  4332.  l401: ;
  4333. rT76add_percent((T76*)(C)->_last_manifest_string,'\12');
  4334. goto l384;
  4335.  l402: ;
  4336. if (81 == iv2) goto l403;
  4337. goto l404;
  4338.  l403: ;
  4339. rT76add_percent((T76*)(C)->_last_manifest_string,'\140');
  4340. goto l384;
  4341.  l404: ;
  4342. if (82 == iv2) goto l405;
  4343. goto l406;
  4344.  l405: ;
  4345. rT76add_percent((T76*)(C)->_last_manifest_string,'\15');
  4346. goto l384;
  4347.  l406: ;
  4348. if (83 == iv2) goto l407;
  4349. goto l408;
  4350.  l407: ;
  4351. rT76add_percent((T76*)(C)->_last_manifest_string,'\43');
  4352. goto l384;
  4353.  l408: ;
  4354. if (84 == iv2) goto l409;
  4355. goto l410;
  4356.  l409: ;
  4357. rT76add_percent((T76*)(C)->_last_manifest_string,'\11');
  4358. goto l384;
  4359.  l410: ;
  4360. if (85 == iv2) goto l411;
  4361. goto l412;
  4362.  l411: ;
  4363. rT76add_percent((T76*)(C)->_last_manifest_string,'\0');
  4364. goto l384;
  4365.  l412: ;
  4366. if (86 == iv2) goto l413;
  4367. goto l414;
  4368.  l413: ;
  4369. rT76add_percent((T76*)(C)->_last_manifest_string,'\174');
  4370. goto l384;
  4371.  l414: ;
  4372. if (37 == iv2) goto l415;
  4373. goto l416;
  4374.  l415: ;
  4375. rT76add_percent((T76*)(C)->_last_manifest_string,'\45');
  4376. goto l384;
  4377.  l416: ;
  4378. if (39 == iv2) goto l417;
  4379. goto l418;
  4380.  l417: ;
  4381. rT76add_percent((T76*)(C)->_last_manifest_string,'\47');
  4382. goto l384;
  4383.  l418: ;
  4384. if (34 == iv2) goto l419;
  4385. goto l420;
  4386.  l419: ;
  4387. rT76add_percent((T76*)(C)->_last_manifest_string,'\42');
  4388. goto l384;
  4389.  l420: ;
  4390. if (40 == iv2) goto l421;
  4391. goto l422;
  4392.  l421: ;
  4393. rT76add_percent((T76*)(C)->_last_manifest_string,'\133');
  4394. goto l384;
  4395.  l422: ;
  4396. if (41 == iv2) goto l423;
  4397. goto l424;
  4398.  l423: ;
  4399. rT76add_percent((T76*)(C)->_last_manifest_string,'\135');
  4400. goto l384;
  4401.  l424: ;
  4402. if (60 == iv2) goto l425;
  4403. goto l426;
  4404.  l425: ;
  4405. rT76add_percent((T76*)(C)->_last_manifest_string,'\173');
  4406. goto l384;
  4407.  l426: ;
  4408. if (62 == iv2) goto l427;
  4409. goto l428;
  4410.  l427: ;
  4411. rT76add_percent((T76*)(C)->_last_manifest_string,'\175');
  4412. goto l384;
  4413.  l428: ;
  4414. if (47 == iv2) goto l429;
  4415. goto l430;
  4416.  l429: ;
  4417. rT51a_ascii_code(C);
  4418. rT76add_ascii((T76*)(C)->_last_manifest_string,(C)->_last_ascii_code);
  4419. goto l384;
  4420.  l430: ;
  4421. if (9 == iv2) goto l431;
  4422. if (32 == iv2) goto l431;
  4423. goto l432;
  4424.  l431: ;
  4425. _state=2;
  4426. goto l384;
  4427.  l432: ;
  4428. rT51fcp(C,(T0 *)ms168);
  4429. _state=0;
  4430.  l384: ;
  4431. }
  4432. goto l372;
  4433.  l383: ;
  4434. if (2 == iv1) goto l433;
  4435. goto l434;
  4436.  l433: ;
  4437. {int iv2=(C)->_cc;
  4438. if (10 == iv2) goto l436;
  4439. goto l437;
  4440.  l436: ;
  4441. _state=3;
  4442. goto l435;
  4443.  l437: ;
  4444. if (9 == iv2) goto l438;
  4445. if (32 == iv2) goto l438;
  4446. goto l439;
  4447.  l438: ;
  4448. goto l435;
  4449.  l439: ;
  4450. rT51fcp(C,(T0 *)ms169);
  4451.  l435: ;
  4452. }
  4453. goto l372;
  4454.  l434: ;
  4455. {int iv2=(C)->_cc;
  4456. if (9 == iv2) goto l441;
  4457. if (32 == iv2) goto l441;
  4458. goto l442;
  4459.  l441: ;
  4460. goto l440;
  4461.  l442: ;
  4462. if (37 == iv2) goto l443;
  4463. goto l444;
  4464.  l443: ;
  4465. rT76break_line((T76*)(C)->_last_manifest_string);
  4466. _state=0;
  4467. goto l440;
  4468.  l444: ;
  4469. if (10 == iv2) goto l445;
  4470. goto l446;
  4471.  l445: ;
  4472. rT51fcp(C,(T0 *)ms167);
  4473. _state=0;
  4474. goto l440;
  4475.  l446: ;
  4476. rT51fcp(C,(T0 *)ms170);
  4477. _state=0;
  4478.  l440: ;
  4479. }
  4480.  l372: ;
  4481. }
  4482. }
  4483. rT51next_char(C);
  4484. rT51skip_comments(C);
  4485. }
  4486. /*FI*/return R;
  4487. }
  4488. int rT51a_infix(T51 *C){
  4489. int R=0;
  4490. T0 * _sp=NULL;
  4491. /*IF*/if (rT51a_keyword(C,(T0 *)ms90)) {
  4492. R=1;
  4493. {T46 *n=((T46*)new(46));
  4494. rT46make(n,(C)->_start_line,(C)->_start_column);
  4495. _sp=(T0 *)n;}
  4496. /*IF*/if (((C)->_cc)==('\42')) {
  4497. rT51next_char(C);
  4498. }
  4499. else {
  4500. rT51wcp(C,(T0 *)ms91);
  4501. }
  4502. /*FI*//*IF*/if (rT51a_binary(C,_sp)) {
  4503. C->_last_infix=(C)->_last_binary;
  4504. }
  4505.  else if (rT51a_free_operator(C)) {
  4506. C->_last_infix=rT69to_infix_name((T69*)rT51tmp_operator(),_sp);
  4507. }
  4508. else {
  4509. rT51fcp(C,(T0 *)ms109);
  4510. }
  4511. /*FI*//*IF*/if (!(rT51skip1(C,'\42'))) {
  4512. rT51wcp(C,(T0 *)ms110);
  4513. }
  4514. /*FI*/}
  4515. /*FI*/return R;
  4516. }
  4517. int rT51a_free_operator(T51 *C){
  4518. int R=0;
  4519. /*IF*/if ((((((C)->_cc)==('\100'))||(((C)->_cc)==('\43')))||(((C)->_cc)==('\174')))||(((C)->_cc)==('\46'))) {
  4520. R=1;
  4521. rT69make((T69*)rT51tmp_operator(),(C)->_line,(C)->_column);
  4522. rT69extend((T69*)rT51tmp_operator(),(C)->_cc);
  4523. rT51next_char(C);
  4524. while (!((((((C)->_cc)==('\12'))||(((C)->_cc)==('\40')))||(((C)->_cc)==('\11')))||(((C)->_cc)==('\42')))) {
  4525. rT69extend((T69*)rT51tmp_operator(),(C)->_cc);
  4526. rT51next_char(C);
  4527. }
  4528. rT51skip_comments(C);
  4529. }
  4530. /*FI*/return R;
  4531. }
  4532. void rT51a_local_var_list(T51 *C,T0 * a1){
  4533. int _state=0;
  4534. int _rank=0;
  4535. T0* _list=NULL;
  4536. T0 * _declaration=NULL;
  4537. T0* _name_list=NULL;
  4538. T0 * _name=NULL;
  4539. while (!((_state)>(4))) {
  4540. {int iv1=_state;
  4541. if (0 == iv1) goto l448;
  4542. goto l449;
  4543.  l448: ;
  4544. /*IF*/if (rT51a_identifier(C)) {
  4545. _name=rT69to_decl_name((T69*)rT51tmp_name());
  4546. _state=1;
  4547. /*IF*/if (((int)(C)->_arguments)) {
  4548. _rank=rT92rank_of((T92*)(C)->_arguments,_name);
  4549. /*IF*/if ((_rank)>(0)) {
  4550. /*UT*/(T45*)oRBC27eh;
  4551. rT45add_position(((T97*)_name)->_start_position);
  4552. /*UT*/(T45*)oRBC27eh;
  4553. rT45add_position(XrT49start_position(rT92name((T92*)(C)->_arguments,_rank)));
  4554. rT45error((T45*)oRBC27eh,(T0 *)ms328);
  4555. }
  4556. /*FI*/}
  4557. /*FI*/}
  4558.  else if ((((C)->_cc)==('\54'))||(((C)->_cc)==('\73'))) {
  4559. rT51wcp(C,(T0 *)ms258);
  4560. C->_ok=(rT51skip1(C,'\54'))||(rT51skip1(C,'\73'));
  4561. }
  4562. else {
  4563. _state=5;
  4564. }
  4565. /*FI*/goto l447;
  4566.  l449: ;
  4567. if (1 == iv1) goto l450;
  4568. goto l451;
  4569.  l450: ;
  4570. /*IF*/if (rT51skip1(C,'\72')) {
  4571. /*IF*/if (((int)_name_list)) {
  4572. rT141add_last((T141*)_name_list,_name);
  4573. _name=NULL;
  4574. }
  4575. /*FI*/_state=3;
  4576. }
  4577. else {
  4578. /*IF*/if (((C)->_cc)==('\73')) {
  4579. rT51wcp(C,(T0 *)ms329);
  4580. C->_ok=rT51skip1(C,'\73');
  4581. }
  4582. else {
  4583. C->_ok=rT51skip1(C,'\54');
  4584. }
  4585. /*FI*//*IF*/if (!(_name_list)) {
  4586. _name_list=ma(141,0,1,_name);
  4587. }
  4588. else {
  4589. rT141add_last((T141*)_name_list,_name);
  4590. }
  4591. /*FI*/_name=NULL;
  4592. _state=2;
  4593. }
  4594. /*FI*/goto l447;
  4595.  l451: ;
  4596. if (2 == iv1) goto l452;
  4597. goto l453;
  4598.  l452: ;
  4599. /*IF*/if (rT51a_identifier(C)) {
  4600. _name=rT69to_decl_name((T69*)rT51tmp_name());
  4601. _state=1;
  4602. /*IF*/if (((int)(C)->_arguments)) {
  4603. _rank=rT92rank_of((T92*)(C)->_arguments,_name);
  4604. /*IF*/if ((_rank)>(0)) {
  4605. /*UT*/(T45*)oRBC27eh;
  4606. rT45add_position(((T97*)_name)->_start_position);
  4607. /*UT*/(T45*)oRBC27eh;
  4608. rT45add_position(XrT49start_position(rT92name((T92*)(C)->_arguments,_rank)));
  4609. rT45error((T45*)oRBC27eh,(T0 *)ms330);
  4610. }
  4611. /*FI*/}
  4612. /*FI*/}
  4613.  else if ((((C)->_cc)==('\54'))||(((C)->_cc)==('\73'))) {
  4614. rT51wcp(C,(T0 *)ms258);
  4615. C->_ok=(rT51skip1(C,'\54'))||(rT51skip1(C,'\73'));
  4616. }
  4617. else {
  4618. _state=6;
  4619. }
  4620. /*FI*/goto l447;
  4621.  l453: ;
  4622. if (3 == iv1) goto l454;
  4623. goto l455;
  4624.  l454: ;
  4625. /*IF*/if (rT51a_type(C)) {
  4626. /*IF*/if (((int)_name_list)) {
  4627. {T142 *n=((T142*)new(142));
  4628. rT142make(n,_name_list,(C)->_last_type);
  4629. _declaration=(T0 *)n;}_name_list=NULL;
  4630. }
  4631. else {
  4632. {T94 *n=((T94*)new(94));
  4633. rT94make(n,_name,(C)->_last_type);
  4634. _declaration=(T0 *)n;}_name=NULL;
  4635. }
  4636. /*FI*//*IF*/if (!(_list)) {
  4637. _list=ma(143,0,1,_declaration);
  4638. }
  4639. else {
  4640. XrT143add_last(_list,_declaration);
  4641. }
  4642. /*FI*/_state=4;
  4643. }
  4644. else {
  4645. _state=6;
  4646. }
  4647. /*FI*/goto l447;
  4648.  l455: ;
  4649. /*IF*/if (((C)->_cc)==('\54')) {
  4650. rT51wcp(C,(T0 *)ms331);
  4651. C->_ok=rT51skip1(C,'\54');
  4652. _state=0;
  4653. }
  4654. else {
  4655. C->_ok=rT51skip1(C,'\73');
  4656. _state=0;
  4657. }
  4658. /*FI*/ l447: ;
  4659. }
  4660. }
  4661. /*IF*/if ((_state)==(6)) {
  4662. rT51fcp(C,(T0 *)ms332);
  4663. }
  4664.  else if (((int)_list)) {
  4665. {T139 *n=((T139*)new(139));
  4666. rT139make(n,a1,_list);
  4667. C->_local_vars=(T0 *)n;}
  4668. /*(IRF3*/(((T136*)oRBC51tmp_feature)->_local_vars)=((C)->_local_vars);
  4669. /*)*/}
  4670. /*FI*/}
  4671. int rT51a_local_variable(T51 *C){
  4672. int R=0;
  4673. int _rank=0;
  4674. /*IF*/if (((int)(C)->_local_vars)) {
  4675. _rank=rT139rank_of((T139*)(C)->_local_vars,rT51tmp_name());
  4676. /*IF*/if ((_rank)>(0)) {
  4677. C->_last_expression=rT69to_local_name((T69*)rT51tmp_name(),(C)->_local_vars,_rank);
  4678. R=1;
  4679. }
  4680. /*FI*/}
  4681. /*FI*/return R;
  4682. }
  4683. T0 * rT51a_compound2(T51 *C,T0* a1,T0* a2){
  4684. T0 * R=NULL;
  4685. T0 * _instruction=NULL;
  4686. T0* _list=NULL;
  4687. T0 * _hc=NULL;
  4688. _hc=rT51get_comments(C);
  4689. while (!(((C)->_cc)!=('\73'))) {
  4690. rT51wcp(C,(T0 *)ms238);
  4691. C->_ok=rT51skip1(C,'\73');
  4692. }
  4693. while (!((!(rT51a_instruction(C)))||((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)>(10)))) {
  4694. _instruction=(C)->_last_instruction;
  4695. /*IF*/if (((C)->_cc)==('\50')) {
  4696. rT51wcp(C,(T0 *)ms242);
  4697. }
  4698. /*FI*/C->_ok=rT51skip1(C,'\73');
  4699. while (!(((C)->_cc)!=('\73'))) {
  4700. rT51wcp(C,(T0 *)ms238);
  4701. C->_ok=rT51skip1(C,'\73');
  4702. }
  4703. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  4704. /*IF*/if (!(_list)) {
  4705. _list=ma(217,0,1,XrT176add_comment(_instruction,rT51get_comments(C)));
  4706. }
  4707. else {
  4708. rT217add_last((T217*)_list,XrT176add_comment(_instruction,rT51get_comments(C)));
  4709. }
  4710. /*FI*/}
  4711. /*FI*/}
  4712. /*IF*/if (!(rT51a_keyword(C,a2))) {
  4713. /*UT*/(T45*)oRBC27eh;
  4714. rT45append((T0 *)ms349);
  4715. /*UT*/(T45*)oRBC27eh;
  4716. rT45append(a1);
  4717. /*UT*/(T45*)oRBC27eh;
  4718. rT45append((T0 *)ms350);
  4719. /*UT*/(T45*)oRBC27eh;
  4720. rT45append(a2);
  4721. rT51fcp(C,(T0 *)ms351);
  4722. }
  4723. /*FI*//*IF*/if ((((int)_hc))||(((int)_list))) {
  4724. {T140 *n=((T140*)new(140));
  4725. rT140make(n,_hc,_list);
  4726. R=(T0 *)n;}
  4727. }
  4728. /*FI*/return R;
  4729. }
  4730. T0 * rT51a_compound1(T51 *C,T0* a1){
  4731. T0 * R=NULL;
  4732. T0 * _instruction=NULL;
  4733. T0* _list=NULL;
  4734. T0 * _hc=NULL;
  4735. _hc=rT51get_comments(C);
  4736. while (!(((C)->_cc)!=('\73'))) {
  4737. rT51wcp(C,(T0 *)ms238);
  4738. C->_ok=rT51skip1(C,'\73');
  4739. }
  4740. while (!((!(rT51a_instruction(C)))||((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)>(10)))) {
  4741. _instruction=(C)->_last_instruction;
  4742. /*IF*/if (((C)->_cc)==('\50')) {
  4743. rT51wcp(C,(T0 *)ms242);
  4744. }
  4745. /*FI*/C->_ok=rT51skip1(C,'\73');
  4746. while (!(((C)->_cc)!=('\73'))) {
  4747. rT51wcp(C,(T0 *)ms238);
  4748. C->_ok=rT51skip1(C,'\73');
  4749. }
  4750. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  4751. /*IF*/if (!(_list)) {
  4752. _list=ma(217,0,1,XrT176add_comment(_instruction,rT51get_comments(C)));
  4753. }
  4754. else {
  4755. rT217add_last((T217*)_list,XrT176add_comment(_instruction,rT51get_comments(C)));
  4756. }
  4757. /*FI*/}
  4758. /*FI*/}
  4759. /*IF*/if ((((int)_hc))||(((int)_list))) {
  4760. {T140 *n=((T140*)new(140));
  4761. rT140make(n,_hc,_list);
  4762. R=(T0 *)n;}
  4763. }
  4764. /*FI*/return R;
  4765. }
  4766. int rT51a_bit_constant(T51 *C){
  4767. int R=0;
  4768. T0* _sequence=NULL;
  4769. int _state=0;
  4770. /*IF*/if ((((C)->_cc)==('0'))||(((C)->_cc)==('1'))) {
  4771. {T7 *n=((T7*)new(7));
  4772. rT7make(n,16);
  4773. _sequence=(T0 *)n;}
  4774. rT7extend((T7*)_sequence,(C)->_cc);
  4775. while (!((_state)>(0))) {
  4776. rT51next_char(C);
  4777. {int iv1=(C)->_cc;
  4778. if ((48 <= iv1) && (iv1<= 49)) goto l457;
  4779. goto l458;
  4780.  l457: ;
  4781. rT7extend((T7*)_sequence,(C)->_cc);
  4782. goto l456;
  4783.  l458: ;
  4784. if (66 == iv1) goto l459;
  4785. if (98 == iv1) goto l459;
  4786. goto l460;
  4787.  l459: ;
  4788. {T77 *n=((T77*)new(77));
  4789. /*(IRF3*/((n)->_value)=(_sequence);
  4790. /*)*/C->_last_bit_constant=(T0 *)n;}
  4791. rT51next_char(C);
  4792. rT51skip_comments(C);
  4793. _state=1;
  4794. R=1;
  4795. goto l456;
  4796.  l460: ;
  4797. _state=((T7*)_sequence)->_count;
  4798. while (!((_state)==(0))) {
  4799. _state=(_state)-(1);
  4800. rT51prev_char(C);
  4801. }
  4802. _state=2;
  4803.  l456: ;
  4804. }
  4805. }
  4806. }
  4807. /*FI*/return R;
  4808. }
  4809. int rT44invariant_check(T44 *C){
  4810. int R=0;
  4811. R=((C)->_level)>=(-2);
  4812. return R;
  4813. }
  4814. int rT44require_check(T44 *C){
  4815. int R=0;
  4816. R=((C)->_level)>=(-4);
  4817. return R;
  4818. }
  4819. int rT44boost(T44 *C){
  4820. int R=0;
  4821. R=((C)->_level)==(-6);
  4822. return R;
  4823. }
  4824. int rT44no_check(T44 *C){
  4825. int R=0;
  4826. R=((C)->_level)>=(-5);
  4827. return R;
  4828. }
  4829. void rT44set_all_check(T44 *C){
  4830. C->_level=0;
  4831. }
  4832. int rT44ensure_check(T44 *C){
  4833. int R=0;
  4834. R=((C)->_level)>=(-3);
  4835. return R;
  4836. }
  4837. void rT44set_boost(T44 *C){
  4838. C->_level=-6;
  4839. }
  4840. void rT44set_debug_check(T44 *C){
  4841. C->_level=1;
  4842. }
  4843. void rT44set_ensure_check(T44 *C){
  4844. C->_level=-3;
  4845. }
  4846. void rT44set_invariant_check(T44 *C){
  4847. C->_level=-2;
  4848. }
  4849. void rT44set_loop_check(T44 *C){
  4850. C->_level=-1;
  4851. }
  4852. int rT44loop_check(T44 *C){
  4853. int R=0;
  4854. R=((C)->_level)>=(-1);
  4855. return R;
  4856. }
  4857. void rT44set_no_check(T44 *C){
  4858. C->_level=-5;
  4859. }
  4860. void rT44copy(T44 *C,T0 * a1){
  4861. /*IF*//*AF*//*AE*/
  4862. memcpy(C,a1,s[C->id]);
  4863. /*FI*/}
  4864.