1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
|
x=0;
for(;;) {
nxttok();
if(tokent==TF_CLOSE) break;
if(Tokenf(TF_MACRO) || !Tokenf(TF_NAME) || tokenv!=OP_USERFLAG) ParseError("User flag or close parenthesis expected\n");
tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags");
if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr);
if((tokenv^y)&0xE0) {
if(y&0x100) ParseError("User flag ^%s belongs to the wrong attribute\n",tokenstr);
} else {
if(Tokenf(TF_COMMA)) x&=~(1<<(tokenv&31)); else x|=1<<(tokenv&31);
}
}
tokenv=x;
goto numeric;
default:
ParseError("Invalid parenthesized instruction\n");
}
} else if(tokent==TF_CLOSE) {
if(flowdepth) ParseError("Unterminated flow control structure\n");
if(peep<ptr && cl->codes[ptr-1]==OP_RET) break;
if(peep<ptr && (cl->codes[ptr-1]&0xFF00)==0x1E00) break;
|
>
>
>
>
>
>
>
|
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
|
x=0;
for(;;) {
nxttok();
if(tokent==TF_CLOSE) break;
if(Tokenf(TF_MACRO) || !Tokenf(TF_NAME) || tokenv!=OP_USERFLAG) ParseError("User flag or close parenthesis expected\n");
tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags");
if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr);
uflags1:
if((tokenv^y)&0xE0) {
if(y&0x100) ParseError("User flag ^%s belongs to the wrong attribute\n",tokenstr);
} else {
if(Tokenf(TF_COMMA)) x&=~(1<<(tokenv&31)); else x|=1<<(tokenv&31);
}
}
tokenv=x;
goto numeric;
case OP_USERFLAG:
tokenv=look_hash(glohash,HASH_SIZE,0x1000,0x10FF,0,"user flags");
if(!tokenv) ParseError("User flag ^%s not defined\n",tokenstr);
x=0;
y=(tokenv&0xE0)|0x100;
goto uflags1;
default:
ParseError("Invalid parenthesized instruction\n");
}
} else if(tokent==TF_CLOSE) {
if(flowdepth) ParseError("Unterminated flow control structure\n");
if(peep<ptr && cl->codes[ptr-1]==OP_RET) break;
if(peep<ptr && (cl->codes[ptr-1]&0xFF00)==0x1E00) break;
|