+ ;
+
+assertion : PAREN_OPEN assert_expr PAREN_CLOSE {
+ $$ = $2;
+ }
+ | PAREN_OPEN assertion LOGICAL_OR assertion PAREN_CLOSE {
+ unsigned int a = (unsigned int)(unsigned long)$2;
+ unsigned int b = (unsigned int)(unsigned long)$4;
+ unsigned int result = (a || b);
+ $$ = (void *)(unsigned long)result;
+ }
+ | PAREN_OPEN assertion LOGICAL_AND assertion PAREN_CLOSE {
+ unsigned int a = (unsigned int)(unsigned long)$2;
+ unsigned int b = (unsigned int)(unsigned long)$4;
+ unsigned int result = (a && b);
+ $$ = (void *)(unsigned long)result;
+ }
+ ;
+
+assert_expr : imm_value EQUAL imm_value {
+ unsigned int a = (unsigned int)(unsigned long)$1;
+ unsigned int b = (unsigned int)(unsigned long)$3;
+ unsigned int result = (a == b);
+ $$ = (void *)(unsigned long)result;
+ }
+ | imm_value NOT_EQUAL imm_value {
+ unsigned int a = (unsigned int)(unsigned long)$1;
+ unsigned int b = (unsigned int)(unsigned long)$3;
+ unsigned int result = (a != b);
+ $$ = (void *)(unsigned long)result;