Substitution and transformation actions for easier input of logical variables and terms.

This commit is contained in:
Fedor Isakov 2017-05-19 14:46:22 +02:00
parent 32618d55bf
commit cff4669e3f
3 changed files with 243 additions and 42 deletions

View File

@ -92,6 +92,7 @@
<concept id="1638911550608571617" name="jetbrains.mps.lang.editor.structure.TransformationMenu_Default" flags="ng" index="IW6AY" />
<concept id="1638911550608610798" name="jetbrains.mps.lang.editor.structure.QueryFunction_TransformationMenu_Execute" flags="ig" index="IWg2L" />
<concept id="1638911550608610278" name="jetbrains.mps.lang.editor.structure.TransformationMenuPart_Action" flags="ng" index="IWgqT">
<child id="6202297022026447496" name="canExecuteFunction" index="2jiSrf" />
<child id="1638911550608610281" name="executeFunction" index="IWgqQ" />
<child id="5692353713941573325" name="textFunction" index="1hCUd6" />
</concept>
@ -245,6 +246,10 @@
</language>
<language id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage">
<concept id="1080223426719" name="jetbrains.mps.baseLanguage.structure.OrExpression" flags="nn" index="22lmx$" />
<concept id="1215693861676" name="jetbrains.mps.baseLanguage.structure.BaseAssignmentExpression" flags="nn" index="d038R">
<child id="1068498886297" name="rValue" index="37vLTx" />
<child id="1068498886295" name="lValue" index="37vLTJ" />
</concept>
<concept id="4836112446988635817" name="jetbrains.mps.baseLanguage.structure.UndefinedType" flags="in" index="2jxLKc" />
<concept id="1202948039474" name="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" flags="nn" index="liA8E" />
<concept id="1179360813171" name="jetbrains.mps.baseLanguage.structure.HexIntegerLiteral" flags="nn" index="2nou5x">
@ -275,6 +280,7 @@
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
</concept>
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
<concept id="1225271177708" name="jetbrains.mps.baseLanguage.structure.StringType" flags="in" index="17QB3L" />
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
<child id="5680397130376446158" name="type" index="1tU5fm" />
@ -417,6 +423,9 @@
<concept id="1180636770613" name="jetbrains.mps.lang.smodel.structure.SNodeCreator" flags="nn" index="3zrR0B">
<child id="1180636770616" name="createdType" index="3zrR0E" />
</concept>
<concept id="1140131837776" name="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithAnotherOperation" flags="nn" index="1P9Npp">
<child id="1140131861877" name="replacementNode" index="1P9ThW" />
</concept>
<concept id="1140137987495" name="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" flags="nn" index="1PxgMI">
<property id="1238684351431" name="asCast" index="1BlNFB" />
</concept>
@ -3221,58 +3230,125 @@
<property role="CtIbK" value="RIGHT" />
</node>
</node>
<node concept="aenpk" id="4hPXq9Jm69Q" role="1Qtc8A">
<node concept="27VH4U" id="4hPXq9Jm69R" role="aenpu">
<node concept="3clFbS" id="4hPXq9Jm69S" role="2VODD2">
<node concept="3clFbF" id="4hPXq9Jm69T" role="3cqZAp">
<node concept="2OqwBi" id="4hPXq9Jm69U" role="3clFbG">
<node concept="2OqwBi" id="4hPXq9Jm69V" role="2Oq$k0">
<node concept="7Obwk" id="4hPXq9Jm69Z" role="2Oq$k0" />
<node concept="3TrEf2" id="4hPXq9Jm69X" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4xOAf2nhhJX" resolve="position" />
</node>
</node>
<node concept="3w_OXm" id="4hPXq9Jm69Y" role="2OqNvi" />
<node concept="IWgqT" id="7XmdqtdOX91" role="1Qtc8A">
<node concept="1hCUdq" id="7XmdqtdOX93" role="1hCUd6">
<node concept="3clFbS" id="7XmdqtdOX95" role="2VODD2">
<node concept="3clFbF" id="7XmdqtdOXue" role="3cqZAp">
<node concept="Xl_RD" id="7XmdqtdOXud" role="3clFbG">
<property role="Xl_RC" value="=" />
</node>
</node>
</node>
</node>
<node concept="IWgqT" id="4hPXq9Jm6a0" role="aenpr">
<node concept="1hCUdq" id="4hPXq9Jm6a1" role="1hCUd6">
<node concept="3clFbS" id="4hPXq9Jm6a2" role="2VODD2">
<node concept="3clFbF" id="4hPXq9Jm6a3" role="3cqZAp">
<node concept="Xl_RD" id="4hPXq9Jm6a4" role="3clFbG">
<property role="Xl_RC" value="[" />
<node concept="IWg2L" id="7XmdqtdOX97" role="IWgqQ">
<node concept="3clFbS" id="7XmdqtdOX99" role="2VODD2">
<node concept="3cpWs8" id="4sSe4$p4w5F" role="3cqZAp">
<node concept="3cpWsn" id="4sSe4$p4w5G" role="3cpWs9">
<property role="TrG5h" value="plv" />
<node concept="3Tqbb2" id="4sSe4$p4w5D" role="1tU5fm">
<ref role="ehGHo" to="5j4j:4sSe4$p4oOM" resolve="PatternLogicalVariable" />
</node>
<node concept="2ShNRf" id="4sSe4$p4w5H" role="33vP2m">
<node concept="3zrR0B" id="4sSe4$p4w5I" role="2ShVmc">
<node concept="3Tqbb2" id="4sSe4$p4w5J" role="3zrR0E">
<ref role="ehGHo" to="5j4j:4sSe4$p4oOM" resolve="PatternLogicalVariable" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4sSe4$p4FXc" role="3cqZAp">
<node concept="2OqwBi" id="4sSe4$p4G3j" role="3clFbG">
<node concept="7Obwk" id="7XmdqtdP6NV" role="2Oq$k0" />
<node concept="1P9Npp" id="4sSe4$p4Ggq" role="2OqNvi">
<node concept="37vLTw" id="4sSe4$p4Gl8" role="1P9ThW">
<ref role="3cqZAo" node="4sSe4$p4w5G" resolve="plv" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4sSe4$p4vIY" role="3cqZAp">
<node concept="37vLTI" id="4sSe4$p4wuf" role="3clFbG">
<node concept="2OqwBi" id="4sSe4$p4wBZ" role="37vLTx">
<node concept="7Obwk" id="7XmdqtdP6Oq" role="2Oq$k0" />
<node concept="3YRAZt" id="4sSe4$p4wJS" role="2OqNvi" />
</node>
<node concept="2OqwBi" id="4sSe4$p4we2" role="37vLTJ">
<node concept="37vLTw" id="4sSe4$p4w5K" role="2Oq$k0">
<ref role="3cqZAo" node="4sSe4$p4w5G" resolve="plv" />
</node>
<node concept="3TrEf2" id="4sSe4$p4wkM" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4sSe4$p4oON" resolve="variable" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="4sSe4$p4wSN" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdPl4B" role="3clFbG">
<node concept="2OqwBi" id="4sSe4$p4wYQ" role="2Oq$k0">
<node concept="37vLTw" id="4sSe4$p4wSL" role="2Oq$k0">
<ref role="3cqZAo" node="4sSe4$p4w5G" resolve="plv" />
</node>
<node concept="3TrEf2" id="4sSe4$p4x9l" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4sSe4$p4oOP" resolve="value" />
</node>
</node>
<node concept="2DeJnY" id="7XmdqtdPlo$" role="2OqNvi" />
</node>
</node>
</node>
</node>
</node>
<node concept="IWgqT" id="7XmdqtdOVNH" role="1Qtc8A">
<node concept="1hCUdq" id="7XmdqtdOVNJ" role="1hCUd6">
<node concept="3clFbS" id="7XmdqtdOVNL" role="2VODD2">
<node concept="3clFbF" id="7XmdqtdOWrG" role="3cqZAp">
<node concept="Xl_RD" id="7XmdqtdOWrF" role="3clFbG">
<property role="Xl_RC" value="#" />
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="7XmdqtdOVNN" role="IWgqQ">
<node concept="3clFbS" id="7XmdqtdOVNP" role="2VODD2">
<node concept="3clFbF" id="7XmdqtdOWGL" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdOWGM" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdOWGN" role="2Oq$k0">
<node concept="7Obwk" id="7XmdqtdOWGO" role="2Oq$k0" />
<node concept="3TrEf2" id="7XmdqtdOWGP" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4xOAf2nhhJX" resolve="position" />
</node>
</node>
<node concept="2DeJnY" id="7XmdqtdOWGQ" role="2OqNvi" />
</node>
</node>
<node concept="3clFbF" id="7XmdqtdOWGR" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdOWGS" role="3clFbG">
<node concept="7Obwk" id="7XmdqtdOWGT" role="2Oq$k0" />
<node concept="1OKiuA" id="7XmdqtdOWGU" role="2OqNvi">
<node concept="1Q80Hx" id="7XmdqtdOWGV" role="lBI5i" />
<node concept="2B6iha" id="7XmdqtdOWGW" role="lGT1i">
<property role="1lyBwo" value="mostRelevant" />
</node>
<node concept="3cmrfG" id="7XmdqtdOWGX" role="3dN3m$">
<property role="3cmrfH" value="-1" />
</node>
</node>
</node>
</node>
</node>
<node concept="IWg2L" id="4hPXq9Jm6a5" role="IWgqQ">
<node concept="3clFbS" id="4hPXq9Jm6a6" role="2VODD2">
<node concept="3clFbF" id="4hPXq9Jm6a7" role="3cqZAp">
<node concept="2OqwBi" id="4hPXq9Jm6a8" role="3clFbG">
<node concept="2OqwBi" id="4hPXq9Jm6a9" role="2Oq$k0">
<node concept="7Obwk" id="4hPXq9Jm6af" role="2Oq$k0" />
<node concept="3TrEf2" id="4hPXq9Jm6ab" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4xOAf2nhhJX" resolve="position" />
</node>
</node>
<node concept="2DeJnY" id="4hPXq9Jm6ac" role="2OqNvi" />
</node>
</node>
<node concept="3clFbF" id="4hPXq9Jm6am" role="3cqZAp">
<node concept="2OqwBi" id="4hPXq9Jm6ah" role="3clFbG">
<node concept="7Obwk" id="4hPXq9Jm6ag" role="2Oq$k0" />
<node concept="1OKiuA" id="4hPXq9Jm6ai" role="2OqNvi">
<node concept="1Q80Hx" id="4hPXq9Jm6aj" role="lBI5i" />
<node concept="2B6iha" id="4hPXq9Jm6ak" role="lGT1i">
<property role="1lyBwo" value="mostRelevant" />
</node>
<node concept="3cmrfG" id="4hPXq9Jm6al" role="3dN3m$">
<property role="3cmrfH" value="-1" />
</node>
</node>
<node concept="27VH4U" id="7XmdqtdOW8N" role="2jiSrf">
<node concept="3clFbS" id="7XmdqtdOW8O" role="2VODD2">
<node concept="3clFbF" id="7XmdqtdOWg1" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdOWg2" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdOWg3" role="2Oq$k0">
<node concept="7Obwk" id="7XmdqtdOWg4" role="2Oq$k0" />
<node concept="3TrEf2" id="7XmdqtdOWg5" role="2OqNvi">
<ref role="3Tt5mk" to="5j4j:4xOAf2nhhJX" resolve="position" />
</node>
</node>
<node concept="3w_OXm" id="7XmdqtdOWg6" role="2OqNvi" />
</node>
</node>
</node>

