Refactoring in typesystem2 and logic langs: extract LogicalVariableDeclarationStatement

Introduce parameters block to rule parts, use tuples as the runtime object
Refactor the typesystem2 runtime to use the logicalVal method for initialization of parameter tuples
This commit is contained in:
Fedor Isakov 2015-09-16 12:55:06 +02:00
parent f402b9d58c
commit 4d2b955721
12 changed files with 4131 additions and 1619 deletions

View File

@ -20,6 +20,7 @@
<dependency reexport="false">6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)</dependency>
<dependency reexport="true">26e8f4ce-2a35-4f44-8065-e5ba154b18e9(jetbrains.mps.lang.typesystem2.runtime)</dependency>
<dependency reexport="true">ff6372a2-2f45-4ec3-952b-02581666015f(jetbrains.mps.lang.typesystem2.template)</dependency>
<dependency reexport="false">a247e09e-2435-45ba-b8d2-07e93feba96a(jetbrains.mps.baseLanguage.tuples)</dependency>
</dependencies>
<usedLanguages>
<usedLanguage>ed6d7656-532c-4bc2-81d1-af945aeb8280(jetbrains.mps.baseLanguage.blTypes)</usedLanguage>
@ -44,6 +45,7 @@
<language id="f2801650-65d5-424e-bb1b-463a8781b786" fqName="jetbrains.mps.baseLanguage.javadoc" version="2" />
<language id="760a0a8c-eabb-4521-8bfd-65db761a9ba3" fqName="jetbrains.mps.baseLanguage.logging" version="0" />
<language id="a247e09e-2435-45ba-b8d2-07e93feba96a" fqName="jetbrains.mps.baseLanguage.tuples" version="0" />
<language id="894463aa-8754-49c0-bf4b-6a32af66b376" fqName="jetbrains.mps.jchr" version="0" />
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" fqName="jetbrains.mps.lang.core" version="1" />
<language id="b401a680-8325-4110-8fd3-84331ff25bef" fqName="jetbrains.mps.lang.generator" version="0" />
<language id="d7706f63-9be2-479c-a3da-ae92af1e64d5" fqName="jetbrains.mps.lang.generator.generationContext" version="0" />
@ -71,6 +73,7 @@
<dependency reexport="false">8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)</dependency>
<dependency reexport="false">6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)</dependency>
<dependency reexport="false">a5478664-6b44-4c62-a9f7-434f8aa57eee(jetbrains.mps.logic.runtime)</dependency>
<dependency reexport="false" scope="generate-into">a247e09e-2435-45ba-b8d2-07e93feba96a(jetbrains.mps.baseLanguage.tuples)</dependency>
</dependencies>
<usedLanguages>
<usedLanguage>daafa647-f1f7-4b0b-b096-69cd7c8408c0(jetbrains.mps.baseLanguage.regexp)</usedLanguage>

View File

@ -753,7 +753,7 @@
<node concept="2OqwBi" id="5zfvpQ72pSr" role="2Oq$k0">
<node concept="Cj7Ep" id="5zfvpQ72pMG" role="2Oq$k0" />
<node concept="3TrEf2" id="5zfvpQ72qlf" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5zfvpQ72gqq" />
<ref role="3Tt5mk" to="5j4j:5zfvpQ72gqq" />
</node>
</node>
<node concept="3w_OXm" id="5zfvpQ72r1c" role="2OqNvi" />
@ -771,7 +771,7 @@
<node concept="2OqwBi" id="5zfvpQ72rs0" role="2Oq$k0">
<node concept="Cj7Ep" id="5zfvpQ72rov" role="2Oq$k0" />
<node concept="3TrEf2" id="5zfvpQ72rOy" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5zfvpQ72gqq" />
<ref role="3Tt5mk" to="5j4j:5zfvpQ72gqq" />
</node>
</node>
<node concept="2DeJnY" id="5zfvpQ72smI" role="2OqNvi" />

View File

