2010-08-21 15:59:10 +02:00
|
|
|
---
|
|
|
|
expr.c | 42 +++++++++++++++++++++---------------------
|
|
|
|
1 file changed, 21 insertions(+), 21 deletions(-)
|
|
|
|
|
2013-04-04 13:24:24 +02:00
|
|
|
Index: b/expr.c
|
2010-08-21 15:59:10 +02:00
|
|
|
===================================================================
|
2013-04-04 13:24:24 +02:00
|
|
|
--- a/expr.c
|
|
|
|
+++ b/expr.c
|
|
|
|
@@ -326,7 +326,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
e->right.expr = expr_trans_bool(e->right.expr);
|
|
|
|
break;
|
|
|
|
case E_UNEQUAL:
|
|
|
|
- // FOO!=n -> FOO
|
|
|
|
+ /* FOO!=n -> FOO */
|
|
|
|
if (e->left.sym->type == S_TRISTATE) {
|
|
|
|
if (e->right.sym == &symbol_no) {
|
|
|
|
e->type = E_SYMBOL;
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -375,19 +375,19 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
|
|
|
|
((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
|
|
|
|
(e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
|
|
|
|
- // (a='y') || (a='m') -> (a!='n')
|
|
|
|
+ /* (a='y') || (a='m') -> (a!='n') */
|
|
|
|
return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);
|
|
|
|
}
|
|
|
|
if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
|
|
|
|
((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
|
|
|
|
(e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
|
|
|
|
- // (a='y') || (a='n') -> (a!='m')
|
|
|
|
+ /* (a='y') || (a='n') -> (a!='m') */
|
|
|
|
return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);
|
|
|
|
}
|
|
|
|
if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
|
|
|
|
((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
|
|
|
|
(e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
|
|
|
|
- // (a='m') || (a='n') -> (a!='y')
|
|
|
|
+ /* (a='m') || (a='n') -> (a!='y') */
|
|
|
|
return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);
|
|
|
|
}
|
|
|
|
}
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -438,29 +438,29 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
|
|
|
|
if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
|
|
|
|
(e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
|
|
|
|
- // (a) && (a='y') -> (a='y')
|
|
|
|
+ /* (a) && (a='y') -> (a='y') */
|
|
|
|
return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
|
|
|
|
|
|
|
|
if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
|
|
|
|
(e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
|
|
|
|
- // (a) && (a!='n') -> (a)
|
|
|
|
+ /* (a) && (a!='n') -> (a) */
|
|
|
|
return expr_alloc_symbol(sym1);
|
|
|
|
|
|
|
|
if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
|
|
|
|
(e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
|
|
|
|
- // (a) && (a!='m') -> (a='y')
|
|
|
|
+ /* (a) && (a!='m') -> (a='y') */
|
|
|
|
return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
|
|
|
|
|
|
|
|
if (sym1->type == S_TRISTATE) {
|
|
|
|
if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
|
|
|
|
- // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
|
|
|
|
+ /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */
|
|
|
|
sym2 = e1->right.sym;
|
|
|
|
if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
|
|
|
|
return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
|
|
|
|
: expr_alloc_symbol(&symbol_no);
|
|
|
|
}
|
|
|
|
if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
|
|
|
|
- // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
|
|
|
|
+ /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */
|
|
|
|
sym2 = e2->right.sym;
|
|
|
|
if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
|
|
|
|
return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -469,19 +469,19 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
|
|
|
|
((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
|
|
|
|
(e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
|
|
|
|
- // (a!='y') && (a!='n') -> (a='m')
|
|
|
|
+ /* (a!='y') && (a!='n') -> (a='m') */
|
|
|
|
return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);
|
|
|
|
|
|
|
|
if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
|
|
|
|
((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
|
|
|
|
(e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
|
|
|
|
- // (a!='y') && (a!='m') -> (a='n')
|
|
|
|
+ /* (a!='y') && (a!='m') -> (a='n') */
|
|
|
|
return expr_alloc_comp(E_EQUAL, sym1, &symbol_no);
|
|
|
|
|
|
|
|
if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
|
|
|
|
((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
|
|
|
|
(e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
|
|
|
|
- // (a!='m') && (a!='n') -> (a='m')
|
|
|
|
+ /* (a!='m') && (a!='n') -> (a='m') */
|
|
|
|
return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
|
|
|
|
|
|
|
|
if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -574,7 +574,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
switch (e1->type) {
|
|
|
|
case E_OR:
|
|
|
|
expr_eliminate_dups2(e1->type, &e1, &e1);
|
|
|
|
- // (FOO || BAR) && (!FOO && !BAR) -> n
|
|
|
|
+ /* (FOO || BAR) && (!FOO && !BAR) -> n */
|
|
|
|
tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
|
|
|
|
tmp2 = expr_copy(e2);
|
|
|
|
tmp = expr_extract_eq_and(&tmp1, &tmp2);
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -589,7 +589,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
break;
|
|
|
|
case E_AND:
|
|
|
|
expr_eliminate_dups2(e1->type, &e1, &e1);
|
|
|
|
- // (FOO && BAR) || (!FOO || !BAR) -> y
|
|
|
|
+ /* (FOO && BAR) || (!FOO || !BAR) -> y */
|
|
|
|
tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
|
|
|
|
tmp2 = expr_copy(e2);
|
|
|
|
tmp = expr_extract_eq_or(&tmp1, &tmp2);
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -698,7 +698,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
case E_NOT:
|
|
|
|
switch (e->left.expr->type) {
|
|
|
|
case E_NOT:
|
|
|
|
- // !!a -> a
|
|
|
|
+ /* !!a -> a */
|
|
|
|
tmp = e->left.expr->left.expr;
|
|
|
|
free(e->left.expr);
|
|
|
|
free(e);
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -707,14 +707,14 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
break;
|
|
|
|
case E_EQUAL:
|
|
|
|
case E_UNEQUAL:
|
|
|
|
- // !a='x' -> a!='x'
|
|
|
|
+ /* !a='x' -> a!='x' */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
free(e);
|
|
|
|
e = tmp;
|
|
|
|
e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL;
|
|
|
|
break;
|
|
|
|
case E_OR:
|
|
|
|
- // !(a || b) -> !a && !b
|
|
|
|
+ /* !(a || b) -> !a && !b */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
e->type = E_AND;
|
|
|
|
e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -723,7 +723,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
e = expr_transform(e);
|
|
|
|
break;
|
|
|
|
case E_AND:
|
|
|
|
- // !(a && b) -> !a || !b
|
|
|
|
+ /* !(a && b) -> !a || !b */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
e->type = E_OR;
|
|
|
|
e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -733,7 +733,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
break;
|
|
|
|
case E_SYMBOL:
|
|
|
|
if (e->left.expr->left.sym == &symbol_yes) {
|
|
|
|
- // !'y' -> 'n'
|
|
|
|
+ /* !'y' -> 'n' */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
free(e);
|
|
|
|
e = tmp;
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -742,7 +742,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (e->left.expr->left.sym == &symbol_mod) {
|
|
|
|
- // !'m' -> 'm'
|
|
|
|
+ /* !'m' -> 'm' */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
free(e);
|
|
|
|
e = tmp;
|
2013-04-04 13:24:24 +02:00
|
|
|
@@ -751,7 +751,7 @@
|
2010-08-21 15:59:10 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (e->left.expr->left.sym == &symbol_no) {
|
|
|
|
- // !'n' -> 'y'
|
|
|
|
+ /* !'n' -> 'y' */
|
|
|
|
tmp = e->left.expr;
|
|
|
|
free(e);
|
|
|
|
e = tmp;
|