Giter Club home page Giter Club logo

packtpub-xtext-book-2nd-examples's Introduction

Implementing Domain-Specific Languages with Xtext and Xtend, 2nd Edition

This repository contains the sources of the Examples for the book
"Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition"
ISBN: 9781786464965

https://www.packtpub.com/application-development/implementing-domain-specific-languages-xtext-and-xtend-second-edition

IMPORTANT

If you plan to use Xtext 2.20 or later when reading this book, please make sure you read the WARNING part of this document's section.

ERRATA and changes in new versions of Xtext

General book Errata can be found here.

Changes required by new versions of Xtext are detailed here. The book was written using Xtext 2.10.0 and some changes were introduced in new versions of Xtext that require some modifications in the sources (and make some parts written in the book not consistent).

Getting Sources

While you can simply clone this git repository and import the projects in Eclipse, we strongly suggest you use the automatic procedure described in GETTINGSOURCES.

Build Status

packtpub-xtext-book-2nd-examples's People

Contributors

guite avatar lorenzobettini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

packtpub-xtext-book-2nd-examples's Issues

Use Oxygen as TP

To avoid problems with conflicting Xcore version, first update to Xtext 2.12 (#11)

GETTINGSOURCES fails with Eclipse 18.12

Tried the setup as described her:
https://github.com/LorenzoBettini/packtpub-xtext-book-2nd-examples/blob/master/docs/GETTINGSOURCES.md
but got this error:

Executing bootstrap tasks
OpenJDK Runtime Environment 10.0.2+13
Product org.eclipse.products.epp.package.committers.latest.released
Workspace /Users/Max/xtext-book-examples-master/ws
Project com.github.user.project.xtext.book.examples.master
Bundle org.eclipse.oomph.setup 1.12.0.v20190206-0943, build=3895, branch=a662e867f63d5b59dd0935621f30827543b3c0bb
Bundle org.eclipse.oomph.setup.core 1.12.0.v20190206-0651, build=3895, branch=a662e867f63d5b59dd0935621f30827543b3c0bb
Bundle org.eclipse.oomph.setup.installer 1.12.0.v20190312-1050, build=3895, branch=a662e867f63d5b59dd0935621f30827543b3c0bb
Bundle org.eclipse.oomph.setup.p2 1.10.0.v20180706-1242, build=3895, branch=a662e867f63d5b59dd0935621f30827543b3c0bb
Performing Workspace /Users/Max/xtext-book-examples-master/ws
Performing P2 Director (Eclipse IDE for Eclipse Committers (2019-03) + Eclipse SDK + EMF + Buildship + EGit + M2E + Mylyn + Oomph Extensions + SWTBot + Eclemma Jacoco + Xtext Releases)
Offline = false
Mirrors = true
Resolving 72 requirements from 14 repositories to /Users/Max/xtext-book-examples-master/Eclipse.app/Contents/Eclipse
Requirement org.eclipse.xtext.sdk.feature.group [2.13.0,2.14.0)
Requirement org.eclipse.emf.mwe2.language.sdk.feature.group
Requirement org.eclipse.emf.mwe2.runtime.sdk.feature.group
Requirement de.itemis.xtext.antlr.feature.feature.group
Requirement org.eclipse.emf.ecore.xcore.sdk.feature.group
Requirement org.eclipse.eclemma.feature.feature.group
Requirement org.eclipse.swtbot.eclipse.feature.group
Requirement org.eclipse.swtbot.ide.feature.group
Requirement org.eclipse.swtbot.generator.feature.feature.group
Requirement org.eclipse.oomph.setup.git.feature.group
Requirement org.eclipse.oomph.setup.jdt.feature.group
Requirement org.eclipse.oomph.setup.maven.feature.group
Requirement org.eclipse.oomph.setup.mylyn.feature.group
Requirement org.eclipse.oomph.setup.pde.feature.group
Requirement org.eclipse.oomph.setup.projectset.feature.group
Requirement org.eclipse.oomph.setup.projects.feature.group
Requirement org.eclipse.oomph.setup.targlets.feature.group
Requirement org.eclipse.oomph.setup.ui.ide.feature.group
Requirement org.eclipse.oomph.setup.workbench.feature.group
Requirement org.eclipse.oomph.setup.workingsets.feature.group
Requirement org.eclipse.mylyn.bugzilla_feature.feature.group
Requirement org.eclipse.mylyn.builds.feature.group
Requirement org.eclipse.mylyn.context_feature.feature.group
Requirement org.eclipse.mylyn.discovery.feature.group
Requirement org.eclipse.mylyn.gerrit.feature.feature.group
Requirement org.eclipse.mylyn.git.feature.group
Requirement org.eclipse.mylyn.github.feature.feature.group
Requirement org.eclipse.mylyn.hudson.feature.group
Requirement org.eclipse.mylyn.ide_feature.feature.group
Requirement org.eclipse.mylyn.java_feature.feature.group
Requirement org.eclipse.mylyn.monitor.feature.group
Requirement org.eclipse.mylyn.pde_feature.feature.group
Requirement org.eclipse.mylyn.tasks.ide.feature.group
Requirement org.eclipse.mylyn.team_feature.feature.group
Requirement org.eclipse.mylyn.wikitext_feature.feature.group
Requirement org.eclipse.mylyn_feature.feature.group
Requirement org.eclipse.egit.mylyn.feature.group
Requirement org.eclipse.emf.sdk.feature.group
Requirement org.sonatype.tycho.m2e.feature.feature.group
Requirement org.eclipse.m2e.feature.feature.group
Requirement org.sonatype.m2e.buildhelper.feature.feature.group
Requirement org.eclipse.egit.feature.group
Requirement org.eclipse.buildship.feature.group
Requirement org.eclipse.emf.ecoretools.sdk.feature.group
Requirement org.eclipse.sdk.feature.group
Requirement org.eclipse.wst.xml_ui.feature.feature.group
Requirement epp.package.committers [4.11.0,5.0.0)
Requirement org.eclipse.platform.feature.group [4.11.0,5.0.0)
Requirement org.eclipse.rcp.feature.group [4.11.0,5.0.0)
Requirement org.eclipse.cvs.feature.group
Requirement org.eclipse.e4.core.tools.feature.feature.group
Requirement org.eclipse.egit.gitflow.feature.feature.group
Requirement org.eclipse.epp.mpc.feature.group
Requirement org.eclipse.jdt.feature.group
Requirement org.eclipse.jdt.source.feature.group
Requirement org.eclipse.jgit.http.apache.feature.group
Requirement org.eclipse.mylyn.commons.feature.group
Requirement org.eclipse.mylyn.commons.identity.feature.group
Requirement org.eclipse.mylyn.commons.notifications.feature.group
Requirement org.eclipse.mylyn.commons.repositories.feature.group
Requirement org.eclipse.mylyn.commons.repositories.http.feature.group
Requirement org.eclipse.mylyn.gerrit.dashboard.feature.feature.group
Requirement org.eclipse.mylyn.reviews.feature.feature.group
Requirement org.eclipse.mylyn.versions.feature.group
Requirement org.eclipse.pde.feature.group
Requirement org.eclipse.pde.source.feature.group
Requirement org.eclipse.platform.source.feature.group
Requirement org.eclipse.rcp.source.feature.group
Requirement org.eclipse.wst.json_ui.feature.feature.group
Requirement org.eclipse.oomph.setup.feature.group
Requirement org.eclipse.oomph.targlets.feature.group
Requirement org.eclipse.oomph.setup.launching.feature.group
Repository http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.13.0/
Repository http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.9.1/
Repository http://download.itemis.com/updates/releases/2.1.1/
Repository http://update.eclemma.org
Repository http://download.eclipse.org/technology/swtbot/releases/latest
Repository http://download.eclipse.org/egit/github/updates
Repository http://download.eclipse.org/mylyn/releases/latest
Repository http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-tycho/0.9.0/N/LATEST
Repository http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15.0/N/0.15.0.201207090124/
Repository http://download.eclipse.org/egit/updates
Repository http://download.eclipse.org/buildship/updates/e45/releases/1.0
Repository http://download.eclipse.org/technology/epp/packages/2019-03
Repository http://download.eclipse.org/releases/2019-03
Repository http://download.eclipse.org/oomph/updates/milestone/latest
Adding repository http://update.eclemma.org
Adding repository http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.13.0/
Adding repository http://download.itemis.com/updates/releases/2.1.1/
Adding repository http://download.eclipse.org/modeling/emft/mwe/updates/releases/2.9.1/
Adding repository http://download.eclipse.org/technology/swtbot/releases/latest
Adding repository http://download.eclipse.org/egit/github/updates
Adding repository http://download.eclipse.org/mylyn/releases/latest
Adding repository http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-tycho/0.9.0/N/LATEST
Adding repository http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15.0/N/0.15.0.201207090124/
Adding repository http://download.eclipse.org/egit/updates
Adding repository http://download.eclipse.org/oomph/updates/milestone/latest
Adding repository http://download.eclipse.org/releases/2019-03
Adding repository http://download.eclipse.org/technology/epp/packages/2019-03
Adding repository http://download.eclipse.org/buildship/updates/e45/releases/1.0
Calculating requirements and dependencies.
Cannot complete the request. Generating details.
ERROR: org.eclipse.equinox.p2.director code=10053 Cannot complete the install because one or more required items could not be found.
at org.eclipse.oomph.util.OomphPlugin.coreException(OomphPlugin.java:280)
at org.eclipse.oomph.p2.internal.core.ProfileTransactionImpl.resolve(ProfileTransactionImpl.java:425)
at org.eclipse.oomph.p2.internal.core.ProfileTransactionImpl.commit(ProfileTransactionImpl.java:337)
at org.eclipse.oomph.setup.p2.impl.P2TaskImpl.perform(P2TaskImpl.java:733)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.doPerformNeededSetupTasks(SetupTaskPerformer.java:3335)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.performNeededSetupTasks(SetupTaskPerformer.java:3263)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.performTriggeredSetupTasks(SetupTaskPerformer.java:3244)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.perform(SetupTaskPerformer.java:3144)
at org.eclipse.oomph.setup.ui.wizards.ProgressPage$9.run(ProgressPage.java:575)
at org.eclipse.oomph.setup.ui.wizards.ProgressPage$11$1.run(ProgressPage.java:701)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
ERROR: org.eclipse.equinox.p2.director code=0 Software being installed: artificial_root 1.0.0.v1553163317616
ERROR: org.eclipse.equinox.p2.director code=0 Missing requirement: Xtext Runtime 2.13.0.v20171020-0920 (org.eclipse.xtext.runtime.feature.group 2.13.0.v20171020-0920) requires 'org.eclipse.equinox.p2.iu; org.objectweb.asm [5.0.1,6.0.0)' but it could not be found
ERROR: org.eclipse.equinox.p2.director code=1 Cannot satisfy dependency:
ERROR: org.eclipse.equinox.p2.director code=0 From: artificial_root 1.0.0.v1553163317616
ERROR: org.eclipse.equinox.p2.director code=0 To: org.eclipse.equinox.p2.iu; org.eclipse.xtext.sdk.feature.group [2.13.0,2.14.0)
ERROR: org.eclipse.equinox.p2.director code=1 Cannot satisfy dependency:
ERROR: org.eclipse.equinox.p2.director code=0 From: Xtext Complete SDK 2.13.0.v20171020-0920 (org.eclipse.xtext.sdk.feature.group 2.13.0.v20171020-0920)
ERROR: org.eclipse.equinox.p2.director code=0 To: org.eclipse.equinox.p2.iu; org.eclipse.xtext.runtime.feature.group [2.13.0.v20171020-0920,2.13.0.v20171020-0920]

Took 14 seconds.
There are failed tasks.
Press Back to choose different settings or Cancel to abort.

Entities runtime does not create src-gen folder

When you start a runtime instance of Eclipse based on the Entities meta-model, create a .entities file and then save it, an entities-gen folder is created rather than a src-gen folder.

This isn't incorrect, per se - but it is inconsistent with the book content in the 'Integration with the Eclipse Build Mechanism' section. I see that you include at the end of the section a comment that this illustrates that the name 'src-gen' isn't hardcoded. Having said that, the text appears to be inconsistent with the sample code for readers of Ch. 5.

Second edition, Chapter 13 (Extending Xbase) appears to have a typo on page 379

Here is the excerpt from the second edition of the book, page 379 - we implement, internalToConvertedExpression by simply generating in the Java code a reference to the synthetic variable associated to the original eval expression. If I understand it correctly, the instruction is to override the method internalToConvertedExpression and not internalToxpression.

Code example from the book.

override protected internalToxpression(XExpression obj, ITreeAppendable a) {
  if (obj instanceof EvalExpression)
  a.append(getVarName(obj, a))
else
  super.internalToConvertedExpression(obj, a)
 }
}

