Index: class.c ================================================================== --- class.c +++ class.c @@ -1610,18 +1610,25 @@ 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"); Index: class.doc ================================================================== --- class.doc +++ class.doc @@ -1153,10 +1153,14 @@ that do not belong are ignored. Any user flag may optionally be preceded by a comma, and may occur multiple times; only the last instance of each is used. If the last instance of a flag has a comma then that bit is clear, if without a comma then it is set. +() ( -- number ) + As above, but you can omit the attribute; it will be implied. All + flags listed must be the same attribute otherwise it is an error. + . ( x -- ) + ( in1 in2 -- out ) Add two numbers together.