Xtext: Xbase extensions [message #879454] |
Thu, 31 May 2012 09:00 |
Hans-Georg Glöckler Messages: 88 Registered: July 2009 |
Member |
|
|
We have the grammar of your example
/*******************************************************************************
* Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
grammar org.eclipse.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.xbase.Xbase
generate domainmodel "http://www.xtext.org/example/Domainmodel"
DomainModel:
elements+=AbstractElement*;
AbstractElement:
PackageDeclaration | Entity | Import;
Import:
'import' importedNamespace=QualifiedNameWithWildCard;
PackageDeclaration:
'package' name=QualifiedName '{'
elements+=AbstractElement*
'}';
Entity:
'entity' name=ValidID ('extends' superType=JvmTypeReference)? '{'
features+=Feature*
'}';
Feature:
Property | Operation;
Property:
name=ValidID ':' type=JvmTypeReference;
Operation:
visibility=Visibility? 'op' name=ValidID '(' (params+=JvmFormalParameter (',' params+=JvmFormalParameter)*)? ')' ':' type=JvmTypeReference
body=XBlockExpression;
enum Visibility:
public | private | protected;
QualifiedNameWithWildCard :
QualifiedName ('.' '*')?;
We recognized, that the use of ListExtensions (list.map( e | e.toUpperCase )) like described in the Xbase example Xbase05_closures.xbase is not possible inside the XBlockExpression.
Did we something wrong or do we have to import any packages?
Our Sourcecode of our DSL is:
package org.eclipse.webinar {
entity Person {
name : String
firstName : String
friends : java.util.ArrayList < Person >
value1 : int
value2 : int
op doSomething ( ) : String {
// --> Problems
// Multiple markers at this line
//- Couldn't resolve reference to JvmIdentifiableElement 'toUpperCase'.
//- Couldn't resolve reference to JvmIdentifiableElement 'map'.
//- There is no context to infer the closure's argument types from.
// Consider typing the arguments or put the closures into a typed
// context.
//- Couldn't resolve reference to JvmIdentifiableElement 'name'.
friends . map ( e | e . name . toUpperCase )
// --> Problems
// Couldn't resolve reference to JvmIdentifiableElement '+'.
val value3 = value1 + value2
}
}
In this code are the following 2 lines of code with errors:
friends . map ( e | e . name . toUpperCase )
val value3 = value1 + value2
Do you have any ideas how to solve the problems above.
[Updated on: Thu, 31 May 2012 09:01] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|
Re: Xtext: Xbase extensions [message #879524 is a reply to message #879519] |
Thu, 31 May 2012 11:14 |
Hans-Georg Glöckler Messages: 88 Registered: July 2009 |
Member |
|
|
1. Grammar
Manifest MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Xtext Domainmodel Example
Bundle-Vendor: Eclipse Modeling Project
Bundle-Version: 2.0.1.qualifier
Bundle-SymbolicName: org.eclipse.xtext.example.domainmodel; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.apache.log4j;bundle-version="1.2.15";visibility:=reexport,
org.eclipse.xtext;bundle-version="2.0.0";visibility:=reexport,
org.eclipse.xtext.generator;bundle-version="2.0.0";resolution:=optional,
org.eclipse.xtend;bundle-version="1.1.0",
org.eclipse.xtend.typesystem.emf;bundle-version="1.0.1",
org.eclipse.xpand;bundle-version="1.1.0",
org.eclipse.xtext.util;bundle-version="2.0.0",
org.eclipse.emf.ecore,
org.eclipse.emf.common,
org.eclipse.emf.mwe2.launch;bundle-version="2.0.0";resolution:=optional,
org.antlr.runtime,
org.eclipse.xtext.xbase;bundle-version="2.0.0",
org.eclipse.xtext.common.types,
org.eclipse.xtext.xbase.lib;bundle-version="2.0.0";visibility:=reexport,
org.eclipse.xtext.xtend2.lib;bundle-version="2.0.0";visibility:=reexport,
org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional;visibility:=reexport,
org.eclipse.xtext.ui.codetemplates;bundle-version="2.0.0"
Export-Package: org.eclipse.xtext.example.domainmodel,
org.eclipse.xtext.example.domainmodel.domainmodel,
org.eclipse.xtext.example.domainmodel.domainmodel.impl,
org.eclipse.xtext.example.domainmodel.domainmodel.util,
org.eclipse.xtext.example.domainmodel.formatting,
org.eclipse.xtext.example.domainmodel.generator,
org.eclipse.xtext.example.domainmodel.jvmmodel,
org.eclipse.xtext.example.domainmodel.naming,
org.eclipse.xtext.example.domainmodel.parseTreeConstruction,
org.eclipse.xtext.example.domainmodel.parser.antlr,
org.eclipse.xtext.example.domainmodel.parser.antlr.internal,
org.eclipse.xtext.example.domainmodel.scoping,
org.eclipse.xtext.example.domainmodel.services,
org.eclipse.xtext.example.domainmodel.typing,
org.eclipse.xtext.example.domainmodel.validation,
org.eclipse.xtext.example.domainmodel.valueconverter
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.apache.log4j,
org.eclipse.xtext.xbase.lib,
org.eclipse.xtext.xtend2.lib
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension point="org.eclipse.emf.ecore.generated_package">
<package
uri = "http://www.xtext.org/example/Domainmodel"
class = "org.eclipse.xtext.example.domainmodel.domainmodel.DomainmodelPackage"
genModel = "org/eclipse/xtext/example/domainmodel/Domainmodel.genmodel" />
</extension>
</plugin>
.project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.xtext.example.domainmodel</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
2.Model
.settings
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Demo01</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
here I have no METAINF/MANIFEST.MF
perhaps is this the error?
|
|
|
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.05122 seconds