| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #WW $w:=$dd ##
- -------------------------------------------------------
- #G_INIT_GLOB
- -- inicializaciq LAST per., krome glawn.prawila
- / $TABL := LAST #C $LAST_VARIABLES;
- GEN << '/* inicializaciq LAST-perem.*/';
- FORALL $X IN $TABL DO
- IF $X<> LAST #G_programma $imq_gl ->
- $VARS := $TABL .$X;
- $NOM := LAST #C $RULENUM .$X;
- FORALL $Y IN $VARS DO
- GEN<< @ glob $NOM '_' $VARS .$Y
- '.sa=NULL;'
- OD
- FI
- OD /
- ##
- -------------------------------------------------------
- #GEN_ATOM_INITIALIZATION
- -- generaciq procedury XCRG_N.PAS
- -- priwqzka skompilirowannoj programmy k A -prostranstwu
- $LISTACON $LISTACOP
- /
- OPEN FF 'xcrga.h';
- FF<<'/* Local variables for acon: */ ';
- FF<<'struct LOC_acon {a k;allpacked r;} ;';
- FF<<'Local Void uc(l, cn, dt, LINK) ';
- FF<<'long l, cn; char dt; ';
- FF<<'struct LOC_acon *LINK; ';
- FF<<'{ putatm(LINK->r.bl, l, &LINK->k); ';
- FF<<' mkatom(LINK->k, dt, &cnst[cn ].sa);}';
- FF<<'Static Void acon() ';
- FF<<'{ struct LOC_acon V; mpd x; ';
- FF<<' mainlistdescriptor *WITH; ';
- #ACON_LIST(' ' $LISTACON); -- zapolnenie massiwa
- -- sozdanie deskriptora spiska dliny 1
- -- dlq wyzowa prawil s odnim argumentom
- FF<<' gets5(&cnst['#LEN( LAST #C $CONSTANT_LIST)+1'].sa, &x.sa);';
- FF<<' WITH = x.smld; ';
- FF<<' WITH->dtype = listmain; ';
- FF<<' WITH->elnum = 1; ';
- FF<<' WITH->totalelnum = 1; ';
- FF<<' WITH->name = null_; ';
- FF<<' WITH->next = null_;} ';
- FF<<'/* Local variables for acop: */ ';
- FF<<'struct LOC_acop { allpacked r;} ; ';
- FF<<'Local Void uc_(l, cn, dt, LINK) ';
- FF<<'long l, cn; char dt; ';
- FF<<'struct LOC_acop *LINK; ';
- FF<<'{putatm(LINK->r.bl, l, &acnst[cn ]);} ';
- FF<<'Static Void acop() ';
- FF<<'{struct LOC_acop V; ';
- #ACON_LIST('_' $LISTACOP); -- spisok
- FF << '}';
- CLOSE FF /
- ##
- #ACON_LIST $MARK
- (. (* $E / $I +:=1;
- $LEN := #LEN( $E);
- IF $LEN=1->
- IF ($E='\')OR($E='''')-> FF<< @ 'V.r.p1=''\' $E ''';';
- ELSIF T-> FF<< @ 'V.r.p1=''' $E ''';';
- FI;
- ELSIF T-> FF<<@'memcpy(V.r.p' $LEN ',' #CALL_PAS(116 $E) ',' $LEN 'L);';
- FI;
- IF #IDENT($E) -> $ID:=idatom ELSIF T-> $ID:=atom FI;
- FF<<@'uc' $MARK '(' $LEN 'L,' $I 'L,' $ID ',&V);';
- / *) .)
- / RETURN $I / ##
- ----------------------------------------------------------------------
- #G_COMMON_PART
- /
- OPEN DDD 'xcrg.h';
- DDD<<@ 'v cnst[' #LEN( LAST #C $CONSTANT_LIST)+2 '];';
- DDD<<@ 'a acnst[' #LEN( LAST #C $A_CONSTANT_LIST)+1 '];';
- FORALL $P IN LAST #C $LAST_VARIABLES DO
- $X:= LAST #C $LAST_VARIABLES .$P;
- FORALL $VAR IN $X DO
- DDD<< @ 'v glob' LAST #C $RULENUM .$P '_'
- $X. $VAR ';'
- OD OD ;
- $N:= #LEN( LAST #C $RULENUM);
- $U:= LAST #C $B[4];
- $X:=2;
- LOOP
- IF $X > $N -> BREAK FI;
- DDD<<@ 'extern Void r' $X
- ' PP((long *rez, boolean *success, ptr_ *pl));';
- $X +:=1
- END;
- CLOSE DDD /
- ##
|