Coder Social home page Coder Social logo

gts_morpher's People

Contributors

narudocap avatar szschaler avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gts_morpher's Issues

repeated ids

Node identifiers are not correctly renames when collided. In the attached example, two Observer objects are added (of qualified classes left__Observer and right__Observer), but their ids are not changed (both o).

pls_repeated_ids_bug.zip
image

Sanity check @Interface annotations

Should add a validation that sanity checks any interface_of statements to ensure the use of @Interface annotations is sensible. For example, where a reference is annotated as @Interface, it makes sense to expect that the classes at either end are also annotated in this way...

Improve caching by replacing use of Pair throughout

I frequently use Pair as the key for a cache or similar lookup. Unfortunately, Pair doesn't actually implement hashCode and equals in a useful manner, so doesn't really work as a cache key. Need to replace with proper objects.

Fix extraction of rule kernels

Currently, this uses node names, which is wrong. Node names should only be used to resolve references from inside a .gts file. Instead, we should use Henshin's mappings.

virtual identities

I'm not sure whether this is an issue or a misinterpretation, but in either case it should result in a clarification in the documentation or in an implementation fix. For me, a virtual identity should be interpreted as the maximal identity (the preserve part) found in the interface part of the source rule. However, as this example shows, it expects the rule to be an extension.

The example breaks the counter example in an Observer GTS, to be able to have different types of observers, and a Counter subclass to count element instances.

pls_maps_to_id_rules_bug.zip

Auto-complete warning should not prevent weaving

If a complete morphism is marked as auto-complete, we issue a warning. When weaving as part of the build process, any GTS weaving off of such a morphism is ignored. Instead, the warning should be disregarded.

Support auto-completion of inclusions

Allow users to provide an inclusion hint when claiming unique auto-completability. This requires source and target metamodel and rules to be the same up to some filtering (currently only interface_of) and will auto-complete by object identity.

Export amalgamation-completing morphisms

weave should export the completion morphisms when exporting the GTS so that models can be transformed from the original meta-models to the amalgamated meta-model. Could, potentially, even generate the required Henshin transformation directly?

Add support for NACs

Paco will, hopefully, look at some examples of what Shift and implication mean for flat PACs/NACs and (perhaps) simple OCL expressions and then we can decide which of these to implement in the tool first.

Attributes

Can I have attributes in interfaces?
I can mark them explicitly in the ecore model, but they cannot be mapped, right?
image
vs.
image

Add xDSML keyword

Rather than having to say gts, it would be good to allow people to say xdsml as an acknowledgement that that's really what the GTS are here.

Add GTS pivot layer

The tool currently only supports Henshin-based GTSs. We should add a pivot layer to enable support for arbitrary GTSs. I have made some start on this already, but had to move it out for now as the EMF/Xtext wrangling got too much and distracted from the main purpose of the tool.

The exploration/discussion has provided some insights into how to get this done, though. The core idea is to do something similar to what Ed Willinks did for his OCL Pivot model: this is a separate model in a separate resource. The URI for this resource is of the form *.x.oclas where x is an extension specific to a particular language. A special resource factory creates resources for oclas files and these translate on first load. Otherwise, they're pretty much normal resources. The only thing that remains to do then is to get Xtext to load the oclas resources. I was originally thinking of fiddling with how Xtext finds resources and to create virtual resources for all resources to be wrapped. I now think there's actually a much easier way by asking the user to explicitly import the pivot resource into their morphism specification.

Links

unit amalgamation

It might be interesting to look into Henshin units amalgamation. I don't see how to put them together in general, but there must be some notion of compatibility between application strategies that we may explore. Even if no general method, if there are units only in the system being instantiated, by including the units as such in the resulting gts may be useful as a starting point to complete by hand.

Rename project to reflect broader scope

A possible new name might be GTSMorpher, perhaps.

  • Rename repository
  • Refactor language name
  • Change file extension (incl. in documentation)
  • Change package names

Make generation of auto-completions cancelable

There can be a lot of auto-completions to generate for some partial morphism specifications. This can make the process of generating auto-completions long and can end up blocking up Eclipse completely.

We already use a progress monitor, but currently aren't checking for cancellation requests (and, in particular, we're not using it at all in the code that actually calculates all completions). It would also be good to change the actual calculation code to something that doesn't require calculating all completions before we can start exporting them, but rather something that provides an iterator from which we can extract as few or as many completions as we are interested in (though this may be better as a separate issue).

Support for fully flexible GTS amalgamations

Currently, a weave clause requires one of the morphisms to be an interface_of morphism. For full support of the theory, we should allow both to be full morphisms.

Details of progress in PR #13.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.