@ -115,9 +115,6 @@
</concept>
</language>
<language id="7866978e-a0f0-4cc7-81bc-4d213d9375e1" name="jetbrains.mps.lang.smodel">
<concept id="1177026924588" name="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" flags="nn" index="chp4Y">
<reference id="1177026940964" name="conceptDeclaration" index="cht4Q" />
</concept>
<concept id="1179409122411" name="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" flags="nn" index="2qgKlT" />
<concept id="7453996997717780434" name="jetbrains.mps.lang.smodel.structure.Node_GetSConceptOperation" flags="nn" index="2yIwOk" />
<concept id="1143234257716" name="jetbrains.mps.lang.smodel.structure.Node_GetModelOperation" flags="nn" index="I4A8Y" />
@ -127,14 +124,10 @@
<concept id="1145404486709" name="jetbrains.mps.lang.smodel.structure.SemanticDowncastExpression" flags="nn" index="2JrnkZ">
<child id="1145404616321" name="leftExpression" index="2JrQYb" />
</concept>
<concept id="1171500988903" name="jetbrains.mps.lang.smodel.structure.Node_GetChildrenOperation" flags="nn" index="32TBzR" />
<concept id="1154546950173" name="jetbrains.mps.lang.smodel.structure.ConceptReference" flags="ng" index="3gn64h">
<reference id="1154546997487" name="concept" index="3gnhBz" />
</concept>
<concept id="1139613262185" name="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" flags="nn" index="1mfA1w" />
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
</concept>
<concept id="5944356402132808749" name="jetbrains.mps.lang.smodel.structure.ConceptSwitchStatement" flags="nn" index="1_3QMa">
<child id="5944356402132808753" name="case" index="1_3QMm" />
<child id="5944356402132808752" name="expression" index="1_3QMn" />
@ -181,7 +174,6 @@
</concept>
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1201792049884" name="jetbrains.mps.baseLanguage.collections.structure.TranslateOperation" flags="nn" index="3goQfb" />
<concept id="1202120902084" name="jetbrains.mps.baseLanguage.collections.structure.WhereOperation" flags="nn" index="3zZkjj" />
<concept id="1180964022718" name="jetbrains.mps.baseLanguage.collections.structure.ConcatOperation" flags="nn" index="3QWeyG" />
</language>
</registry>
@ -213,80 +205,6 @@
<node concept="13hLZK" id="5JTOzCQWtZb" role="13h7CW">
<node concept="3clFbS" id="5JTOzCQWtZc" role="2VODD2" />
</node>
<node concept="13i0hz" id="3PWU9gi$6Ty" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="false" />
<property role="TrG5h" value="exportedLogicalVariable" />
<ref role="13i0hy" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
<node concept="3Tm1VV" id="3PWU9gi$6Tz" role="1B3o_S" />
<node concept="3clFbS" id="3PWU9gi$6TD" role="3clF47">
<node concept="3clFbF" id="3PWU9gi$7aR" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$7aS" role="3clFbG">
<node concept="2OqwBi" id="3PWU9gi$7aT" role="2Oq$k0">
<node concept="2OqwBi" id="3PWU9gi$7aU" role="2Oq$k0">
<node concept="2OqwBi" id="3PWU9gi$7aV" role="2Oq$k0">
<node concept="13iPFW" id="3PWU9gi$7aW" role="2Oq$k0" />
<node concept="3TrEf2" id="3PWU9gi$7aX" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" />
</node>
</node>
<node concept="32TBzR" id="3PWU9gi$7aY" role="2OqNvi" />
</node>
<node concept="3zZkjj" id="3PWU9gi$7aZ" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$7b0" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$7b1" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$7b2" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$7b3" role="3clFbG">
<node concept="37vLTw" id="3PWU9gi$7b4" role="2Oq$k0">
<ref role="3cqZAo" node="3PWU9gi$7b7" resolve="stm" />
</node>
<node concept="1mIQ4w" id="3PWU9gi$7b5" role="2OqNvi">
<node concept="chp4Y" id="3PWU9gi$7Dk" role="cj9EA">
<ref role="cht4Q" to="wq2x:2E5lcNn5Ub2" resolve="LocalDeclarationStatement" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$7b7" role="1bW2Oz">
<property role="TrG5h" value="stm" />
<node concept="2jxLKc" id="3PWU9gi$7b8" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="3goQfb" id="3PWU9gi$7b9" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$7ba" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$7bb" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$7bc" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$7bd" role="3clFbG">
<node concept="1PxgMI" id="3PWU9gi$7be" role="2Oq$k0">
<ref role="1PxNhF" to="wq2x:2E5lcNn5Ub2" resolve="LocalDeclarationStatement" />
<node concept="37vLTw" id="3PWU9gi$7bf" role="1PxMeX">
<ref role="3cqZAo" node="3PWU9gi$7bh" resolve="pds" />
</node>
</node>
<node concept="3Tsc0h" id="3PWU9gi$7bg" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:2E5lcNn8k3O" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$7bh" role="1bW2Oz">
<property role="TrG5h" value="pds" />
<node concept="2jxLKc" id="3PWU9gi$7bi" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="3PWU9gi$6TE" role="3clF45">
<node concept="3Tqbb2" id="3PWU9gi$6TF" role="A3Ik2">
<ref role="ehGHo" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
</node>
</node>
<node concept="13h7C7" id="1zN1RIkNimz">
<property role="3GE5qa" value="rule.code.parameter" />
@ -589,63 +507,31 @@
<node concept="3Tm1VV" id="5JTOzCQUVCt" role="1B3o_S" />
<node concept="3clFbS" id="5JTOzCQUVCy" role="3clF47">
<node concept="3clFbF" id="3PWU9gi$7V7" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$cJf" role="3clFbG">
<node concept="2OqwBi" id="3PWU9gi$96H" role="2Oq$k0">
<node concept="2OqwBi" id="3PWU9gi$7XP" role="2Oq$k0">
<node concept="13iPFW" id="3PWU9gi$7V6" role="2Oq$k0" />
<node concept="3Tsc0h" id="3PWU9gi$88q" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1ffsG7bCfL5" />
</node>
</node>
<node concept="3goQfb" id="3PWU9gi$bUQ" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$bUS" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$bUT" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$c0B" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$c54" role="3clFbG">
<node concept="37vLTw" id="3PWU9gi$c0A" role="2Oq$k0">
<ref role="3cqZAo" node="3PWU9gi$bUU" resolve="hd" />
</node>
<node concept="2qgKlT" id="3PWU9gi$cgr" role="2OqNvi">
<ref role="37wK5l" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$bUU" role="1bW2Oz">
<property role="TrG5h" value="hd" />
<node concept="2jxLKc" id="3PWU9gi$bUV" role="1tU5fm" />
</node>
</node>
<node concept="2OqwBi" id="3PWU9gi$96H" role="3clFbG">
<node concept="2OqwBi" id="3PWU9gi$7XP" role="2Oq$k0">
<node concept="13iPFW" id="3PWU9gi$7V6" role="2Oq$k0" />
<node concept="2qgKlT" id="75vUFrSKoA8" role="2OqNvi">
<ref role="37wK5l" node="75vUFrSKg9q" resolve="allComponents" />
</node>
</node>
<node concept="3QWeyG" id="3PWU9gi$d9l" role="2OqNvi">
<node concept="2OqwBi" id="3PWU9gi$enc" role="576Qk">
<node concept="2OqwBi" id="3PWU9gi$dkU" role="2Oq$k0">
<node concept="13iPFW" id="3PWU9gi$df3" role="2Oq$k0" />
<node concept="3Tsc0h" id="3PWU9gi$dyV" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1ffsG7bIxDv" />
</node>
</node>
<node concept="3goQfb" id="3PWU9gi$hfO" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$hfQ" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$hfR" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$hup" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$hAd" role="3clFbG">
<node concept="37vLTw" id="3PWU9gi$huo" role="2Oq$k0">
<ref role="3cqZAo" node="3PWU9gi$hfS" resolve="bd" />
</node>
<node concept="2qgKlT" id="3PWU9gi$igd" role="2OqNvi">
<ref role="37wK5l" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
</node>
</node>
<node concept="3goQfb" id="3PWU9gi$bUQ" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$bUS" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$bUT" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$c0B" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$c54" role="3clFbG">
<node concept="37vLTw" id="3PWU9gi$c0A" role="2Oq$k0">
<ref role="3cqZAo" node="3PWU9gi$bUU" resolve="hd" />
</node>
<node concept="2qgKlT" id="3PWU9gi$cgr" role="2OqNvi">
<ref role="37wK5l" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$hfS" role="1bW2Oz">
<property role="TrG5h" value="bd" />
<node concept="2jxLKc" id="3PWU9gi$hfT" role="1tU5fm" />
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$bUU" role="1bW2Oz">
<property role="TrG5h" value="hd" />
<node concept="2jxLKc" id="3PWU9gi$bUV" role="1tU5fm" />
</node>
</node>
</node>
</node>
@ -657,6 +543,45 @@
</node>
</node>
</node>
<node concept="13i0hz" id="75vUFrSKg9q" role="13h7CS">
<property role="TrG5h" value="allComponents" />
<node concept="3Tm1VV" id="75vUFrSKg9r" role="1B3o_S" />
<node concept="3clFbS" id="75vUFrSKg9s" role="3clF47">
<node concept="3clFbF" id="75vUFrSKgBJ" role="3cqZAp">
<node concept="2OqwBi" id="75vUFrSKl2Y" role="3clFbG">
<node concept="2OqwBi" id="75vUFrSKh__" role="2Oq$k0">
<node concept="2OqwBi" id="75vUFrSKgEt" role="2Oq$k0">
<node concept="13iPFW" id="75vUFrSKgBI" role="2Oq$k0" />
<node concept="3Tsc0h" id="75vUFrSKgP2" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1ffsG7bCfL5" />
</node>
</node>
<node concept="3QWeyG" id="75vUFrSKkpC" role="2OqNvi">
<node concept="2OqwBi" id="75vUFrSKkvw" role="576Qk">
<node concept="13iPFW" id="75vUFrSKkrZ" role="2Oq$k0" />
<node concept="3Tsc0h" id="75vUFrSKkQB" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1ffsG7bFM2v" />
</node>
</node>
</node>
</node>
<node concept="3QWeyG" id="75vUFrSKlsQ" role="2OqNvi">
<node concept="2OqwBi" id="75vUFrSKlDm" role="576Qk">
<node concept="13iPFW" id="75vUFrSKlyH" role="2Oq$k0" />
<node concept="3Tsc0h" id="75vUFrSKlTe" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:1ffsG7bIxDv" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="75vUFrSKgiL" role="3clF45">
<node concept="3Tqbb2" id="75vUFrSKgjA" role="A3Ik2">
<ref role="ehGHo" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
</node>
</node>
</node>
<node concept="13hLZK" id="1ffsG7bN0rG" role="13h7CW">
<node concept="3clFbS" id="1ffsG7bN0rH" role="2VODD2" />
</node>
@ -689,80 +614,6 @@
<node concept="13hLZK" id="3PWU9gizUU8" role="13h7CW">
<node concept="3clFbS" id="3PWU9gizUU9" role="2VODD2" />
</node>
<node concept="13i0hz" id="3PWU9gizV6b" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="false" />
<property role="TrG5h" value="exportedLogicalVariable" />
<ref role="13i0hy" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
<node concept="3Tm1VV" id="3PWU9gizV6c" role="1B3o_S" />
<node concept="3clFbS" id="3PWU9gizV6h" role="3clF47">
<node concept="3clFbF" id="3PWU9gizVon" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$1YO" role="3clFbG">
<node concept="2OqwBi" id="3PWU9gizZ7B" role="2Oq$k0">
<node concept="2OqwBi" id="3PWU9gizXd_" role="2Oq$k0">
<node concept="2OqwBi" id="3PWU9gizW4t" role="2Oq$k0">
<node concept="13iPFW" id="3PWU9gizVos" role="2Oq$k0" />
<node concept="3TrEf2" id="3PWU9gizWov" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0a5m9" />
</node>
</node>
<node concept="32TBzR" id="3PWU9gizXTw" role="2OqNvi" />
</node>
<node concept="3zZkjj" id="3PWU9gi$0LN" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$0LP" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$0LQ" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$1_H" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$1_I" role="3clFbG">
<node concept="37vLTw" id="3PWU9gi$1_J" role="2Oq$k0">
<ref role="3cqZAo" node="3PWU9gi$0LR" resolve="stm" />
</node>
<node concept="1mIQ4w" id="3PWU9gi$1_K" role="2OqNvi">
<node concept="chp4Y" id="3PWU9gi$1_L" role="cj9EA">
<ref role="cht4Q" to="wq2x:2E5lcNn5kn6" resolve="ParameterDeclarationStatement" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$0LR" role="1bW2Oz">
<property role="TrG5h" value="stm" />
<node concept="2jxLKc" id="3PWU9gi$0LS" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="3goQfb" id="3PWU9gi$2zR" role="2OqNvi">
<node concept="1bVj0M" id="3PWU9gi$2zT" role="23t8la">
<node concept="3clFbS" id="3PWU9gi$2zU" role="1bW5cS">
<node concept="3clFbF" id="3PWU9gi$3Hg" role="3cqZAp">
<node concept="2OqwBi" id="3PWU9gi$3Hh" role="3clFbG">
<node concept="1PxgMI" id="3PWU9gi$3Hi" role="2Oq$k0">
<ref role="1PxNhF" to="wq2x:2E5lcNn5kn6" resolve="ParameterDeclarationStatement" />
<node concept="37vLTw" id="3PWU9gi$3Hj" role="1PxMeX">
<ref role="3cqZAo" node="3PWU9gi$2zV" resolve="pds" />
</node>
</node>
<node concept="3Tsc0h" id="3PWU9gi$3Hk" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:2E5lcNn8k3O" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="3PWU9gi$2zV" role="1bW2Oz">
<property role="TrG5h" value="pds" />
<node concept="2jxLKc" id="3PWU9gi$2zW" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="A3Dl8" id="3PWU9gi$65f" role="3clF45">
<node concept="3Tqbb2" id="3PWU9gi$6oD" role="A3Ik2">
<ref role="ehGHo" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
</node>
</node>
<node concept="13h7C7" id="3PWU9gi_qaW">
<property role="3GE5qa" value="rule" />
@ -830,5 +681,69 @@
</node>
</node>
</node>
<node concept="13h7C7" id="75vUFrSKpqp">
<property role="3GE5qa" value="rule.component" />
<ref role="13h7C2" to="wq2x:6p0DfM0a3d3" resolve="RuleComponent" />
<node concept="13i0hz" id="3PWU9gizV6b" role="13h7CS">
<property role="13i0iv" value="false" />
<property role="13i0it" value="false" />
<property role="TrG5h" value="exportedLogicalVariable" />
<ref role="13i0hy" to="ha02:7E86$tKAujJ" resolve="exportedLogicalVariable" />
<node concept="3Tm1VV" id="3PWU9gizV6c" role="1B3o_S" />
<node concept="3clFbS" id="3PWU9gizV6h" role="3clF47">
<node concept="3cpWs8" id="PB1R3Y8W5r" role="3cqZAp">
<node concept="3cpWsn" id="PB1R3Y8W5s" role="3cpWs9">
<property role="TrG5h" value="fromParams" />
<node concept="A3Dl8" id="PB1R3Y8W59" role="1tU5fm">
<node concept="3Tqbb2" id="PB1R3Y8W5c" role="A3Ik2">
<ref role="ehGHo" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
<node concept="2OqwBi" id="PB1R3Y8W5t" role="33vP2m">
<node concept="2OqwBi" id="PB1R3Y8W5u" role="2Oq$k0">
<node concept="13iPFW" id="PB1R3Y8W5v" role="2Oq$k0" />
<node concept="3Tsc0h" id="PB1R3Y8W5w" role="2OqNvi">
<ref role="3TtcxE" to="wq2x:PB1R3Y7EcX" />
</node>
</node>
<node concept="3goQfb" id="PB1R3Y8W5x" role="2OqNvi">
<node concept="1bVj0M" id="PB1R3Y8W5y" role="23t8la">
<node concept="3clFbS" id="PB1R3Y8W5z" role="1bW5cS">
<node concept="3clFbF" id="PB1R3Y8W5$" role="3cqZAp">
<node concept="2OqwBi" id="PB1R3Y8W5_" role="3clFbG">
<node concept="37vLTw" id="PB1R3Y8W5A" role="2Oq$k0">
<ref role="3cqZAo" node="PB1R3Y8W5C" resolve="pd" />
</node>
<node concept="3Tsc0h" id="75vUFrS_psz" role="2OqNvi">
<ref role="3TtcxE" to="5j4j:2E5lcNn8k3O" />
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="PB1R3Y8W5C" role="1bW2Oz">
<property role="TrG5h" value="pd" />
<node concept="2jxLKc" id="PB1R3Y8W5D" role="1tU5fm" />
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="PB1R3Y8Ylk" role="3cqZAp">
<node concept="37vLTw" id="PB1R3Y8Yli" role="3clFbG">
<ref role="3cqZAo" node="PB1R3Y8W5s" resolve="fromParams" />
</node>
</node>
</node>
<node concept="A3Dl8" id="3PWU9gi$65f" role="3clF45">
<node concept="3Tqbb2" id="3PWU9gi$6oD" role="A3Ik2">
<ref role="ehGHo" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
</node>
</node>
<node concept="13hLZK" id="75vUFrSKpqq" role="13h7CW">
<node concept="3clFbS" id="75vUFrSKpqr" role="2VODD2" />
</node>
</node>
</model>

