{"action":"created","issue":{"url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/56","repository_url":"https://api.github.com/repos/eMoflon/emoflon-tool","labels_url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/56/comments","events_url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/56/events","html_url":"https://github.com/eMoflon/emoflon-tool/issues/56","id":177535208,"number":56,"title":"MOSL SDM language and feature discussion","user":{"login":"RolandKluge","id":4731838,"avatar_url":"https://avatars.githubusercontent.com/u/4731838?v=3","gravatar_id":"","url":"https://api.github.com/users/RolandKluge","html_url":"https://github.com/RolandKluge","followers_url":"https://api.github.com/users/RolandKluge/followers","following_url":"https://api.github.com/users/RolandKluge/following{/other_user}","gists_url":"https://api.github.com/users/RolandKluge/gists{/gist_id}","starred_url":"https://api.github.com/users/RolandKluge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RolandKluge/subscriptions","organizations_url":"https://api.github.com/users/RolandKluge/orgs","repos_url":"https://api.github.com/users/RolandKluge/repos","events_url":"https://api.github.com/users/RolandKluge/events{/privacy}","received_events_url":"https://api.github.com/users/RolandKluge/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/eMoflon/emoflon-tool/labels/eMoflon-MOSL","name":"eMoflon-MOSL","color":"EDEDED"},{"url":"https://api.github.com/repos/eMoflon/emoflon-tool/labels/feature-request","name":"feature-request","color":"009800"},{"url":"https://api.github.com/repos/eMoflon/emoflon-tool/labels/nowin:emoflon-tool","name":"nowin:emoflon-tool","color":"0052cc"}],"state":"open","locked":false,"assignee":{"login":"gervarro","id":11614152,"avatar_url":"https://avatars.githubusercontent.com/u/11614152?v=3","gravatar_id":"","url":"https://api.github.com/users/gervarro","html_url":"https://github.com/gervarro","followers_url":"https://api.github.com/users/gervarro/followers","following_url":"https://api.github.com/users/gervarro/following{/other_user}","gists_url":"https://api.github.com/users/gervarro/gists{/gist_id}","starred_url":"https://api.github.com/users/gervarro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gervarro/subscriptions","organizations_url":"https://api.github.com/users/gervarro/orgs","repos_url":"https://api.github.com/users/gervarro/repos","events_url":"https://api.github.com/users/gervarro/events{/privacy}","received_events_url":"https://api.github.com/users/gervarro/received_events","type":"User","site_admin":false},"assignees":[{"login":"gervarro","id":11614152,"avatar_url":"https://avatars.githubusercontent.com/u/11614152?v=3","gravatar_id":"","url":"https://api.github.com/users/gervarro","html_url":"https://github.com/gervarro","followers_url":"https://api.github.com/users/gervarro/followers","following_url":"https://api.github.com/users/gervarro/following{/other_user}","gists_url":"https://api.github.com/users/gervarro/gists{/gist_id}","starred_url":"https://api.github.com/users/gervarro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gervarro/subscriptions","organizations_url":"https://api.github.com/users/gervarro/orgs","repos_url":"https://api.github.com/users/gervarro/repos","events_url":"https://api.github.com/users/gervarro/events{/privacy}","received_events_url":"https://api.github.com/users/gervarro/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2016-09-16T22:44:49Z","updated_at":"2016-09-16T22:44:52Z","closed_at":null,"body":"_From @gervarro on June 17, 2016 23:33_\n\nHere are my first set of comments to @anthonyanjorin @erhanleblebici @RolandKluge regarding the textual SDM language\r\n\r\n- I think that the control flow language (Operation) could probably be part of / integrated into an ecore textual language that specifies the static structure. I find the `op List.getLastNode()` notation (as a standalone method specification outside the `List` class) rather counter-intuitive to specify that there exists a `getLastMethod()` in the `List` class.\r\n- I find a single variable in the return statement `return last` significantly better than the `f@getFirstAndLast` notation.\r\n- The explicit type declaration might be unnecessary in case of pattern invocations as this information might be derivable from the pattern declaration. In case of method/operation invocations (e.g., `last : Node = this.getLastNode()`) the default type can also be derived from the return type of the method, however, enforcing a type cast definitely necessitates an explicit type declaration.\r\n\r\nI would define patterns as follows:\r\n\r\n    pattern getFirstAndLast(list : List, first : Node, last : Node) {\r\n       nodes(list, first);\r\n       nodes(list, last);\r\n       neg nac1(first);\r\n       neg nac2(last);\r\n    }\r\n\r\n    pattern nac1(first : Node) {\r\n       local noPrev : Node;\r\n       previous(first, noPrev);\r\n    }\r\n\r\n    pattern nac2(last : Node) {\r\n       local noNext : Node;\r\n       next(last, noNext);\r\n    }\r\n\r\nExplanation:\r\n- The `! noPrev : Node` notation hinders the specification of complex NAC patterns (i.e., the concept that Fred wanted to build into the SDM language).\r\n- I would keep the core pattern language as simple as in the above example, however, I could imagine some domain-specific extensions for the GT rule language.\r\n - `nodes(list, first)` could alternatively be specified as `list - nodes -> first`, however, this has already an implicit meaning that `nodes` is an edge that connects `list` to `first`, which is OK if the pattern language specifies graph structures, but I would like to keep the core pattern language as generic as possible.\r\n - I could imagine anonymous/unnamed/embedded internal patterns for NACs, however, the invocation of a first-class/named pattern should definitely remain part of the core pattern language.\r\n\r\nWhen the pattern language already exists, I would extend it to a GT rule language. Markers `++` and `--` would only occur in the GT rule language but not in the pattern language. My key requirement is that the (core) pattern language must be usable without the GT and the control flow languages.\r\n\r\nI think that the `++` and `--` markers are OK in a textual GT rule specification, however, note that the GT rules have to be mapped to several Democles patterns in the internal process.\r\n\n\n_Copied from original issue: eMoflon/emoflon#747_"},"comment":{"url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/comments/247725817","html_url":"https://github.com/eMoflon/emoflon-tool/issues/56#issuecomment-247725817","issue_url":"https://api.github.com/repos/eMoflon/emoflon-tool/issues/56","id":247725817,"user":{"login":"RolandKluge","id":4731838,"avatar_url":"https://avatars.githubusercontent.com/u/4731838?v=3","gravatar_id":"","url":"https://api.github.com/users/RolandKluge","html_url":"https://github.com/RolandKluge","followers_url":"https://api.github.com/users/RolandKluge/followers","following_url":"https://api.github.com/users/RolandKluge/following{/other_user}","gists_url":"https://api.github.com/users/RolandKluge/gists{/gist_id}","starred_url":"https://api.github.com/users/RolandKluge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RolandKluge/subscriptions","organizations_url":"https://api.github.com/users/RolandKluge/orgs","repos_url":"https://api.github.com/users/RolandKluge/repos","events_url":"https://api.github.com/users/RolandKluge/events{/privacy}","received_events_url":"https://api.github.com/users/RolandKluge/received_events","type":"User","site_admin":false},"created_at":"2016-09-16T22:44:52Z","updated_at":"2016-09-16T22:44:52Z","body":"_From @anthonyanjorin on June 18, 2016 7:27_\n\nI have to admit that I don't yet understand how pattern invocation works.  This is sort of some kind of control flow in patterns, and how is recursion handled?  This  is completely new language feature that I'll have to get used to and can't really say much about"}}
{"actor":{"display_login":"RolandKluge"}}