Look at the syntax diagram for ConditionalElement in <a href="http://members.inode.at/w.laun/drools/DroolsSyntax.pdf">http://members.inode.at/w.laun/drools/DroolsSyntax.pdf</a>, p.7, to get an idea of the overall complexity. (Attention: this document incorporates some changes that will happen only with version 5.2., it's still work in progress) The omission of 'and' in the WhenPArt (p.5) is traditional syntactic sugar. Not permitting the same in subexpressions is much easier to handle the parser.<br>
<br>So, the answer is: easier parsing and, hopefully, better error recovery.<br><br>-W<br><br><br><br><div class="gmail_quote">2010/11/23 Nathan Bell <span dir="ltr"><<a href="mailto:Nathan.Bell@pharmacyonesource.com">Nathan.Bell@pharmacyonesource.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal">This rule:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">rule</span></b><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> </span><span style="font-size: 10pt; font-family: "Courier New"; color: green;">"Not"</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">when</span></b><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> </span><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">not</span></b><span style="font-size: 10pt; font-family: "Courier New"; color: black;">(</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
RuleTime()</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
Patient()</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
)</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">then</span></b><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> System.out.println(</span><span style="font-size: 10pt; font-family: "Courier New"; color: green;">"not"</span><span style="font-size: 10pt; font-family: "Courier New"; color: black;">);</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal"><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">end</span></b></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">produces the following errors when compiled:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">[ERR 102] Line 43:5 mismatched input 'Patient' expecting ')'
in rule "Not"</p>
<p class="MsoNormal">[ERR 102] Line 44:5 mismatched input ')' expecting 'then' in
rule "Not"</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">But if I change it to use explicit ANDs instead of implicit
ANDs it compiles and runs.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">rule</span></b><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> </span><span style="font-size: 10pt; font-family: "Courier New"; color: green;">"NotBlock"</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">when</span></b><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> </span><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">not</span></b><span style="font-size: 10pt; font-family: "Courier New"; color: black;">(</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
RuleTime()</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
</span><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">and</span></b><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
Patient()</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;">
)</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">then</span></b><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: black;"> System.out.println(</span><span style="font-size: 10pt; font-family: "Courier New"; color: green;">"notBlock"</span><span style="font-size: 10pt; font-family: "Courier New"; color: black;">);</span><span style="font-size: 10pt; font-family: "Courier New";"></span></p>
<p class="MsoNormal"><b><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(150, 0, 0);">end</span></b></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Is it invalid syntax to use implicit ANDs in a not block? If
so, why?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thank You,</p>
<p class="MsoNormal"> </p><font color="#888888">
<p class="MsoNormal">Nathan Bell</p>
</font></div>
</div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>