View File

@ -717,6 +717,33 @@
<property role="3F0ifm" value="produce" />
<ref role="1k5W1q" to="tpen:hgVS8CF" resolve="KeyWord" />
</node>
<node concept="3EZMnI" id="75vUFrSLnH1" role="3EZMnx">
<node concept="VPM3Z" id="75vUFrSLnH2" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="3F0ifn" id="75vUFrSLnH3" role="3EZMnx">
<property role="3F0ifm" value="(" />
<ref role="1k5W1q" to="tpen:hFCSAw$" resolve="LeftParen" />
</node>
<node concept="3F2HdR" id="75vUFrSLnH4" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:PB1R3Y7EcX" />
<node concept="l2Vlx" id="75vUFrSLnH5" role="2czzBx" />
<node concept="3F0ifn" id="75vUFrSLnH6" role="2czzBI">
<property role="ilYzB" value="&lt;no logical&gt;" />
</node>
<node concept="3Xmtl4" id="75vUFrSLnH7" role="3F10Kt">
<node concept="1wgc9g" id="75vUFrSLnH8" role="3XvnJa">
<ref role="1wgcnl" node="7ksQUDZpyGq" resolve="Constraint" />
</node>
</node>
</node>
<node concept="3F0ifn" id="75vUFrSLnH9" role="3EZMnx">
<property role="3F0ifm" value=")" />
<ref role="1k5W1q" to="tpen:hFCSUmN" resolve="RightParen" />
</node>
<node concept="l2Vlx" id="75vUFrSLnHa" role="2iSdaV" />
</node>
<node concept="3F0ifn" id="6p0DfM0cTrR" role="3EZMnx">
<property role="3F0ifm" value="{" />
<ref role="1k5W1q" to="tpen:hFD5onb" resolve="LeftBrace" />
@ -773,6 +800,33 @@
</node>
</node>
</node>
<node concept="3EZMnI" id="PB1R3Y7Kyb" role="3EZMnx">
<node concept="VPM3Z" id="PB1R3Y7Kyd" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="3F0ifn" id="PB1R3Y7KCo" role="3EZMnx">
<property role="3F0ifm" value="(" />
<ref role="1k5W1q" to="tpen:hFCSAw$" resolve="LeftParen" />
</node>
<node concept="3F2HdR" id="PB1R3Y7KCA" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:PB1R3Y7EcX" />
<node concept="l2Vlx" id="PB1R3Y7KCC" role="2czzBx" />
<node concept="3F0ifn" id="PB1R3Y8Bfi" role="2czzBI">
<property role="ilYzB" value="&lt;no logical&gt;" />
</node>
<node concept="3Xmtl4" id="PB1R3Y8KJ8" role="3F10Kt">
<node concept="1wgc9g" id="PB1R3Y8KJd" role="3XvnJa">
<ref role="1wgcnl" node="7ksQUDZpyGq" resolve="Constraint" />
</node>
</node>
</node>
<node concept="3F0ifn" id="PB1R3Y7KCu" role="3EZMnx">
<property role="3F0ifm" value=")" />
<ref role="1k5W1q" to="tpen:hFCSUmN" resolve="RightParen" />
</node>
<node concept="l2Vlx" id="PB1R3Y7Kyg" role="2iSdaV" />
</node>
<node concept="l2Vlx" id="6p0DfM0cXIN" role="2iSdaV" />
<node concept="3F0ifn" id="6p0DfM0d9xz" role="3EZMnx">
<property role="3F0ifm" value="{" />
@ -1287,7 +1341,7 @@
</node>
<node concept="3F2HdR" id="2E5lcNn5kR1" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:2E5lcNn8k3O" />
<ref role="1NtTu8" to="5j4j:2E5lcNn8k3O" />
<node concept="l2Vlx" id="2E5lcNn5kR3" role="2czzBx" />
<node concept="tppnM" id="2E5lcNn5V3B" role="sWeuL">
<node concept="11L4FC" id="2E5lcNn5V5l" role="3F10Kt">
@ -1311,7 +1365,7 @@
</node>
<node concept="3F2HdR" id="2E5lcNn5Uyr" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="wq2x:2E5lcNn8k3O" />
<ref role="1NtTu8" to="5j4j:2E5lcNn8k3O" />
<node concept="l2Vlx" id="2E5lcNn5Uyt" role="2czzBx" />
<node concept="tppnM" id="2E5lcNn5UO3" role="sWeuL">
<node concept="11L4FC" id="2E5lcNn5UT9" role="3F10Kt">
@ -1760,7 +1814,7 @@
</node>
</node>
<node concept="3F1sOY" id="5zfvpQ71Hlk" role="3EZMnx">
<ref role="1NtTu8" to="wq2x:5zfvpQ72gqq" />
<ref role="1NtTu8" to="5j4j:5zfvpQ72gqq" />
</node>
<node concept="3F0ifn" id="5zfvpQ71Hl8" role="3EZMnx">
<property role="3F0ifm" value="&gt;" />
@ -1777,7 +1831,7 @@
<node concept="2OqwBi" id="5zfvpQ71HvF" role="2Oq$k0">
<node concept="pncrf" id="5zfvpQ71Hqr" role="2Oq$k0" />
<node concept="3TrEf2" id="5zfvpQ72hTc" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5zfvpQ72gqq" />
<ref role="3Tt5mk" to="5j4j:5zfvpQ72gqq" />
</node>
</node>
<node concept="3x8VRR" id="5zfvpQ71Ppx" role="2OqNvi" />
@ -2408,5 +2462,27 @@
<node concept="l2Vlx" id="6wQEDbCL4FA" role="2iSdaV" />
</node>
</node>
<node concept="24kQdi" id="PB1R3Y7Ej_">
<property role="3GE5qa" value="constraint.variable" />
<ref role="1XX52x" to="wq2x:PB1R3Y7Ed7" resolve="RulePartParameterDeclaration" />
<node concept="3EZMnI" id="PB1R3Y7JcH" role="2wV5jI">
<node concept="3EZMnI" id="PB1R3Y7JcR" role="3EZMnx">
<node concept="VPM3Z" id="PB1R3Y7JcS" role="3F10Kt">
<property role="VOm3f" value="false" />
</node>
<node concept="3F1sOY" id="PB1R3Y7JcV" role="3EZMnx">
<property role="1$x2rV" value="default" />
<ref role="1NtTu8" to="5j4j:5zfvpQ72gqq" />
</node>
<node concept="l2Vlx" id="PB1R3Y7JcY" role="2iSdaV" />
</node>
<node concept="3F2HdR" id="PB1R3Y8j_E" role="3EZMnx">
<property role="2czwfO" value="," />
<ref role="1NtTu8" to="5j4j:2E5lcNn8k3O" />
<node concept="l2Vlx" id="PB1R3Y8j_G" role="2czzBx" />
</node>
<node concept="l2Vlx" id="PB1R3Y7Jd7" role="2iSdaV" />
</node>
</node>
</model>

