@@ -83,49 +83,40 @@ Function: init
83
83
84
84
// / binary TODO[docu]
85
85
static void binary (YYSTYPE & x_result, YYSTYPE & y_lhs, const irep_idt &id,
86
- YYSTYPE &z_rhs, const typet &t )
86
+ YYSTYPE &z_rhs)
87
87
{
88
88
init (x_result, id);
89
- stack_expr (x_result).type () = t;
90
89
auto &lhs = stack_expr (y_lhs);
91
90
auto &rhs = stack_expr (z_rhs);
92
91
stack_expr (x_result).add_to_operands (std::move (lhs), std::move (rhs));
93
92
}
94
93
95
- // / binary TODO[docu]
96
- static void binary_arith (YYSTYPE & x_result, YYSTYPE & y_lhs,
97
- const irep_idt &id, YYSTYPE &z_rhs)
98
- {
99
- init (x_result, id);
100
- auto &lhs = stack_expr (y_lhs);
101
- DATA_INVARIANT (lhs.type ().id () != ID_nil, " arith expr without lhs type" );
102
- stack_expr (x_result).type () = lhs.type ();
103
- auto &rhs = stack_expr (z_rhs);
104
- stack_expr (x_result).add_to_operands (std::move (lhs), std::move (rhs));
105
- }
106
-
107
- /* ******************************************************************\
94
+ /* ******************************************************************\
108
95
109
- Function: j_binary
96
+ Function: j_binary
110
97
111
- Inputs:
98
+ Inputs:
112
99
113
- Outputs:
100
+ Outputs:
114
101
115
- Purpose:
102
+ Purpose:
116
103
117
- \*******************************************************************/
104
+ \*******************************************************************/
118
105
119
- static void j_binary (YYSTYPE & dest, YYSTYPE & op1, const irep_idt &id,
120
- YYSTYPE &op2, const typet &t) {
121
- if (stack_expr (op1).id () == id) {
122
- dest = op1;
123
- mto (dest, op2);
124
- } else if (stack_expr (op2).id () == id) {
125
- dest = op2;
126
- mto (dest, op1);
127
- } else
128
- binary (dest, op1, id, op2, t);
106
+ static void j_binary (YYSTYPE & dest, YYSTYPE & op1, const irep_idt &id, YYSTYPE &op2)
107
+ {
108
+ if (stack_expr (op1).id () == id)
109
+ {
110
+ dest = op1;
111
+ mto (dest, op2);
112
+ }
113
+ else if (stack_expr (op2).id () == id)
114
+ {
115
+ dest = op2;
116
+ mto (dest, op1);
117
+ }
118
+ else
119
+ binary (dest, op1, id, op2);
129
120
}
130
121
131
122
/* ******************************************************************\
@@ -375,7 +366,7 @@ assignments: assignment
375
366
376
367
assignment : assignment_head ' (' assignment_var ' )' BECOMES_Token formula ' ;'
377
368
{
378
- binary ($$, $3 , ID_equal, $6 , bool_typet{} );
369
+ binary ($$, $3 , ID_equal, $6 );
379
370
380
371
if (stack_expr ($1 ).id ()==ID_smv_next)
381
372
{
@@ -430,7 +421,7 @@ define : assignment_var BECOMES_Token formula ';'
430
421
DATA_INVARIANT (false , " unexpected variable class" );
431
422
}
432
423
433
- binary ($$, $1 , ID_equal, $3 , bool_typet{} );
424
+ binary ($$, $1 , ID_equal, $3 );
434
425
PARSER.module ->add_define (stack_expr ($$));
435
426
}
436
427
;
@@ -444,7 +435,7 @@ term : variable_name
444
435
| ' {' formula_list ' }' { $$=$2 ; stack_expr ($$).id (" smv_nondet_choice" ); }
445
436
| INC_Token ' (' term ' )' { init ($$, " inc" ); mto ($$, $3 ); }
446
437
| DEC_Token ' (' term ' )' { init ($$, " dec" ); mto ($$, $3 ); }
447
- | ADD_Token ' (' term ' ,' term ' )' { j_binary ($$, $3 , ID_plus, $5 , stack_expr ($ 5 ). type () ); }
438
+ | ADD_Token ' (' term ' ,' term ' )' { j_binary ($$, $3 , ID_plus, $5 ); }
448
439
| SUB_Token ' (' term ' ,' term ' )' { init ($$, ID_minus); mto ($$, $3 ); mto ($$, $5 ); }
449
440
| NUMBER_Token { init ($$, ID_constant); stack_expr ($$).set (ID_value, stack_expr ($1 ).id ()); stack_expr ($$).type ()=integer_typet (); }
450
441
| TRUE_Token { init ($$, ID_constant); stack_expr ($$).set (ID_value, ID_true); stack_expr ($$).type ()=typet (ID_bool); }
@@ -455,41 +446,41 @@ term : variable_name
455
446
| SWITCH_Token ' (' variable_name ' )' ' {' switches ' }' { init ($$, ID_switch); mto ($$, $3 ); mto ($$, $6 ); }
456
447
| MINUS_Token term %prec UMINUS
457
448
{ init ($$, ID_unary_minus); mto ($$, $2 ); }
458
- | term MOD_Token term { binary_arith ($$, $1 , ID_mod, $3 ); }
459
- | term TIMES_Token term { binary_arith ($$, $1 , ID_mult, $3 ); }
460
- | term DIVIDE_Token term { binary_arith ($$, $1 , ID_div, $3 ); }
461
- | term PLUS_Token term { binary_arith ($$, $1 , ID_plus, $3 ); }
462
- | term MINUS_Token term { binary_arith ($$, $1 , ID_minus, $3 ); }
463
- | term EQUIV_Token term { binary ($$, $1 , ID_smv_iff, $3 , bool_typet{} ); }
464
- | term IMPLIES_Token term { binary ($$, $1 , ID_implies, $3 , bool_typet{} ); }
465
- | term XOR_Token term { j_binary ($$, $1 , ID_xor, $3 , bool_typet{} ); }
466
- | term OR_Token term { j_binary ($$, $1 , ID_or, $3 , bool_typet{} ); }
467
- | term AND_Token term { j_binary ($$, $1 , ID_and, $3 , bool_typet{} ); }
449
+ | term MOD_Token term { binary ($$, $1 , ID_mod, $3 ); }
450
+ | term TIMES_Token term { binary ($$, $1 , ID_mult, $3 ); }
451
+ | term DIVIDE_Token term { binary ($$, $1 , ID_div, $3 ); }
452
+ | term PLUS_Token term { binary ($$, $1 , ID_plus, $3 ); }
453
+ | term MINUS_Token term { binary ($$, $1 , ID_minus, $3 ); }
454
+ | term EQUIV_Token term { binary ($$, $1 , ID_smv_iff, $3 ); }
455
+ | term IMPLIES_Token term { binary ($$, $1 , ID_implies, $3 ); }
456
+ | term XOR_Token term { j_binary ($$, $1 , ID_xor, $3 ); }
457
+ | term OR_Token term { j_binary ($$, $1 , ID_or, $3 ); }
458
+ | term AND_Token term { j_binary ($$, $1 , ID_and, $3 ); }
468
459
| NOT_Token term { init ($$, ID_not); mto ($$, $2 ); }
469
460
| AX_Token term { init ($$, ID_AX); mto ($$, $2 ); }
470
461
| AF_Token term { init ($$, ID_AF); mto ($$, $2 ); }
471
462
| AG_Token term { init ($$, ID_AG); mto ($$, $2 ); }
472
463
| EX_Token term { init ($$, ID_EX); mto ($$, $2 ); }
473
464
| EF_Token term { init ($$, ID_EF); mto ($$, $2 ); }
474
465
| EG_Token term { init ($$, ID_EG); mto ($$, $2 ); }
475
- | A_Token ' [' term U_Token term ' ]' { binary ($$, $3 , ID_AU, $5 , bool_typet{} ); }
476
- | A_Token ' [' term R_Token term ' ]' { binary ($$, $3 , ID_AR, $5 , bool_typet{} ); }
477
- | E_Token ' [' term U_Token term ' ]' { binary ($$, $3 , ID_EU, $5 , bool_typet{} ); }
478
- | E_Token ' [' term R_Token term ' ]' { binary ($$, $3 , ID_ER, $5 , bool_typet{} ); }
466
+ | A_Token ' [' term U_Token term ' ]' { binary ($$, $3 , ID_AU, $5 ); }
467
+ | A_Token ' [' term R_Token term ' ]' { binary ($$, $3 , ID_AR, $5 ); }
468
+ | E_Token ' [' term U_Token term ' ]' { binary ($$, $3 , ID_EU, $5 ); }
469
+ | E_Token ' [' term R_Token term ' ]' { binary ($$, $3 , ID_ER, $5 ); }
479
470
| F_Token term { init ($$, ID_F); mto ($$, $2 ); }
480
471
| G_Token term { init ($$, ID_G); mto ($$, $2 ); }
481
472
| X_Token term { init ($$, ID_X); mto ($$, $2 ); }
482
- | term U_Token term { binary ($$, $1 , ID_U, $3 , bool_typet{} ); }
483
- | term R_Token term { binary ($$, $1 , ID_R, $3 , bool_typet{} ); }
484
- | term EQUAL_Token term { binary ($$, $1 , ID_equal, $ 3 , bool_typet{} ); }
485
- | term NOTEQUAL_Token term { binary ($$, $1 , ID_notequal, $3 , bool_typet{} ); }
486
- | term LT_Token term { binary ($$, $1 , ID_lt, $ 3 , bool_typet{} ); }
487
- | term LE_Token term { binary ($$, $1 , ID_le, $3 , bool_typet{} ); }
488
- | term GT_Token term { binary ($$, $1 , ID_gt, $ 3 , bool_typet{} ); }
489
- | term GE_Token term { binary ($$, $1 , ID_ge, $3 , bool_typet{} ); }
490
- | term UNION_Token term { binary ($$, $1 , ID_smv_union, $3 , bool_typet{} ); }
491
- | term IN_Token term { binary ($$, $1 , ID_smv_setin, $3 , bool_typet{} ); }
492
- | term NOTIN_Token term { binary ($$, $1 , ID_smv_setnotin, $3 , bool_typet{} ); }
473
+ | term U_Token term { binary ($$, $1 , ID_U, $3 ); }
474
+ | term R_Token term { binary ($$, $1 , ID_R, $3 ); }
475
+ | term EQUAL_Token term { binary ($$, $1 , ID_equal, $ 3 ); }
476
+ | term NOTEQUAL_Token term { binary ($$, $1 , ID_notequal, $3 ); }
477
+ | term LT_Token term { binary ($$, $1 , ID_lt, $ 3 ); }
478
+ | term LE_Token term { binary ($$, $1 , ID_le, $3 ); }
479
+ | term GT_Token term { binary ($$, $1 , ID_gt, $ 3 ); }
480
+ | term GE_Token term { binary ($$, $1 , ID_ge, $3 ); }
481
+ | term UNION_Token term { binary ($$, $1 , ID_smv_union, $3 ); }
482
+ | term IN_Token term { binary ($$, $1 , ID_smv_setin, $3 ); }
483
+ | term NOTIN_Token term { binary ($$, $1 , ID_smv_setnotin, $3 ); }
493
484
;
494
485
495
486
formula_list: formula { init ($$); mto ($$, $1 ); }
@@ -580,7 +571,7 @@ cases :
580
571
;
581
572
582
573
case : formula ' :' formula ' ;'
583
- { binary ($$, $1 , ID_case, $3 , stack_expr ($ 3 ). type () ); }
574
+ { binary ($$, $1 , ID_case, $3 ); }
584
575
;
585
576
586
577
switches :
0 commit comments