blob: c06e379931a2e69f876fcb56eac9a162bed46eb7 [file] [log] [blame]
<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>5.2.1.&nbsp;Logical Term</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.72.0" name="generator"><link rel="start" href="index.html" title="The VIATRA2 Model Transformation Framework"><link rel="up" href="sec_ASMLogicalTerms.html" title="5.2.&nbsp;Logical Terms"><link rel="prev" href="sec_ASMLogicalTerms.html" title="5.2.&nbsp;Logical Terms"><link rel="next" href="def_ConjLogicalTerm.html" title="5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">5.2.1.&nbsp;Logical Term</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="sec_ASMLogicalTerms.html">Prev</a>&nbsp;</td><th align="center" width="60%">5.2.&nbsp;Logical Terms</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="def_ConjLogicalTerm.html">Next</a></td></tr></table><hr></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="def_LogicalTerm"></a>5.2.1.&nbsp;Logical Term</h4></div></div></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip: Description"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Tip]" src="images/tip.png"></td><th align="left"><a name="def_LogicalTerm_Description"></a>Description</th></tr><tr><td valign="top" align="left"><p>
A <span class="strong"><strong>logical term</strong></span><a name="N12015" class="indexterm"></a>
<a name="N1201A" class="indexterm"></a>
is an ASM term that evaluates to a boolean
value. It can be either a simple or a compound expression.
</p></td></tr></table></div><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Syntax"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Important]" src="images/important.png"></td><th align="left"><a name="def_LogicalTerm_Syntax"></a>Syntax</th></tr><tr><td valign="top" align="left"><pre class="programlisting">
LogicalTermAST ::= <a href="def_ConjLogicalTerm.html" title="5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)">LogicalAndTermAST</a>
| LogicalTermAST <span class="token">||</span> <a href="def_ConjLogicalTerm.html" title="5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)">LogicalAndTermAST</a>
| LogicalTermAST <span class="token">xor</span> <a href="def_ConjLogicalTerm.html" title="5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)">LogicalAndTermAST</a>
</pre><p>
A <span class="strong"><strong>logical term</strong></span><a name="N1203F" class="indexterm"></a>
<a name="N12046" class="indexterm"></a>
can be a compound expression, i.e. it can be
composed of <a href="def_ConjLogicalTerm.html" title="5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)">conjunctive logical terms</a> with a
logical OR operation.
</p><p>
The logical OR operator can be either the <code class="computeroutput">||</code> (OR)
or the <code class="computeroutput">xor</code> operator; these are interpreted in the classical way.
</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Semantics"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left"><a name="def_LogicalTerm_Semantics"></a>Semantics</th></tr><tr><td valign="top" align="left"><p>
Logical operations are defined only for Boolean and Multiplicity types.
</p><p>
The interpretation of operations is trivial in case of Booleans.
</p><p>
A Multiplicity value is handled as a pair of boolean values: one
denotes if source can be multiple or not, whereas the other denotes it for
the target of the relation. Logical operations on Multiplicity
values are performed separately for the first and second parts of the pairs.
The result is a Multiplicity value.
</p><div class="table"><a name="tab_LogicalOp"></a><p class="title"><b>Table&nbsp;2.3.&nbsp;Logical operators (AND, OR, XOR)</b></p><div class="table-contents"><table summary="Logical operators (AND, OR, XOR)" border="1"><colgroup><col><col><col><col><col><col><col><col></colgroup><thead><tr><th align="center">&nbsp;</th><th align="center">Undef</th><th align="center">Boolean</th><th align="center">String</th><th align="center">Integer</th><th align="center">Double</th><th align="center">ModelElement</th><th align="center">Multiplicity</th></tr></thead><tbody><tr><td align="center"><span class="strong"><strong>Undef</strong></span></td><td align="center">Undef</td><td align="center">Undef</td><td align="center">Undef</td><td align="center">Undef</td><td align="center">Undef</td><td align="center">Undef</td><td align="center">Undef</td></tr><tr><td align="center"><span class="strong"><strong>Boolean</strong></span></td><td align="center">Undef</td><td align="center">Bool</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td></tr><tr><td align="center"><span class="strong"><strong>String</strong></span></td><td align="center">Undef</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td></tr><tr><td align="center"><span class="strong"><strong>Integer</strong></span></td><td align="center">Undef</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td></tr><tr><td align="center"><span class="strong"><strong>Double</strong></span></td><td align="center">Undef</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td></tr><tr><td align="center"><span class="strong"><strong>ModelElement</strong></span></td><td align="center">Undef</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td></tr><tr><td align="center"><span class="strong"><strong>Multiplicity</strong></span></td><td align="center">Undef</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">&nbsp;</td><td align="center">Multi</td></tr></tbody></table></div><p></p></div><br class="table-break"></td></tr></table></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning: Warning"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left"><a name="def_LogicalTerm_Warning"></a>Warning</th></tr><tr><td valign="top" align="left"><p>
Note that the evaluation rules of boolean operators changed in the
new release to be compliant with its use in Java.
</p></td></tr></table></div><div class="highlights"><a name="def_LogicalTerm_DefinedIn"></a><p><b>Defined In:&nbsp;</b>
<a href="def_Term.html" title="5.1.1.&nbsp;ASM Term">term</a>
</p></div><div class="highlights"><a name="def_LogicalTerm_UsedBy"></a><p><b>Used By:&nbsp;</b>
<a href="def_BaseLogicalTerm.html" title="5.2.3.&nbsp;Base Logical Term">base logical term</a>, <a href="def_CheckCondition.html" title="2.1.8.&nbsp;Check Condition">check condition</a>, <a href="def_IfRule.html" title="4.3.9.&nbsp;If Rule">if rule</a>
</p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="sec_ASMLogicalTerms.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="sec_ASMLogicalTerms.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="def_ConjLogicalTerm.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">5.2.&nbsp;Logical Terms&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;5.2.2.&nbsp;Conjunctive Logical Term (Logical And Term)</td></tr></table></div></body></html>