extern eof
, cval
, defsym
;
extern csym
, strflg
, xdflg
, peeksym
, fcval
;
int o
, c
, cs
[], type
, csym
[], width
, nel
, ninit
, defsym
[];
if(((o
=symbol())==0) | o
==1) /* EOF */
if (o
==19) { /* keyword */
goto syntax
; /* not type */
csym
[4] =| 0200; /* remember name */
printf(".globl %p\n", cs
);
if ((type
&030)==020) { /* a function */
printf(".text\n%p:\nmov r5,-(sp); mov sp,r5\n", cs
);
if ((peeksym
=symbol())!=2) { /* { */
if ((type
&030)==030) /* array */
if ((peeksym
=symbol()) == 1) { /* ; */
printf(".comm %p,%o\n", &defsym
[4], nel
*width
);
printf(".data\n%p:", &defsym
[4]);
if ((o
=symbol())==23) { /* float */
printf("%p\n", &csym
[4]);
printf("%o;%o;%o;%o\n", fcval
);
} if ((o
=symbol())==9) goto loop
; /* , */
printf(".=.+%d.\n", (nel
-ninit
)*width
);
error("External definition syntax");
error("Inconsistent external initialization");
extern symbol
, error
, blkhed
, eof
, peeksym
;
extern blkend
, csym
[], rcexpr
, block
[], tree
[], regtab
[];
extern retseq
, jumpc
, jump
, label
, contlab
, brklab
, cval
;
extern swp
[], isn
, pswitch
, peekc
;
extern efftab
[], deflab
, errflush
, swtab
[], swsiz
, branch
;
if ((o
=symbol())==3) /* } */
if ((np
[1]&030)!=030) /* not array */
np
= block(1, 36, 1, np
[2]+1, np
);
rcexpr(block(1,102,0,0,np
), regtab
);
if((peeksym
=symbol())==6) /* ( */
rcexpr(block(1,110,0,0,pexpr()), regtab
);
jumpc(pexpr(), o1
=isn
++, 0);
if ((o
=symbol())==19 & cval
==14) { /* else */
(easystmt()?branch
:jump
)(o2
);
jumpc(pexpr(), brklab
=isn
++, 0);
(o3
?branch
:jump
)(contlab
);
error("Nothing to break from");
error("Nothing to continue");
if ((o
=symbol())==19 & cval
==13) { /* while */
if ((o
=symbol())!=21) { /* constant */
if ((o
=symbol())!=8) /* : */
error("Case not in switch");
error("Switch table overflow");
error("Integer required");
rcexpr(block(1,110,0,0,np
), regtab
);
error("Default not in switch");
if ((o
=symbol())!=8) /* : */
error("Unknown keyword");
csym
[1] = 030; /* int[] */
if ((o
=symbol())!=1) /* ; */
error("Statement syntax");
if ((o
=symbol())!=6) /* ( */
if ((o
=symbol())!=7) /* ) */
error("Statement syntax");
extern swp
[], isn
, swtab
[], printf
, deflab
, statement
, brklab
;
int sswp
[], dl
, cv
, swlab
;
printf("jsr pc,bswitch; l%d\n", swlab
);
printf("L%d:.data;L%d:", brklab
, swlab
);
while(swp
>sswp
& swp
>swtab
) {
printf("%o; l%d\n", cv
, *--swp
);
printf("L%d; 0\n.text\n", deflab
);
extern symbol
, cval
, peeksym
, paraml
[], parame
[];
extern error
, rlength
, setstk
, defvec
, isn
, defstat
;
extern stack
, hshtab
[], hshsiz
, pssiz
;
int al
, pl
, cs
[], hl
, t
[];
if (cs
[1]==2) /* float args -> double */
if ((cs
[1]&030) == 030) /* array */
cs
[1] =- 020; /* set ref */
if (cs
[0]>1 & (cs
[1]&07)==05) { /* referred structure */
cs
[1] = cs
[1]&077770 | 04;
printf(".bss; L%d: .=.+%o; .text\n",
extern hshtab
[], hshsiz
, pssiz
, hshused
, debug
;
error("%p %o %o %o %o %o",
error("%p undefined", &hshtab
[i
+4]);
if((hshtab
[i
+4]&0200)==0) { /* not top-level */
extern symbol
, peeksym
, eof
;
extern peeksym
, csym
[], cval
;
while((o
=symbol())==19 & cval
<10)
offset
= tdeclare(cval
, offset
, mosflg
);
extern peeksym
, peekc
, cval
;
if((peeksym
=symbol())==20) /* name */
return(peekc
!=':'); /* not label */
if (peeksym
==19) { /* keyword */
return(peeksym
!=2); /* { */