示例#1
0
void BoolXor()
{
    Match('~');
    BoolTerm();
    EmitLn("xor (%esp), %eax");
    EmitLn("addl $4, %esp");    /* recover the stack */
}
void BoolExpression() {
  BoolTerm();
  while(IsOrOp(Look)) {
    EmitLn("push rax");
    switch(Look) {
      case '|': BoolOr();break;
      case '~': BoolXor();break;
    }
  }
}
示例#3
0
void BoolExpression(void)
{
	message("BoolExpression");
	BoolTerm();
	while (IsOrop(Token[0])) {
		switch (Token[0]) {
		case '|': BoolOr(); break;
		case '^': BoolXor(); break;
		}
	}
}
void BoolExpression() {
  BoolTerm();
  NewLine();
  while(IsOrOp(Look)) {
    Push();
    switch(Look) {
      case '|': BoolOr(); break;
      case '~': BoolXor(); break;
    }
    NewLine();
  }
}
示例#5
0
/* Parse and Translate a Boolean Expression 
 * <bool_expression> ::= <bool_term> ( or_op <bool_term> )* */
void BoolExpression()
{
    BoolTerm();
    while(IsOrOp(Token)) {
        Push();
        switch(Look) {
            case '|':
                BoolOr();
                break;
            case '~':
                BoolXor();
                break;
            default:
                break;
        }
    }
}
void BoolXor() {
  Match('~');
  BoolTerm();
  EmitLn("xor rax, [rsp]");
  EmitLn("add rsp, 8");
}
void BoolOr() {
  Match('|');
  BoolTerm();
  EmitLn("or rax, [rsp]");
  EmitLn("add rsp, 8");
}
示例#8
0
void BoolXor(void)
{
	MatchString("^");
	BoolTerm();
	PopXor();
}
示例#9
0
void BoolOr(void)
{
	MatchString("|");
	BoolTerm();
	PopOr();
}
示例#10
0
/* Recognize and Translate a Boolean XOR */
void BoolXor()
{
    Next();
    BoolTerm();
    PopXor();
}
示例#11
0
/* Recognize and Translate a Boolean OR */
void BoolOr()
{
    Next();
    BoolTerm();
    PopOr();
}
示例#12
0
void BoolOr() {
  Match('|');
  BoolTerm();
  PopOr();
}
示例#13
0
void BoolXor() {
  Match('~');
  BoolTerm();
  PopXor();
}