View File

@ -175,6 +175,12 @@
<node concept="PrWs8" id="3PWU9gizUQY" role="PzmwI">
<ref role="PrY4T" to="5j4j:7E86$tK$Rgo" resolve="LogicalVariableScope" />
</node>
<node concept="1TJgyj" id="PB1R3Y7EcX" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="parameter" />
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" node="PB1R3Y7Ed7" resolve="RulePartParameterDeclaration" />
</node>
</node>
<node concept="1TIwiD" id="6p0DfM0a3gA">
<property role="TrG5h" value="Head" />
@ -363,16 +369,8 @@
<property role="R5$K7" value="true" />
<property role="R5$K2" value="false" />
<ref role="1TJDcQ" to="tpee:fzclF8l" resolve="Statement" />
<node concept="1TJgyj" id="2E5lcNn8k3O" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="declaration" />
<property role="20lbJX" value="0..n" />
<ref role="20lvS9" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
<node concept="1TJgyj" id="5zfvpQ72gqq" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="dataType" />
<ref role="20lvS9" to="tpee:fz3vP1H" resolve="Type" />
<node concept="PrWs8" id="75vUFrS_9Sh" role="PzmwI">
<ref role="PrY4T" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
</node>
</node>
<node concept="1TIwiD" id="4laj_h9P4cy">
@ -741,5 +739,13 @@
<property role="34LRSv" value="fragment" />
<ref role="1TJDcQ" node="4EfgX2ET3GH" resolve="AbstractRule" />
</node>
<node concept="1TIwiD" id="PB1R3Y7Ed7">
<property role="3GE5qa" value="constraint.variable" />
<property role="TrG5h" value="RulePartParameterDeclaration" />
<ref role="1TJDcQ" to="tpck:gw2VY9q" resolve="BaseConcept" />
<node concept="PrWs8" id="75vUFrS_flD" role="PzmwI">
<ref role="PrY4T" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
</node>
</node>
</model>

View File

@ -249,6 +249,10 @@
<child id="238586457668550958" name="expression" index="22Ky0K" />
</concept>
<concept id="1564179198502666296" name="jetbrains.mps.logic.structure.LogicalType" flags="ig" index="26uTi9" />
<concept id="8169506320648805904" name="jetbrains.mps.logic.structure.LogicalVariableDeclarationContainer" flags="ng" index="29MRiA">
<child id="6399471711045617306" name="dataType" index="3vLBG7" />
<child id="3063948360254832884" name="declaration" index="3XD1gS" />
</concept>
<concept id="8829335963593820278" name="jetbrains.mps.logic.structure.LogicalVariableReference" flags="ng" index="a7P8L">
<reference id="8829335963593822893" name="declaration" index="a7OzE" />
</concept>
@ -509,6 +513,7 @@
</concept>
<concept id="7368070394766963523" name="jetbrains.mps.lang.typesystem2.structure.RuleComponent" flags="ng" index="3Aq9uZ">
<child id="7368070394766972297" name="code" index="3Aqf5P" />
<child id="965748826975413053" name="parameter" index="3Nuqhd" />
</concept>
<concept id="7368070394766966158" name="jetbrains.mps.lang.typesystem2.structure.Guard" flags="ng" index="3Aq9_M" />
<concept id="7368070394766966388" name="jetbrains.mps.lang.typesystem2.structure.Body" flags="ng" index="3Aq9E8" />
@ -526,16 +531,13 @@
<reference id="7368070394767091750" name="template" index="3AqCNq" />
<child id="7368070394768117915" name="argument" index="3AunhB" />
</concept>
<concept id="965748826975413063" name="jetbrains.mps.lang.typesystem2.structure.RulePartParameterDeclaration" flags="ng" index="3NuqgR" />
<concept id="3063948360252660075" name="jetbrains.mps.lang.typesystem2.structure.TypeofConstraint" flags="ng" index="3XxkQB">
<child id="3063948360252667312" name="assignedType" index="3Xxm5W" />
<child id="3063948360252666228" name="anchor" index="3XxmmS" />
</concept>
<concept id="3063948360254047686" name="jetbrains.mps.lang.typesystem2.structure.ParameterDeclarationStatement" flags="ng" index="3X$14a" />
<concept id="3063948360254202562" name="jetbrains.mps.lang.typesystem2.structure.LocalDeclarationStatement" flags="ng" index="3X$Joe" />
<concept id="3063948360254828460" name="jetbrains.mps.lang.typesystem2.structure.LogicVariableDeclarationStatement" flags="ng" index="3XD7Hw">
<child id="6399471711045617306" name="dataType" index="3vLBG7" />
<child id="3063948360254832884" name="declaration" index="3XD1gS" />
</concept>
</language>
</registry>
<node concept="AVZre" id="3Qp4N06bUAA">

