Add support for the ~ operator.
This commit is contained in:
		
							parent
							
								
									b1576e2c77
								
							
						
					
					
						commit
						374e7a1c57
					
				
					 3 changed files with 10 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -104,6 +104,7 @@ char* manglename(char* name, char prefix);
 | 
			
		|||
#define	AMPER	23
 | 
			
		||||
#define	STAR	24
 | 
			
		||||
#define	QUEST	25
 | 
			
		||||
#define	NOT     26
 | 
			
		||||
 | 
			
		||||
#define	PLUS	30
 | 
			
		||||
#define	MINUS	31
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1060,6 +1060,7 @@ tand:
 | 
			
		|||
		goto oponst;
 | 
			
		||||
 | 
			
		||||
	case EXCLA:
 | 
			
		||||
	case NOT:
 | 
			
		||||
		if (andflg)
 | 
			
		||||
			goto syntax;
 | 
			
		||||
		goto oponst;
 | 
			
		||||
| 
						 | 
				
			
			@ -1225,7 +1226,7 @@ int opdope[] = {
 | 
			
		|||
	034200,	/* &un */
 | 
			
		||||
	034200,	/* *un */
 | 
			
		||||
	014201,	/* ? */
 | 
			
		||||
	000000,	/* 26 */
 | 
			
		||||
	034200, /* ~un */
 | 
			
		||||
	000000,	/* 27 */
 | 
			
		||||
	000000,	/* 28 */
 | 
			
		||||
	000000,	/* 29 */
 | 
			
		||||
| 
						 | 
				
			
			@ -1290,7 +1291,7 @@ char ctab[128] = {
 | 
			
		|||
	UNKN,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
 | 
			
		||||
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
 | 
			
		||||
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
 | 
			
		||||
	LETTER,	LETTER,	LETTER,	LBRACE,	OR,	RBRACE,	UNKN,	UNKN
 | 
			
		||||
	LETTER,	LETTER,	LETTER,	LBRACE,	OR,	RBRACE,	NOT,	UNKN
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* debug function */
 | 
			
		||||
| 
						 | 
				
			
			@ -1320,6 +1321,7 @@ void printtoken(int tok, FILE *out)
 | 
			
		|||
	strtab[23] = "AMPER";
 | 
			
		||||
	strtab[24] = "STAR";
 | 
			
		||||
	strtab[25] = "QUEST";
 | 
			
		||||
	strtab[26] = "NOT";
 | 
			
		||||
 | 
			
		||||
	strtab[30] = "PLUS";
 | 
			
		||||
	strtab[31] = "MINUS";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -305,6 +305,11 @@ rcexpr(struct tnode *tr)
 | 
			
		|||
		C_ngi(wordsize);
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	case NOT:
 | 
			
		||||
		rcexpr(tr->tr1);
 | 
			
		||||
		C_com(wordsize);
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	case QUEST:
 | 
			
		||||
		cbranch(tr->tr1, o1=isn++);
 | 
			
		||||
		rcexpr(tr->tr2->tr1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue