blob: 3a94f49bd9f5ffff8afb62bbc6f8b236f07926cb [file] [log] [blame]
<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.3.4.&nbsp;Random Rule</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_ASMCompoundRules.html" title="4.3.&nbsp;Compound ASM Rules"><link rel="prev" href="def_ParallelRule.html" title="4.3.3.&nbsp;Parallel Rule"><link rel="next" href="def_LetRule.html" title="4.3.5.&nbsp;Let Rule"></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">4.3.4.&nbsp;Random Rule</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="def_ParallelRule.html">Prev</a>&nbsp;</td><th align="center" width="60%">4.3.&nbsp;Compound ASM Rules</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="def_LetRule.html">Next</a></td></tr></table><hr></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="def_RandomRule"></a>4.3.4.&nbsp;Random Rule</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_RandomRule_Description"></a>Description</th></tr><tr><td valign="top" align="left"><p>
The <span class="strong"><strong>random rule</strong></span><a name="N1163C" class="indexterm"></a>is a rule-container; it executes a
non-deterministically chosen rule from the rules listed inside.
</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_RandomRule_Syntax"></a>Syntax</th></tr><tr><td valign="top" align="left"><pre class="programlisting">
RandomRuleAST ::= <span class="token">random</span> <span class="token">{</span> <a href="def_AsmRuleInvoc.html" title="4.1.2.&nbsp;ASM Rule Invocation">AsmRulesAST</a> <span class="token">}</span> OptSemicolonAST
</pre><p>
A <span class="strong"><strong>random rule</strong></span> contains an arbitrary number of other
<a href="def_AsmRuleInvoc.html" title="4.1.2.&nbsp;ASM Rule Invocation">ASM rules</a>.
</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_RandomRule_Semantics"></a>Semantics</th></tr><tr><td valign="top" align="left"><p>
The <span class="strong"><strong>random rule</strong></span> executes <span class="emphasis"><em>exactly one</em></span> rule from the nested rules.
</p><p>
The <span class="strong"><strong>random rule</strong></span> fails if the executed rule fails.
No backtracking is provided upon failure, i.e. no other rules are selected if the previous rule fails.
The previous state of local variables are not restored after failure.
</p></td></tr></table></div><div class="highlights"><a name="def_RandomRule_DefinedIn"></a><p><b>Defined In:&nbsp;</b>
<a href="def_CompoundRule.html" title="4.3.1.&nbsp;Compound Rule">compound rule</a>
</p></div><div class="highlights"><a name="def_RandomRule_SeeAlso"></a><p><b>See Also:&nbsp;</b>
<a href="def_SequentialRule.html" title="4.3.2.&nbsp;Sequential Rule">sequential rule</a>, <a href="def_ParallelRule.html" title="4.3.3.&nbsp;Parallel Rule">parallel 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="def_ParallelRule.html">Prev</a>&nbsp;</td><td align="center" width="20%"><a accesskey="u" href="sec_ASMCompoundRules.html">Up</a></td><td align="right" width="40%">&nbsp;<a accesskey="n" href="def_LetRule.html">Next</a></td></tr><tr><td valign="top" align="left" width="40%">4.3.3.&nbsp;Parallel Rule&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;4.3.5.&nbsp;Let Rule</td></tr></table></div></body></html>