View File

@ -356,13 +356,13 @@
</node>
<node concept="2tJIrI" id="3x8pcoFtf2t" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bXs66" role="jymVt">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letValue" />
<node concept="37vLTG" id="1ffsG7bXs67" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="1ffsG7bXs68" role="1tU5fm" />
</node>
<node concept="16syzq" id="1ffsG7bXs69" role="3clF45">
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="Let" />
</node>
<node concept="3Tm1VV" id="1ffsG7bXs6a" role="1B3o_S" />
<node concept="3clFbS" id="1ffsG7bXs6b" role="3clF47">
@ -380,7 +380,7 @@
<node concept="3uibUv" id="1ffsG7bVaZg" role="3clF45">
<ref role="3uigEE" node="1ffsG7bV945" resolve="Iterating" />
<node concept="16syzq" id="1ffsG7bVhyI" role="11_B2D">
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="T" />
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="Iter" />
</node>
</node>
<node concept="3Tm1VV" id="8VaLZRGVER" role="1B3o_S" />
@ -396,6 +396,7 @@
<node concept="2tJIrI" id="8VaLZRGZ8t" role="jymVt" />
<node concept="3clFb_" id="1ffsG7cguKY" role="jymVt">
<property role="TrG5h" value="applyToParts" />
<property role="IEkAT" value="false" />
<node concept="37vLTG" id="1ffsG7cgVrH" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="1ffsG7cgVrI" role="1tU5fm" />
@ -403,13 +404,13 @@
<node concept="37vLTG" id="1ffsG7cgVrJ" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="1ffsG7cgVrK" role="1tU5fm">
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="T" />
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="1ffsG7cgVrL" role="3clF46">
<property role="TrG5h" value="boundParam" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7cgVrM" role="1tU5fm">
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="Let" />
</node>
</node>
<node concept="3uibUv" id="1ffsG7cgQ0y" role="3clF45">
@ -449,27 +450,36 @@
</node>
</node>
</node>
<node concept="2AHcQZ" id="PB1R3Yer9C" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Deprecated" resolve="Deprecated" />
</node>
</node>
<node concept="3Tm1VV" id="4OKkcnfu_vD" role="1B3o_S" />
<node concept="3uibUv" id="4OKkcnfu_vE" role="1zkMxy">
<ref role="3uigEE" node="1ffsG7bX1MS" resolve="BaseIteratingRuleTemplate" />
<node concept="16syzq" id="4OKkcnfu_vF" role="11_B2D">
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_vG" resolve="Let" />
</node>
<node concept="16syzq" id="1ffsG7bXqav" role="11_B2D">
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="T" />
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="Iter" />
</node>
<node concept="16syzq" id="PB1R3YelJy" role="11_B2D">
<ref role="16sUi3" node="PB1R3YekIA" resolve="Logical" />
</node>
</node>
<node concept="16euLQ" id="4OKkcnfu_vG" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="4OKkcnfu_vH" role="16eVyc">
<property role="TrG5h" value="T" />
<property role="TrG5h" value="Iter" />
</node>
<node concept="16euLQ" id="PB1R3YekIA" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
<node concept="3uibUv" id="67SsWaEn6P_" role="EKbjA">
<ref role="3uigEE" node="1ffsG7bV945" resolve="Iterating" />
<node concept="16syzq" id="67SsWaEn7S7" role="11_B2D">
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="T" />
<ref role="16sUi3" node="4OKkcnfu_vH" resolve="Iter" />
</node>
</node>
</node>
@ -524,13 +534,13 @@
</node>
<node concept="2tJIrI" id="3x8pcoFtje6" role="jymVt" />
<node concept="3clFb_" id="4OKkcnfu_wz" role="jymVt">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letValue" />
<node concept="37vLTG" id="4OKkcnfu_w$" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="4OKkcnfu_w_" role="1tU5fm" />
</node>
<node concept="16syzq" id="4OKkcnfu_wA" role="3clF45">
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="Let" />
</node>
<node concept="3Tm1VV" id="4OKkcnfu_wB" role="1B3o_S" />
<node concept="3clFbS" id="4OKkcnfu_wC" role="3clF47">
@ -543,16 +553,44 @@
</node>
</node>
<node concept="2tJIrI" id="1ffsG7chRVv" role="jymVt" />
<node concept="3clFb_" id="PB1R3YsDCl" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="logicalVar" />
<node concept="37vLTG" id="PB1R3YsDCm" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="PB1R3YsDCn" role="1tU5fm" />
</node>
<node concept="37vLTG" id="PB1R3YsDCo" role="3clF46">
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="PB1R3YsDCy" role="1tU5fm">
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="Let" />
</node>
</node>
<node concept="16syzq" id="PB1R3YsDCz" role="3clF45">
<ref role="16sUi3" node="PB1R3Yejeo" resolve="Logical" />
</node>
<node concept="3Tm1VV" id="PB1R3YsDCr" role="1B3o_S" />
<node concept="3clFbS" id="PB1R3YsDC$" role="3clF47">
<node concept="3clFbF" id="PB1R3YsDOJ" role="3cqZAp">
<node concept="10Nm6u" id="PB1R3YsDOI" role="3clFbG" />
</node>
</node>
<node concept="2AHcQZ" id="PB1R3YsDPu" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="PB1R3YsDXx" role="jymVt" />
<node concept="3clFb_" id="1ffsG7chQb$" role="jymVt">
<property role="TrG5h" value="applyToFragment" />
<property role="IEkAT" value="false" />
<node concept="37vLTG" id="1ffsG7chQb_" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="1ffsG7chQbA" role="1tU5fm" />
</node>
<node concept="37vLTG" id="1ffsG7chQbD" role="3clF46">
<property role="TrG5h" value="boundParam" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7chQbE" role="1tU5fm">
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="Let" />
</node>
</node>
<node concept="3uibUv" id="1ffsG7chQbF" role="3clF45">
@ -592,16 +630,25 @@
</node>
</node>
</node>
<node concept="2AHcQZ" id="PB1R3YejyM" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Deprecated" resolve="Deprecated" />
</node>
</node>
<node concept="2tJIrI" id="1ffsG7cfHgp" role="jymVt" />
<node concept="3Tm1VV" id="4OKkcnfu_x9" role="1B3o_S" />
<node concept="16euLQ" id="4OKkcnfu_xd" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="PB1R3Yejeo" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
<node concept="3uibUv" id="1ffsG7bUchI" role="1zkMxy">
<ref role="3uigEE" node="1ffsG7bUbCM" resolve="BaseRuleTemplate" />
<node concept="16syzq" id="1ffsG7bUsVy" role="11_B2D">
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="S" />
<ref role="16sUi3" node="4OKkcnfu_xd" resolve="Let" />
</node>
<node concept="16syzq" id="PB1R3Yejsu" role="11_B2D">
<ref role="16sUi3" node="PB1R3Yejeo" resolve="Logical" />
</node>
</node>
</node>
@ -1847,6 +1894,7 @@
<node concept="3uibUv" id="1ffsG7c3Xt2" role="1tU5fm">
<ref role="3uigEE" node="1ffsG7bW_V4" resolve="RuleTemplate" />
<node concept="3qTvmN" id="1ffsG7c3XtK" role="11_B2D" />
<node concept="3qTvmN" id="PB1R3YeEbl" role="11_B2D" />
</node>
</node>
<node concept="3cqZAl" id="4OKkcnfu_Ab" role="3clF45" />
@ -1960,9 +2008,9 @@
<node concept="3Tqbb2" id="1ffsG7bUm$D" role="1tU5fm" />
</node>
<node concept="37vLTG" id="1ffsG7bUm$E" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7bUnik" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="S" />
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="Let" />
</node>
</node>
<node concept="10P_77" id="1ffsG7bUm$G" role="3clF45" />
@ -1986,9 +2034,9 @@
<node concept="3Tqbb2" id="1ffsG7bUnFp" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2q0gzCFOCXd" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="2q0gzCFOD8v" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="S" />
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="Let" />
</node>
</node>
<node concept="A3Dl8" id="1ffsG7bUnFq" role="3clF45">
@ -2005,6 +2053,33 @@
</node>
</node>
<node concept="2tJIrI" id="1ffsG7bUnZW" role="jymVt" />
<node concept="3clFb_" id="75vUFrSIQhr" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="logicalVar" />
<node concept="37vLTG" id="75vUFrSIQhs" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="75vUFrSIQht" role="1tU5fm" />
</node>
<node concept="37vLTG" id="75vUFrSIQhu" role="3clF46">
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="75vUFrSIQhz" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="Let" />
</node>
</node>
<node concept="16syzq" id="75vUFrSIQh$" role="3clF45">
<ref role="16sUi3" node="PB1R3Yeimy" resolve="Logical" />
</node>
<node concept="3Tm1VV" id="75vUFrSIQhx" role="1B3o_S" />
<node concept="3clFbS" id="75vUFrSIQh_" role="3clF47">
<node concept="3clFbF" id="75vUFrSIQGI" role="3cqZAp">
<node concept="10Nm6u" id="75vUFrSIQGH" role="3clFbG" />
</node>
</node>
<node concept="2AHcQZ" id="75vUFrSIQHj" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="75vUFrSIQ8c" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bUgP4" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="toString" />
@ -2060,12 +2135,18 @@
<node concept="17QB3L" id="1ffsG7bUbIO" role="1tU5fm" />
</node>
<node concept="16euLQ" id="1ffsG7bUbY4" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="PB1R3Yeimy" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
<node concept="3uibUv" id="1ffsG7bWFot" role="EKbjA">
<ref role="3uigEE" node="1ffsG7bW_V4" resolve="RuleTemplate" />
<node concept="16syzq" id="1ffsG7bWGME" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="S" />
<ref role="16sUi3" node="1ffsG7bUbY4" resolve="Let" />
</node>
<node concept="16syzq" id="PB1R3YeiLp" role="11_B2D">
<ref role="16sUi3" node="PB1R3Yeimy" resolve="Logical" />
</node>
</node>
</node>
@ -2134,6 +2215,20 @@
</node>
</node>
<node concept="2tJIrI" id="1ffsG7bWA39" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bW$2q" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="letValue" />
<node concept="37vLTG" id="1ffsG7bW_ia" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="1ffsG7bW_q1" role="1tU5fm" />
</node>
<node concept="16syzq" id="1ffsG7bW$av" role="3clF45">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="Let" />
</node>
<node concept="3Tm1VV" id="1ffsG7bW$2t" role="1B3o_S" />
<node concept="3clFbS" id="1ffsG7bW$2u" role="3clF47" />
</node>
<node concept="2tJIrI" id="PB1R3YsIZx" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bWA3o" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="isApplicable" />
@ -2142,9 +2237,9 @@
<node concept="3Tqbb2" id="1ffsG7bWBtT" role="1tU5fm" />
</node>
<node concept="37vLTG" id="1ffsG7bWB_$" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7bWBHn" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="S" />
<ref role="16sUi3" node="1ffsG7bWA35" resolve="Let" />
</node>
</node>
<node concept="10P_77" id="1ffsG7bWAbc" role="3clF45" />
@ -2165,13 +2260,33 @@
<node concept="3Tqbb2" id="2q0gzCFLe4r" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2q0gzCFLeij" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="2q0gzCFLezl" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="S" />
<ref role="16sUi3" node="1ffsG7bWA35" resolve="Let" />
</node>
</node>
</node>
<node concept="2tJIrI" id="1ffsG7bWCTe" role="jymVt" />
<node concept="3clFb_" id="PB1R3YsCm9" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="logicalVar" />
<node concept="37vLTG" id="PB1R3YsCma" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="PB1R3YsCmb" role="1tU5fm" />
</node>
<node concept="37vLTG" id="PB1R3YsD6L" role="3clF46">
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="PB1R3YsDiE" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="Let" />
</node>
</node>
<node concept="16syzq" id="PB1R3YsDuK" role="3clF45">
<ref role="16sUi3" node="PB1R3YehXt" resolve="Logical" />
</node>
<node concept="3Tm1VV" id="PB1R3YsCmd" role="1B3o_S" />
<node concept="3clFbS" id="PB1R3YsCme" role="3clF47" />
</node>
<node concept="2tJIrI" id="PB1R3YsHTd" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bWCVq" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="apply" />
@ -2185,32 +2300,27 @@
<node concept="3Tqbb2" id="1ffsG7bWDP4" role="1tU5fm" />
</node>
<node concept="37vLTG" id="1ffsG7bWDXM" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7bWE6B" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="S" />
<ref role="16sUi3" node="1ffsG7bWA35" resolve="Let" />
</node>
</node>
<node concept="37vLTG" id="PB1R3Yihc0" role="3clF46">
<property role="TrG5h" value="logicVal" />
<node concept="16syzq" id="PB1R3Yihwl" role="1tU5fm">
<ref role="16sUi3" node="PB1R3YehXt" resolve="Logical" />
</node>
</node>
<node concept="3Tm1VV" id="1ffsG7bWCVt" role="1B3o_S" />
<node concept="3clFbS" id="1ffsG7bWCVu" role="3clF47" />
</node>
<node concept="2tJIrI" id="1ffsG7bWEfD" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bW$2q" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="boundValue" />
<node concept="37vLTG" id="1ffsG7bW_ia" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="1ffsG7bW_q1" role="1tU5fm" />
</node>
<node concept="16syzq" id="1ffsG7bW$av" role="3clF45">
<ref role="16sUi3" node="1ffsG7bWA35" resolve="S" />
</node>
<node concept="3Tm1VV" id="1ffsG7bW$2t" role="1B3o_S" />
<node concept="3clFbS" id="1ffsG7bW$2u" role="3clF47" />
</node>
<node concept="2tJIrI" id="67SsWaEm0IA" role="jymVt" />
<node concept="2tJIrI" id="PB1R3Yh6WC" role="jymVt" />
<node concept="3Tm1VV" id="1ffsG7bW_V5" role="1B3o_S" />
<node concept="16euLQ" id="1ffsG7bWA35" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="PB1R3YehXt" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
</node>
<node concept="312cEu" id="1ffsG7bX1MS">
@ -2243,9 +2353,9 @@
<node concept="3Tqbb2" id="1ffsG7bX6rg" role="1tU5fm" />
</node>
<node concept="37vLTG" id="2q0gzCFLfF$" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="2q0gzCFLggJ" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="S" />
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
</node>
<node concept="A3Dl8" id="1ffsG7bX6rh" role="3clF45">
@ -2281,7 +2391,7 @@
<ref role="3cqZAo" node="1ffsG7bX6rA" resolve="it" />
</node>
<node concept="37vLTw" id="2q0gzCFMpJA" role="37wK5m">
<ref role="3cqZAo" node="2q0gzCFLfF$" resolve="boundValue" />
<ref role="3cqZAo" node="2q0gzCFLfF$" resolve="letVal" />
</node>
</node>
</node>
@ -2295,7 +2405,7 @@
<node concept="3cpWsn" id="1ffsG7bX6rA" role="1Duv9x">
<property role="TrG5h" value="it" />
<node concept="16syzq" id="1ffsG7bX6rB" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="T" />
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="Iter" />
</node>
</node>
<node concept="2OqwBi" id="1ffsG7bX6rC" role="1DdaDG">
@ -2331,13 +2441,13 @@
<node concept="37vLTG" id="1ffsG7bX6rO" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="1ffsG7bX6rP" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="T" />
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="2q0gzCFLZia" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="2q0gzCFLZLQ" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="S" />
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
</node>
<node concept="A3Dl8" id="1ffsG7bX6rQ" role="3clF45">
@ -2354,6 +2464,39 @@
</node>
</node>
<node concept="2tJIrI" id="1ffsG7bX6rW" role="jymVt" />
<node concept="3clFb_" id="PB1R3YsKTE" role="jymVt">
<property role="1EzhhJ" value="false" />
<property role="TrG5h" value="logicalVar" />
<node concept="37vLTG" id="PB1R3YsKTF" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="PB1R3YsKTG" role="1tU5fm" />
</node>
<node concept="37vLTG" id="PB1R3YsKTH" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="PB1R3YsKTT" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="PB1R3YsKTJ" role="3clF46">
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="PB1R3YsKTU" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
</node>
<node concept="16syzq" id="PB1R3YsKTV" role="3clF45">
<ref role="16sUi3" node="PB1R3Yeoc6" resolve="Logical" />
</node>
<node concept="3Tm1VV" id="PB1R3YsKTM" role="1B3o_S" />
<node concept="3clFbS" id="PB1R3YsKTW" role="3clF47">
<node concept="3clFbF" id="PB1R3YsLYO" role="3cqZAp">
<node concept="10Nm6u" id="PB1R3YsLYN" role="3clFbG" />
</node>
</node>
<node concept="2AHcQZ" id="PB1R3YsLZH" role="2AJF6D">
<ref role="2AI5Lk" to="wyt6:~Override" resolve="Override" />
</node>
</node>
<node concept="2tJIrI" id="PB1R3YsLsX" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bX6rX" role="jymVt">
<property role="TrG5h" value="apply" />
<property role="1EzhhJ" value="false" />
@ -2395,7 +2538,10 @@
<ref role="3cqZAo" node="1ffsG7bX6sk" resolve="p" />
</node>
<node concept="37vLTw" id="1ffsG7bX6si" role="37wK5m">
<ref role="3cqZAo" node="1ffsG7bX6sv" resolve="boundValue" />
<ref role="3cqZAo" node="1ffsG7bX6sv" resolve="letVal" />
</node>
<node concept="37vLTw" id="PB1R3YijIb" role="37wK5m">
<ref role="3cqZAo" node="PB1R3Yhg58" resolve="logicVal" />
</node>
</node>
</node>
@ -2409,7 +2555,7 @@
<node concept="3cpWsn" id="1ffsG7bX6sk" role="1Duv9x">
<property role="TrG5h" value="p" />
<node concept="16syzq" id="1ffsG7bX6sl" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="T" />
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="Iter" />
</node>
</node>
<node concept="2OqwBi" id="1ffsG7bX6sm" role="1DdaDG">
@ -2436,9 +2582,15 @@
<node concept="3Tqbb2" id="1ffsG7bX6su" role="1tU5fm" />
</node>
<node concept="37vLTG" id="1ffsG7bX6sv" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7bX6sw" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="S" />
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
</node>
<node concept="37vLTG" id="PB1R3Yhg58" role="3clF46">
<property role="TrG5h" value="logicVal" />
<node concept="16syzq" id="PB1R3Yhgzc" role="1tU5fm">
<ref role="16sUi3" node="PB1R3Yeoc6" resolve="Logical" />
</node>
</node>
<node concept="2AHcQZ" id="1ffsG7bX6sx" role="2AJF6D">
@ -2450,22 +2602,31 @@
<node concept="3uibUv" id="1ffsG7bX2a9" role="1zkMxy">
<ref role="3uigEE" node="1ffsG7bUbCM" resolve="BaseRuleTemplate" />
<node concept="16syzq" id="1ffsG7bX2$t" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="S" />
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
<node concept="16syzq" id="PB1R3YepTQ" role="11_B2D">
<ref role="16sUi3" node="PB1R3Yeoc6" resolve="Logical" />
</node>
</node>
<node concept="16euLQ" id="1ffsG7bX2zU" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="1ffsG7bX2$8" role="16eVyc">
<property role="TrG5h" value="T" />
<property role="TrG5h" value="Iter" />
</node>
<node concept="16euLQ" id="PB1R3Yeoc6" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
<node concept="3uibUv" id="1ffsG7bXiAl" role="EKbjA">
<ref role="3uigEE" node="1ffsG7bXcuq" resolve="IteratingRuleTemplate" />
<node concept="16syzq" id="1ffsG7bXj_H" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="S" />
<ref role="16sUi3" node="1ffsG7bX2zU" resolve="Let" />
</node>
<node concept="16syzq" id="1ffsG7bXklu" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="T" />
<ref role="16sUi3" node="1ffsG7bX2$8" resolve="Iter" />
</node>
<node concept="16syzq" id="PB1R3YesMz" role="11_B2D">
<ref role="16sUi3" node="PB1R3Yeoc6" resolve="Logical" />
</node>
</node>
</node>
@ -2481,7 +2642,7 @@
<node concept="3uibUv" id="8VaLZRH3qA" role="3clF45">
<ref role="3uigEE" node="1ffsG7bV945" resolve="Iterating" />
<node concept="16syzq" id="8VaLZRH3s1" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="T" />
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="Iter" />
</node>
</node>
</node>
@ -2496,13 +2657,13 @@
<node concept="37vLTG" id="2q0gzCFLipW" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="2q0gzCFLipX" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="T" />
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="2q0gzCFLiOj" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="2q0gzCFLj1D" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="S" />
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="Let" />
</node>
</node>
<node concept="A3Dl8" id="2q0gzCFLipY" role="3clF45">
@ -2511,6 +2672,32 @@
<node concept="3Tm1VV" id="2q0gzCFLiq0" role="1B3o_S" />
<node concept="3clFbS" id="2q0gzCFLiq1" role="3clF47" />
</node>
<node concept="2tJIrI" id="PB1R3YsH4i" role="jymVt" />
<node concept="3clFb_" id="PB1R3YsGQb" role="jymVt">
<property role="1EzhhJ" value="true" />
<property role="TrG5h" value="logicalVar" />
<node concept="37vLTG" id="PB1R3YsGQc" role="3clF46">
<property role="TrG5h" value="input" />
<node concept="3Tqbb2" id="PB1R3YsGQd" role="1tU5fm" />
</node>
<node concept="37vLTG" id="PB1R3YsKr4" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="PB1R3YsKr5" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="PB1R3YsGQe" role="3clF46">
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="PB1R3YsGQf" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="Let" />
</node>
</node>
<node concept="16syzq" id="PB1R3YsGQg" role="3clF45">
<ref role="16sUi3" node="PB1R3Yes1w" resolve="Logical" />
</node>
<node concept="3Tm1VV" id="PB1R3YsGQh" role="1B3o_S" />
<node concept="3clFbS" id="PB1R3YsGQi" role="3clF47" />
</node>
<node concept="2tJIrI" id="1ffsG7bXfbD" role="jymVt" />
<node concept="3clFb_" id="1ffsG7bXfck" role="jymVt">
<property role="1EzhhJ" value="true" />
@ -2527,13 +2714,19 @@
<node concept="37vLTG" id="1ffsG7bXguM" role="3clF46">
<property role="TrG5h" value="iterateOver" />
<node concept="16syzq" id="1ffsG7bXgG3" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="T" />
<ref role="16sUi3" node="1ffsG7bXcDZ" resolve="Iter" />
</node>
</node>
<node concept="37vLTG" id="1ffsG7bXgUJ" role="3clF46">
<property role="TrG5h" value="boundValue" />
<property role="TrG5h" value="letVal" />
<node concept="16syzq" id="1ffsG7bXh86" role="1tU5fm">
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="S" />
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="Let" />
</node>
</node>
<node concept="37vLTG" id="PB1R3YiiBz" role="3clF46">
<property role="TrG5h" value="logicVal" />
<node concept="16syzq" id="PB1R3YiiHS" role="1tU5fm">
<ref role="16sUi3" node="PB1R3Yes1w" resolve="Logical" />
</node>
</node>
<node concept="3Tm1VV" id="1ffsG7bXfcn" role="1B3o_S" />
@ -2542,15 +2735,21 @@
<node concept="2tJIrI" id="1ffsG7bXdrD" role="jymVt" />
<node concept="3Tm1VV" id="1ffsG7bXcur" role="1B3o_S" />
<node concept="16euLQ" id="1ffsG7bXcDV" role="16eVyc">
<property role="TrG5h" value="S" />
<property role="TrG5h" value="Let" />
</node>
<node concept="16euLQ" id="1ffsG7bXcDZ" role="16eVyc">
<property role="TrG5h" value="T" />
<property role="TrG5h" value="Iter" />
</node>
<node concept="16euLQ" id="PB1R3Yes1w" role="16eVyc">
<property role="TrG5h" value="Logical" />
</node>
<node concept="3uibUv" id="1ffsG7bXcPu" role="3HQHJm">
<ref role="3uigEE" node="1ffsG7bW_V4" resolve="RuleTemplate" />
<node concept="16syzq" id="1ffsG7bXdfH" role="11_B2D">
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="S" />
<ref role="16sUi3" node="1ffsG7bXcDV" resolve="Let" />
</node>
<node concept="16syzq" id="PB1R3Yes1D" role="11_B2D">
<ref role="16sUi3" node="PB1R3Yes1w" resolve="Logical" />
</node>
</node>
</node>

