ati3d.rig 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #WW $w:=$dd ##
  2. -------------------------------------------------------
  3. #G_INIT_GLOB
  4. -- inicializaciq LAST per., krome glawn.prawila
  5. / $TABL := LAST #C $LAST_VARIABLES;
  6. GEN << '/* inicializaciq LAST-perem.*/';
  7. FORALL $X IN $TABL DO
  8. IF $X<> LAST #G_programma $imq_gl ->
  9. $VARS := $TABL .$X;
  10. $NOM := LAST #C $RULENUM .$X;
  11. FORALL $Y IN $VARS DO
  12. GEN<< @ glob $NOM '_' $VARS .$Y
  13. '.sa=NULL;'
  14. OD
  15. FI
  16. OD /
  17. ##
  18. -------------------------------------------------------
  19. #GEN_ATOM_INITIALIZATION
  20. -- generaciq procedury XCRG_N.PAS
  21. -- priwqzka skompilirowannoj programmy k A -prostranstwu
  22. $LISTACON $LISTACOP
  23. /
  24. OPEN FF 'xcrga.h';
  25. FF<<'/* Local variables for acon: */ ';
  26. FF<<'struct LOC_acon {a k;allpacked r;} ;';
  27. FF<<'Local Void uc(l, cn, dt, LINK) ';
  28. FF<<'long l, cn; char dt; ';
  29. FF<<'struct LOC_acon *LINK; ';
  30. FF<<'{ putatm(LINK->r.bl, l, &LINK->k); ';
  31. FF<<' mkatom(LINK->k, dt, &cnst[cn ].sa);}';
  32. FF<<'Static Void acon() ';
  33. FF<<'{ struct LOC_acon V; mpd x; ';
  34. FF<<' mainlistdescriptor *WITH; ';
  35. #ACON_LIST(' ' $LISTACON); -- zapolnenie massiwa
  36. -- sozdanie deskriptora spiska dliny 1
  37. -- dlq wyzowa prawil s odnim argumentom
  38. FF<<' gets5(&cnst['#LEN( LAST #C $CONSTANT_LIST)+1'].sa, &x.sa);';
  39. FF<<' WITH = x.smld; ';
  40. FF<<' WITH->dtype = listmain; ';
  41. FF<<' WITH->elnum = 1; ';
  42. FF<<' WITH->totalelnum = 1; ';
  43. FF<<' WITH->name = null_; ';
  44. FF<<' WITH->next = null_;} ';
  45. FF<<'/* Local variables for acop: */ ';
  46. FF<<'struct LOC_acop { allpacked r;} ; ';
  47. FF<<'Local Void uc_(l, cn, dt, LINK) ';
  48. FF<<'long l, cn; char dt; ';
  49. FF<<'struct LOC_acop *LINK; ';
  50. FF<<'{putatm(LINK->r.bl, l, &acnst[cn ]);} ';
  51. FF<<'Static Void acop() ';
  52. FF<<'{struct LOC_acop V; ';
  53. #ACON_LIST('_' $LISTACOP); -- spisok
  54. FF << '}';
  55. CLOSE FF /
  56. ##
  57. #ACON_LIST $MARK
  58. (. (* $E / $I +:=1;
  59. $LEN := #LEN( $E);
  60. IF $LEN=1->
  61. IF ($E='\')OR($E='''')-> FF<< @ 'V.r.p1=''\' $E ''';';
  62. ELSIF T-> FF<< @ 'V.r.p1=''' $E ''';';
  63. FI;
  64. ELSIF T-> FF<<@'memcpy(V.r.p' $LEN ',' #CALL_PAS(116 $E) ',' $LEN 'L);';
  65. FI;
  66. IF #IDENT($E) -> $ID:=idatom ELSIF T-> $ID:=atom FI;
  67. FF<<@'uc' $MARK '(' $LEN 'L,' $I 'L,' $ID ',&V);';
  68. / *) .)
  69. / RETURN $I / ##
  70. ----------------------------------------------------------------------
  71. #G_COMMON_PART
  72. /
  73. OPEN DDD 'xcrg.h';
  74. DDD<<@ 'v cnst[' #LEN( LAST #C $CONSTANT_LIST)+2 '];';
  75. DDD<<@ 'a acnst[' #LEN( LAST #C $A_CONSTANT_LIST)+1 '];';
  76. FORALL $P IN LAST #C $LAST_VARIABLES DO
  77. $X:= LAST #C $LAST_VARIABLES .$P;
  78. FORALL $VAR IN $X DO
  79. DDD<< @ 'v glob' LAST #C $RULENUM .$P '_'
  80. $X. $VAR ';'
  81. OD OD ;
  82. $N:= #LEN( LAST #C $RULENUM);
  83. $U:= LAST #C $B[4];
  84. $X:=2;
  85. LOOP
  86. IF $X > $N -> BREAK FI;
  87. DDD<<@ 'extern Void r' $X
  88. ' PP((long *rez, boolean *success, ptr_ *pl));';
  89. $X +:=1
  90. END;
  91. CLOSE DDD /
  92. ##