blob: 33ddd3072e7d5082e60963da092cae0097a88a23 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/*
* Binary expression, logical
*/
boolean_constant=
Op_LogicalAndID(boolean_constant l,boolean_constant r ): 0
{
return l && r;
}
numeric_constant=
Op_LogicalAndID(numeric_constant l, numeric_constant r) : 0
{
return ECMASupport.logicalAnd(l, r);
}
string_constant=
Op_LogicalAndID(string_constant l,string_constant r ): 0
{
return ECMASupport.logicalAnd(l, r);
}
constant_value=
Op_LogicalAndID(constant_value l,constant_value r ): 0
{
Boolean lBool = ECMASupport.toBoolean(l);
if( !lBool )
return l;
return r;
}
boolean_constant=
Op_LogicalOrID(boolean_constant l,boolean_constant r ): 0
{
return l || r;
}
numeric_constant=
Op_LogicalOrID(numeric_constant l, numeric_constant r) : 0
{
return ECMASupport.logicalOr(l, r);
}
string_constant=
Op_LogicalOrID(string_constant l,string_constant r ): 0
{
return ECMASupport.logicalOr(l, r);
}
constant_value=
Op_LogicalOrID(constant_value l,constant_value r ): 0
{
Boolean lBool = ECMASupport.toBoolean(l);
if( lBool )
return l;
return r;
}
boolean_constant=
Op_EqualID(boolean_constant l,boolean_constant r ): 0
{
return l.equals(r); // can't use == for boxed types
}
boolean_constant=
Op_EqualID(numeric_constant l, numeric_constant r): 0
{
return ECMASupport.equals(l, r);
}
boolean_constant=
Op_EqualID(string_constant l,string_constant r ): 0
{
return ECMASupport.equals(l, r);
}
boolean_constant=
Op_EqualID(constant_value l, constant_value r): 0
{
return ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictEqualID(boolean_constant l,boolean_constant r ): 0
{
// for booleans, strict equals is the same as equals
return l.equals(r); // can't use == for boxed types
}
boolean_constant=
Op_StrictEqualID(numeric_constant l, numeric_constant r): 0
{
// strict equality is the same as equality for numeric numeric_constants
return ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictEqualID(string_constant l,string_constant r ): 0
{
// strict equality is the same as equality for string_constants
return ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictEqualID(constant_value l, constant_value r): 0
{
return ECMASupport.strictEquals(l, r);
}
boolean_constant=
Op_NotEqualID(boolean_constant l,boolean_constant r ): 0
{
return !l.equals(r); // can't use == for boxed types
}
boolean_constant=
Op_NotEqualID(numeric_constant l, numeric_constant r): 0
{
return !ECMASupport.equals(l, r);
}
boolean_constant=
Op_NotEqualID(string_constant l,string_constant r ): 0
{
return !ECMASupport.equals(l, r);
}
boolean_constant=
Op_NotEqualID(constant_value l, constant_value r): 0
{
return !ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictNotEqualID(boolean_constant l,boolean_constant r ): 0
{
return !l.equals(r); // can't use == for boxed types
}
boolean_constant=
Op_StrictNotEqualID(numeric_constant l, numeric_constant r): 0
{
// strict equality is same as equality for numbers
return !ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictNotEqualID(string_constant l, string_constant r ): 0
{
return !ECMASupport.equals(l, r);
}
boolean_constant=
Op_StrictNotEqualID(constant_value l, constant_value r): 0
{
return !ECMASupport.strictEquals(l, r);
}
boolean_constant=
Op_LessThanID(numeric_constant l, numeric_constant r): 0
{
return ECMASupport.lessThan(l, r);
}
boolean_constant=
Op_LessThanID(constant_value l, constant_value r): 0
{
return ECMASupport.lessThan(l, r);
}
boolean_constant=
Op_LessThanEqualsID(numeric_constant l, numeric_constant r): 0
{
return ECMASupport.lessThanEquals(l, r);
}
boolean_constant=
Op_LessThanEqualsID(constant_value l, constant_value r): 0
{
return ECMASupport.lessThanEquals(l, r);
}
boolean_constant=
Op_GreaterThanID(numeric_constant l, numeric_constant r): 0
{
return ECMASupport.greaterThan(l, r);
}
boolean_constant=
Op_GreaterThanID(constant_value l, constant_value r): 0
{
return ECMASupport.greaterThan(l, r);
}
boolean_constant=
Op_GreaterThanEqualsID(numeric_constant l, numeric_constant r): 0
{
return ECMASupport.greaterThanEquals(l, r);
}
boolean_constant=
Op_GreaterThanEqualsID(constant_value l, constant_value r): 0
{
return ECMASupport.greaterThanEquals(l, r);
}
/*
* Unary expression, logical
*/
boolean_constant=
Op_LogicalNotID(boolean_constant b): 0
{
return !b;
}
boolean_constant=
Op_LogicalNotID(numeric_constant e): 0
{
return ECMASupport.logicalNot(e);
}
boolean_constant=
Op_LogicalNotID(string_constant e): 0
{
return ECMASupport.logicalNot(e);
}
boolean_constant=
Op_LogicalNotID(constant_value e): 0
{
return ECMASupport.logicalNot(e);
}