View File

@ -463,6 +463,9 @@
<reference id="1143235391024" name="concept" index="I8UWU" />
</concept>
<concept id="1171407110247" name="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" flags="nn" index="2Xjw5R" />
<concept id="3562215692195599741" name="jetbrains.mps.lang.smodel.structure.SLinkImplicitSelect" flags="nn" index="13MTOL">
<reference id="3562215692195600259" name="link" index="13MTZf" />
</concept>
<concept id="2644386474300074836" name="jetbrains.mps.lang.smodel.structure.ConceptIdRefExpression" flags="nn" index="35c_gC">
<reference id="2644386474300074837" name="conceptDeclaration" index="35c_gD" />
</concept>
@ -475,6 +478,9 @@
<concept id="1154546950173" name="jetbrains.mps.lang.smodel.structure.ConceptReference" flags="ng" index="3gn64h">
<reference id="1154546997487" name="concept" index="3gnhBz" />
</concept>
<concept id="1182511038748" name="jetbrains.mps.lang.smodel.structure.Model_NodesIncludingImportedOperation" flags="nn" index="1j9C0f">
<reference id="1182511038750" name="concept" index="1j9C0d" />
</concept>
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
</concept>
@ -6852,5 +6858,119 @@
</node>
</node>
</node>
<node concept="3p36aQ" id="7XmdqtdNMJ7">
<ref role="aqKnT" to="wq2x:6p0DfM0pKSO" resolve="LogicalExpression" />
<node concept="3N5dw7" id="7XmdqtdNMLp" role="3ft7WO">
<node concept="3N5aqt" id="7XmdqtdNMLq" role="3Na0zg">
<node concept="3clFbS" id="7XmdqtdNMLr" role="2VODD2">
<node concept="3cpWs8" id="7XmdqtdNSAC" role="3cqZAp">
<node concept="3cpWsn" id="7XmdqtdNSAD" role="3cpWs9">
<property role="TrG5h" value="le" />
<node concept="3Tqbb2" id="7XmdqtdNSAB" role="1tU5fm">
<ref role="ehGHo" to="wq2x:6p0DfM0pKSO" resolve="LogicalExpression" />
</node>
<node concept="2ShNRf" id="7XmdqtdNSAE" role="33vP2m">
<node concept="3zrR0B" id="7XmdqtdNSAF" role="2ShVmc">
<node concept="3Tqbb2" id="7XmdqtdNSAG" role="3zrR0E">
<ref role="ehGHo" to="wq2x:6p0DfM0pKSO" resolve="LogicalExpression" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNMWX" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdNTZn" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdNTtp" role="2Oq$k0">
<node concept="37vLTw" id="7XmdqtdNSAH" role="2Oq$k0">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
<node concept="3TrEf2" id="7XmdqtdNTEb" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:6p0DfM0pQge" resolve="content" />
</node>
</node>
<node concept="2oxUTD" id="7XmdqtdNUmX" role="2OqNvi">
<node concept="3N4pyC" id="7XmdqtdNUwC" role="2oxUTC" />
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdNUKS" role="3cqZAp">
<node concept="37vLTw" id="7XmdqtdNUKQ" role="3clFbG">
<ref role="3cqZAo" node="7XmdqtdNSAD" resolve="le" />
</node>
</node>
</node>
</node>
<node concept="2kknPJ" id="7XmdqtdNMPi" role="2klrvf">
<ref role="2ZyFGn" to="5j4j:7E86$tKsl45" resolve="LogicalItem" />
</node>
</node>
</node>
<node concept="3p36aQ" id="7XmdqtdOhwc">
<property role="3GE5qa" value="term" />
<ref role="aqKnT" to="wq2x:1L74NXElX0R" resolve="Term" />
<node concept="2F$Pav" id="7XmdqtdOhCF" role="3ft7WO">
<node concept="3eGOop" id="7XmdqtdOhD8" role="2$S_pN">
<node concept="ucgPf" id="7XmdqtdOhDa" role="3aKz83">
<node concept="3clFbS" id="7XmdqtdOhDc" role="2VODD2">
<node concept="3cpWs8" id="7XmdqtdOxrU" role="3cqZAp">
<node concept="3cpWsn" id="7XmdqtdOxrV" role="3cpWs9">
<property role="TrG5h" value="term" />
<node concept="3Tqbb2" id="7XmdqtdOxrT" role="1tU5fm">
<ref role="ehGHo" to="wq2x:1L74NXElX0R" resolve="Term" />
</node>
<node concept="2ShNRf" id="7XmdqtdOxrW" role="33vP2m">
<node concept="3zrR0B" id="7XmdqtdOxrX" role="2ShVmc">
<node concept="3Tqbb2" id="7XmdqtdOxrY" role="3zrR0E">
<ref role="ehGHo" to="wq2x:1L74NXElX0R" resolve="Term" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdOwqy" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdOy$8" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdOxL6" role="2Oq$k0">
<node concept="37vLTw" id="7XmdqtdOxrZ" role="2Oq$k0">
<ref role="3cqZAo" node="7XmdqtdOxrV" resolve="term" />
</node>
<node concept="3TrEf2" id="7XmdqtdOy9$" role="2OqNvi">
<ref role="3Tt5mk" to="wq2x:5hSMZ_l93p$" resolve="termDecl" />
</node>
</node>
<node concept="2oxUTD" id="7XmdqtdOyM9" role="2OqNvi">
<node concept="2ZBlsa" id="7XmdqtdOzev" role="2oxUTC" />
</node>
</node>
</node>
<node concept="3clFbF" id="7XmdqtdOzwb" role="3cqZAp">
<node concept="37vLTw" id="7XmdqtdOzw9" role="3clFbG">
<ref role="3cqZAo" node="7XmdqtdOxrV" resolve="term" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Tqbb2" id="7XmdqtdOhCX" role="2ZBHrp">
<ref role="ehGHo" to="wq2x:4MEOIDFttoe" resolve="TermDeclaration" />
</node>
<node concept="2$S_p_" id="7XmdqtdOhHi" role="2$S_pT">
<node concept="3clFbS" id="7XmdqtdOhHj" role="2VODD2">
<node concept="3clFbF" id="7XmdqtdOrin" role="3cqZAp">
<node concept="2OqwBi" id="7XmdqtdOu4E" role="3clFbG">
<node concept="2OqwBi" id="7XmdqtdOrx1" role="2Oq$k0">
<node concept="1rpKSd" id="7XmdqtdOril" role="2Oq$k0" />
<node concept="1j9C0f" id="7XmdqtdOrJl" role="2OqNvi">
<ref role="1j9C0d" to="wq2x:5hSMZ_lNwqz" resolve="TermTable" />
</node>
</node>
<node concept="13MTOL" id="7XmdqtdOw1o" role="2OqNvi">
<ref role="13MTZf" to="wq2x:5hSMZ_lNwq$" resolve="termDeclaration" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</model>

View File

@ -200,6 +200,11 @@
</node>
<node concept="2Sbjvc" id="4sSe4$p4oTI" role="2ZfgGD">
<node concept="3clFbS" id="4sSe4$p4oTJ" role="2VODD2">
<node concept="3SKdUt" id="7XmdqtdP$2a" role="3cqZAp">
<node concept="3SKdUq" id="7XmdqtdP$2c" role="3SKWNk">
<property role="3SKdUp" value="FIXME replace with editor actions" />
</node>
</node>
<node concept="3cpWs8" id="4sSe4$p4w5F" role="3cqZAp">
<node concept="3cpWsn" id="4sSe4$p4w5G" role="3cpWs9">
<property role="TrG5h" value="plv" />