Port to Xtext 2.19

And check whether changes are required to projects that need to be documented

unable to build small java example via maven at the command line

From the org.example.smalljava.parent directory, building from the command line with maven fails with a ClassNotFoundException:

[org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main()] ERROR mf.mwe2.launch.runtime.Mwe2Launcher - org/slf4j/LoggerFactory
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

Fix mwe2 version in pom.xml

Make sure we use version 2.9.0 to avoid such building errors:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.4.0:java (mwe2Launcher) on project org.example.entities: Execution mwe2Launcher of goal org.codehaus.mojo:exec-maven-plugin:1.4.0:java failed: Plugin org.codehaus.mojo:exec-maven-plugin:1.4.0 or one of its dependencies could not be resolved: Failed to collect dependencies for org.codehaus.mojo:exec-maven-plugin:jar:1.4.0 (): Could not resolve version conflict among [org.codehaus.mojo:exec-maven-plugin:jar:1.4.0 -> org.eclipse.emf:org.eclipse.emf.mwe2.launch:jar:[2.9.0,2.10) -> org.eclipse.emf:org.eclipse.emf.mwe2.runtime:jar:[2.9.1.201705291010,2.9.1.201705291010], org.codehaus.mojo:exec-maven-plugin:jar:1.4.0 -> org.eclipse.emf:org.eclipse.emf.mwe2.launch:jar:[2.9.0,2.10) -> org.eclipse.emf:org.eclipse.emf.mwe2.language:jar:[2.9.1.201705291010,2.9.1.201705291010] -> org.eclipse.emf:org.eclipse.emf.mwe2.runtime:jar:[2.9.1.201705291010,2.9.1.201705291010], org.codehaus.mojo:exec-maven-plugin:jar:1.4.0 -> org.eclipse.xtext:org.eclipse.xtext.xtext.generator:jar:2.11.0 -> org.eclipse.emf:org.eclipse.emf.mwe.utils:jar:1.3.20.201605261059 -> org.eclipse.emf:org.eclipse.emf.mwe.core:jar:[1.3.20.201605261059,1.3.20.201605261059] -> org.eclipse.emf:org.eclipse.emf.mwe2.runtime:jar:[2.9.0.201605261059,2.9.0.201605261059], org.codehaus.mojo:exec-maven-plugin:jar:1.4.0 -> org.eclipse.xtext:org.eclipse.xtext.xtext.generator:jar:2.11.0 -> org.eclipse.emf:org.eclipse.emf.mwe2.lib:jar:2.9.0.201605261059 -> org.eclipse.emf:org.eclipse.emf.mwe2.runtime:jar:[2.9.0.201605261059,2.9.0.201605261059]] -> [Help 1]

content completion

Why is it that when I follow the steps in the book, there are no prompts for content completion?
image

Port to Xtext 2.18

And check whether changes are required to projects that need to be documented

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.