View File

@ -208,5 +208,31 @@
<node concept="3clFbS" id="7MlQDeOyT3R" role="2VODD2" />
</node>
</node>
<node concept="13h7C7" id="75vUFrSLzLP">
<property role="3GE5qa" value="logical" />
<ref role="13h7C2" to="5j4j:7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
<node concept="13i0hz" id="75vUFrSLzQL" role="13h7CS">
<property role="TrG5h" value="getContainer" />
<node concept="3Tm1VV" id="75vUFrSLzQM" role="1B3o_S" />
<node concept="3clFbS" id="75vUFrSLzQN" role="3clF47">
<node concept="3clFbF" id="75vUFrSLzVQ" role="3cqZAp">
<node concept="1PxgMI" id="75vUFrSL$eI" role="3clFbG">
<property role="1BlNFB" value="true" />
<ref role="1PxNhF" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
<node concept="2OqwBi" id="75vUFrSLzXF" role="1PxMeX">
<node concept="13iPFW" id="75vUFrSLzVP" role="2Oq$k0" />
<node concept="1mfA1w" id="75vUFrSL$5c" role="2OqNvi" />
</node>
</node>
</node>
</node>
<node concept="3Tqbb2" id="75vUFrSLzQT" role="3clF45">
<ref role="ehGHo" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
</node>
</node>
<node concept="13hLZK" id="75vUFrSLzLQ" role="13h7CW">
<node concept="3clFbS" id="75vUFrSLzLR" role="2VODD2" />
</node>
</node>
</model>

