} else { if(ch>='0'&&ch<='9') { k=0; num=0; sym=number; do{ num=10*num+ch-'0'; k++; getchdo;
k++; } getchdo; }while(ch>='a'&& ch<='z'||ch>='0'&& ch<='9'); a[k]=0; strcpy(id,a); i=0; j=norw-1 ; do{ k=(i+j)/2 ; if(strcmp(id,word[k])<=0) { j=k-1; }
if(strcmp(id,word[k])>=0) i=k+1; }
while(i<=j); if(i-1>j) { sym=wsym[k]; } else { sym=ident; }
11
}while (ch>='0'&&ch<='9'); k--;
if(k>nmax) { error(30); } } else { if(ch==';') { getchdo; if(ch=='=') { sym=becomes; getchdo; } else { sym=nul; } } else { if (ch=='<') { getchdo; if(ch=='=') { sym=leq; getchdo; } else { sym=lss; } } else
12
{ if(ch=='>')
int gen(enum fct x,int y,int z) {
if(cx>=cxmax) {
printf(\return -1; }
code[cx].f=x; code[cx].l=y;
{ getchdo; if(ch=='=') { sym=geq; getchdo; } else { sym=gtr; } } else { sym=ssym[ch]; if(sym!=period) { getchdo; } } } } } } return 0; }
13
code[cx].a=z; cx++; return 0; }
int test(bool * s1,bool * s2,int n) {if(! inset(sym,s1)) {error(n);
while((! inset(sym,s1))&&(! inset(sym,s2))) {getsymdo; } }
return 0; }
int block(int lev,int tx,bool* fsys) { int i; int dx; int txo; int cxo;
bool nxtlev[symnum]; dx=3; txo=tx;
table[tx].adr=cx; gendo(jmp,0,0); if(lev>levmax) {error(32); } do{
if(sym==constsym) {getsymdo; do
{constdeclarationdo(&tx,lev,&dx); while(sym==comma) {getsymdo;
constdeclarationdo(&tx,lev,&dx); }
14
if (sym==semicolon) {getsymdo; } else
{error(5); }
}while(sym==ident); }
if(sym==varsym) {getsymdo; do{
vardeclarationdo(&tx,lev,&dx); while(sym==comma) {getsymdo;
vardeclarationdo(&tx,lev,&dx); }
if(sym==semicolon) {getsymdo; } else{ error(5); }
}while(sym==ident); }
while(sym==procsym) {getsymdo; if(sym==ident)
{enter(procedur,&tx,lev,&dx); getsymdo; } else
{error(4); }
if(sym==semicolon) {getsymdo; } else
{error(5);
15