コード例 #1
0
void BoolXor()
{
    Match('~');
    BoolTerm();
    EmitLn("xor (%esp), %eax");
    EmitLn("addl $4, %esp");    /* recover the stack */
}
コード例 #2
0
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;
		}
	}
}
コード例 #4
0
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;
        }
    }
}
コード例 #6
0
void BoolXor() {
  Match('~');
  BoolTerm();
  EmitLn("xor rax, [rsp]");
  EmitLn("add rsp, 8");
}
コード例 #7
0
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();
}