View File

@ -125,6 +125,8 @@
</concept>
</language>
<language id="3f4bc5f5-c6c1-4a28-8b10-c83066ffa4a1" name="jetbrains.mps.lang.constraints">
<concept id="1202989531578" name="jetbrains.mps.lang.constraints.structure.ConstraintFunction_CanBeAChild" flags="in" index="nKS2y" />
<concept id="1202989658459" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_parentNode" flags="nn" index="nLn13" />
<concept id="8966504967485224688" name="jetbrains.mps.lang.constraints.structure.ConstraintFunctionParameter_contextNode" flags="nn" index="2rP1CM" />
<concept id="1147467115080" name="jetbrains.mps.lang.constraints.structure.NodePropertyConstraint" flags="ng" index="EnEH3">
<reference id="1147467295099" name="applicableProperty" index="EomxK" />
@ -137,6 +139,7 @@
<reference id="1213093996982" name="concept" index="1M2myG" />
<child id="1213098023997" name="property" index="1MhHOB" />
<child id="1213100494875" name="referent" index="1Mr941" />
<child id="1213106463729" name="canBeChild" index="1MLUbF" />
</concept>
<concept id="1148687176410" name="jetbrains.mps.lang.constraints.structure.NodeReferentConstraint" flags="ng" index="1N5Pfh">
<reference id="1148687202698" name="applicableLink" index="1N5Vy1" />
@ -166,7 +169,11 @@
<child id="1144104376918" name="parameter" index="1xVPHs" />
</concept>
<concept id="1179409122411" name="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" flags="nn" index="2qgKlT" />
<concept id="7453996997717780434" name="jetbrains.mps.lang.smodel.structure.Node_GetSConceptOperation" flags="nn" index="2yIwOk" />
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="1180031783296" name="jetbrains.mps.lang.smodel.structure.Concept_IsSubConceptOfOperation" flags="nn" index="2Zo12i">
<child id="1180031783297" name="conceptArgument" index="2Zo12j" />
</concept>
<concept id="1171500988903" name="jetbrains.mps.lang.smodel.structure.Node_GetChildrenOperation" flags="nn" index="32TBzR" />
<concept id="2644386474300074836" name="jetbrains.mps.lang.smodel.structure.ConceptIdRefExpression" flags="nn" index="35c_gC">
<reference id="2644386474300074837" name="conceptDeclaration" index="35c_gD" />
@ -429,6 +436,23 @@
</node>
</node>
</node>
<node concept="nKS2y" id="75vUFrSCHCs" role="1MLUbF">
<node concept="3clFbS" id="75vUFrSCHCt" role="2VODD2">
<node concept="3clFbF" id="75vUFrSCHHo" role="3cqZAp">
<node concept="2OqwBi" id="75vUFrSCIqq" role="3clFbG">
<node concept="2OqwBi" id="75vUFrSCHNr" role="2Oq$k0">
<node concept="nLn13" id="75vUFrSCHHn" role="2Oq$k0" />
<node concept="2yIwOk" id="75vUFrSCI0V" role="2OqNvi" />
</node>
<node concept="2Zo12i" id="75vUFrSCIBe" role="2OqNvi">
<node concept="chp4Y" id="75vUFrSCIJ9" role="2Zo12j">
<ref role="cht4Q" to="5j4j:75vUFrS_9Sg" resolve="LogicalVariableDeclarationContainer" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="1M2fIO" id="7E86$tK_SDr">
<property role="3GE5qa" value="logical" />

