1 ///////////////////////////////////////////////////////////////////////////////
4 // LSIIT - ULP - CNRS - INRIA - FRANCE //
6 // This program is free software: you can redistribute it and/or modify //
7 // it under the terms of the GNU General Public License as published by //
8 // the Free Software Foundation, either version 3 of the License, or //
9 // (at your option) any later version. //
11 // This program is distributed in the hope that it will be useful, //
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
14 // GNU General Public License for more details. //
16 // You should have received a copy of the GNU General Public License //
17 // along with this program. If not, see <http://www.gnu.org/licenses/>. //
19 // http://isaacproject.u-strasbg.fr/ //
20 ///////////////////////////////////////////////////////////////////////////////
25 - copyright := "2003-2007 Benoit Sonntag";
28 - author := "Sonntag Benoit (bsonntag@loria.fr)";
29 - comment := "Not unary arithmetic expression.";
33 + parent_expr_unary:Expanded EXPR_UNARY;
37 - symbol:CHARACTER <- '~';
43 - exec_conservator:EXPR <-
44 //-- ~ (~ E1 & ~ E2) -> E1 | E2
45 //-- ~ (~ E1 | ~ E2) -> E1 & E2
56 ((neg1 != NULL) && {neg2 != NULL}).if {
57 result := EXPR_OR.create position with (neg1.right) and (neg2.right);
64 ((neg1 != NULL) && {neg2 != NULL}).if {
65 result := EXPR_AND.create position with (neg1.right) and (neg2.right);
77 - exec_right right_cst:INTEGER_CST :EXPR <-
80 (right_cst.is_signed).if {
81 right_cst.set_value (~ right_cst.value);