Code Monkey home page Code Monkey logo

peopl's Introduction

PEoPL–Projectional Editing of Product Lines

Notice that this branch is currently unstable. There might be still problems if you use Windows (Mac and Linux should work okay-ish).

At this point we have a stable version in the branch peopl-mps-3.3.6 that requires a modified version of MPS 3.4 (see http://peopl.de for instructions on howto use it). This branch provides a more advanced version that does not require a modified version of MPS and supports mbeddr C (http://mbeddr.com) and Java.

Installation instructions:

  • Get and install MPS 2018.3.6
  • Download the mbeddr 2018.3.4 plugins
  • Copy the mbeddr plugins into MPS.
cp -r ./com.mbeddr.allInOne-1.2.21286.4e0beda-MPS-2018.3.4/plugins/* /Applications/MPS\ 2018.3.app/Contents/plugins/
  • Replace mbeddr's projectview plugins with the versions provided with PEoPL
cp ./peopl/mbeddr.projectview/gen-from-peopl/* /Applications/MPS\ 2018.3.app/Contents/plugins/com.mbeddr.mpsutil.projectview/languages/group.projectview/

Now you can either use the peopl plugins or build PEoPL's sources:

Installing the PEoPL plugins

  • Open MPS and select "Configure->Plugins"
  • Select the configuration symbol and then "Install plugins from Disk".
  • Select and install each zip file downloaded from the build/artifacts folder
  • Open the "Stack" solution and play with the classes

Building PEoPL's sources

  • Open MPS and load the PEoPL project (this branch)
  • Make the project (multiple times), while ignoring type checking errors (i.e., it should compile nevertheless)
  • If you experience problems while building go to the directory peopl->core and build "essential", "tools", "view" (right click the directories and choose rebuild). Then go to the peopl directory and build "coreExtensionBaseLanguage", etc..
  • Open the "Stack" solution and play with the classes

peopl's People

Contributors

mofeywalker avatar jochen-81 avatar benbehringer avatar carlshede avatar

Stargazers

Mykola Fedurko avatar Djonathan Barros avatar ELI JOSEPH BRADLEY avatar Tanguy Invernizzi avatar  avatar

Watchers

James Cloos avatar  avatar Pavol Rovensky avatar  avatar

peopl's Issues

Unable to add code outside of functions

It is not possible to bring up the completion menu or manually add code outside of functions. Only new lines can be added outside of functions. Macros, constants, variables, new functions, etc, does not work.

codeoutsideoffunct

Tested on Linux.

Adding if-statment in modular view results in broken then-part

Adding an if-statement, while-loop, or for-loop in the modular view results in a broken body. It is not possible to add statements to the body in the modular view. It is possible to switch to the annotative view, add a statement (for example an empty line), and then switch back to the modular view where everything now works as intended.

Two if-statements, one fixed in the annotative view and one unaltered, added in the modular view:
ifissue1

Opening the completion menu in the modular view:
ifissue2

Or, while, and for all work the same in the modular view.

Tested on Linux.

Issue with alternatives, not consistent across views

In the ifdef view, alternatives look like alternatives (i.e. ifdef, elif, endif):
alternativeifdef
In the colored annotative view, the same appears to be separate feature annotations:
alternativecolor
The modular view simply omits the feature not selected, instead of replacing it with the selected feature:
alternativemodular
Error message for function call where there appears to be 3 arguments rather than one alternative argument and one non-alternative:
alternativesfunctioncall

FeatureBlocks are not automatically created (related to issue #10)

After deleting a misplaced VP that came to be because of issue #10, any code added to where that VP was will not be added to a feature block.

Here, the VP was added below the if statement, and then removed. The second if statement and the first push()-call is not surrounded by a feature block. The area where one can "write code" outside of a feature block can be expanded by hitting enter a few time where the misplaced VP was.
if

Here, the VP was added above the switch statement. After removing it, the if statement was added without being automatically added to a new feature block.
switch

EDIT: Tested on Windows & Linux. Same issue in C and Java.

nonOptionalAlternative substitution is broken

Replacing a node annotated with an nonOptionalAlternative results in deletion of the annotation (e.g., replace the return type).
To reproduce:
i) create an alternative return type
ii) change the original return type we created an alternative for
=> all annotations are accidentally removed

Missing Icons when using the plugins

The PEoPL-related icons are entirely missing/replaced with standard icons when using the plugins. This is true for creating new solutions:
missingiconsnew

As well as for within existing PEoPL solutions:
missingiconsstack
missingiconsmbeddr

Tested on Windows & Linux.

Foreach editor broken in modular view

The fallback editor is used for the body of foreach statements in the modular view. It is possible to add statements, but the rendering is broken even with added statements.

Empty foreach:
foreach

Foreach with statements:
foreach2

Tested on Linux.

Issues with variation within Switch/If statements

Trying to assign a piece of code in a switch/case statement to a feature moves that feature from the switch statement to above the switch. This is also true for creating new variation points within a switch statements.

This issue is present in both C and Java.

C:
1.
switchissue

switchissue2

switchissue3

Java:
1.
switchissuejava

switchissuejava2

switchissuejava3

Tested in Windows & Linux.

EDIT: The same thing issue exists with if statements.

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.