View File

@ -332,5 +332,20 @@
<ref role="20lvS9" node="5lJXKARS0" resolve="Atom" />
</node>
</node>
<node concept="PlHQZ" id="75vUFrS_9Sg">
<property role="3GE5qa" value="constraint.variable" />
<property role="TrG5h" value="LogicalVariableDeclarationContainer" />
<node concept="1TJgyj" id="2E5lcNn8k3O" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="declaration" />
<property role="20lbJX" value="1..n" />
<ref role="20lvS9" node="7E86$tKtfM3" resolve="LogicalVariableDeclaration" />
</node>
<node concept="1TJgyj" id="5zfvpQ72gqq" role="1TKVEi">
<property role="20lmBu" value="aggregation" />
<property role="20kJfa" value="dataType" />
<ref role="20lvS9" to="tpee:fz3vP1H" resolve="Type" />
</node>
</node>
</model>

View File

@ -484,7 +484,7 @@
</node>
</node>
<node concept="3TrEf2" id="2c3nq4GQKmT" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5zfvpQ72gqq" />
<ref role="3Tt5mk" to="5j4j:5zfvpQ72gqq" />
</node>
</node>
</node>
@ -533,7 +533,7 @@
</node>
</node>
<node concept="3TrEf2" id="7dgRGU4Agts" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5zfvpQ72gqq" />
<ref role="3Tt5mk" to="5j4j:5zfvpQ72gqq" />
</node>
</node>
</node>