static void parse_relational_expression() { /* create action code for < > >= or <= * operators */ while (TRUE) { /* I hate "else if" statements */ if (equals(c_token, ">")) { c_token++; accept_additive_expression(); (void) add_action(GT); } else if (equals(c_token, "<")) { /* Workaround for * in syntax of range constraints */ if (scanning_range_in_progress && equals(c_token+1, "*") ) { break; } c_token++; accept_additive_expression(); (void) add_action(LT); } else if (equals(c_token, ">=")) { c_token++; accept_additive_expression(); (void) add_action(GE); } else if (equals(c_token, "<=")) { c_token++; accept_additive_expression(); (void) add_action(LE); } else break; } }
static void parse_bitshift_expression() { /* create action codes for << and >> operators */ while (TRUE) { if (equals(c_token, "<<")) { c_token++; accept_additive_expression(); (void) add_action(LEFTSHIFT); } else if (equals(c_token, ">>")) { c_token++; accept_additive_expression(); (void) add_action(RIGHTSHIFT); } else break; } }
static void accept_bitshift_expression() { accept_additive_expression(); parse_bitshift_expression(); }
static void accept_relational_expression() { accept_additive_expression(); parse_relational_expression(); }