Error on migrating from oaw to TMF Xtext -> leads to error (114) [message #56032] |
Tue, 07 July 2009 10:48  |
Eclipse User |
|
|
|
Hi,
I tried to switch from oaw to xtext. So I did the changes explained in
reference manual and now the syntax of my xtext grammar seems o.k.
When I started the workflow I got many warnings (-> Decision can match
input such as "'XYZ'" using multiple alternatives: 1, 2 As a result,
alternative(s) 2 were disabled for that input ...)
Than, I found a forum thread
( http://www.eclipse.org/newsportal/article.php?id=1240&gr oup=eclipse.modeling.tmf#1240)
with the advice of enabling backtracking.
I changed the following in my workflow -> here are the relevant code
fragments:
<!--<fragment class="org.eclipse.xtext.generator.AntlrDelegatingFragment"
/>-->
<fragment class="de.itemis.xtext.antlr.XtextAntlrGeneratorFragment">
<options backtrack="true"/>
</fragment>
AND
<!-- the following fragment tries to use the Antlr based content assist
fragment which can be downloaded from http://www.itemis.com
and will be ignored if it's not available. -->
<!-- <fragment
class="org.eclipse.xtext.generator.DelegatingGeneratorFragment "
delegate="de.itemis.xtext.antlr.XtextAntlrUiGeneratorFragment "
message="You are generating without ANTLR. It is highly recommended to
download and use the plugin 'de.itemis.xtext.antlr' \n\t using the update
site http://download.itemis.com/updates/milestones.">
</fragment> -->
<!-- <fragment
class="de.itemis.xtext.antlr.XtextAntlrUiGeneratorFragment"/ > -->
<fragment class="de.itemis.xtext.antlr.XtextAntlrUiGeneratorFragment" >
<options backtrack="true"/>
</fragment>
But now I get some errors like:
error(114):
../tfact.dsl/src-gen/com/tfact/parser/antlr/internal/Interna lTfactDsl.g:6370:3:
attribute is not a token, parameter, or return value: current
...
Can anybody of you give me a hint what's wrong?
TIA
Martin
===============================
Here is my xtext grammar:
grammar com.tfact.TfactDsl with org.eclipse.xtext.common.Terminals
generate tfactDsl "http://www.tfact.com/TfactDsl"
AppModel :
(imports+=Import)*
("EnumModel" "{"
(enums+=EnumDef)*
"}")?
("PermissionModel" "{"
((permissionGroups+=PermissionGroup) | (permGroups+=PermGroup))*
"}")?
("ServiceModel" "{"
((dtos+=GeneralDtoDef) | (services+=Service))*
"}")?
("ViewModel" "{"
((views+=SingleView) | (containerViews+=ContainerView) |
(masterDetailViews+=MasterDetailView))*
"}")?
("VarAttributeModel" "{"
(varGroups+=VarGroup)*
"}")?
;
BaseVar:
VarAttribute | VarGroup;
VarAttribute :
name=ID ":"
type=DataType
("length" ("=")? length=INT)?
("minLength" ("=")? minLength=INT)?
("doc" ("=")? doc=STRING)?
;
VarGroup :
"VarGroup" name=ID
("belongsToEntity" ("=")? entity=[Entity])
("doc" ("=")? doc=STRING)?
("{"
(attributes+=VarAttribute)*
"}")?
;
Import :
'import' importURI=STRING;
DomainObject:
Entity | Embedded;
Entity :
"Entity" name=ID ("extends" extends=[Entity])?
("accessCreate" "=" accessCreate=SystemAccessLevel)?
("accessRead" "=" accessRead =SystemAccessLevel)?
("accessUpdate" "=" accessUpdate=SystemAccessLevel)?
("accessDelete" "=" accessDelete=SystemAccessLevel)?
(noOptimisticLockingRequired?="noOptimisticLockingRequired")?
(noCreatedHistory?="noCreatedHistory")?
(noUpdatedHistory?="noUpdatedHistory")? (keyAssigned?="keyAssigned")?
("tableName" "=" tableName=STRING)?
("doc" "=" doc=STRING)?
"{"
(features+=Feature)*
"}";
Embedded :
"Embedded" name=ID ("extends" extends=[Embedded])? ("doc" "="
doc=STRING)?
"{"
(features+=Feature)*
"}";
// Feature is superclass of Attribute, Association, EnumRef, EmbeddedRef
Feature :
EntityAttribute | Association | EnumRef | EmbeddedRef;
EntityAttribute :
name=ID ":"
type=DataType
("template" "=" template=[EntityAttributeTemplate])?
(validators=Validators)?
("length" "=" length=INT)?
("minLength" "=" minLength=INT)?
(transient?="transient")?
(unique?="unique")?
("def" "=" def=STRING)?
("doc" "=" doc=STRING)?
;
EntityAttributeTemplate :
"Template" name=ID
(validators=Validators)?
("length" "=" length=INT)?
("minLength" "=" minLength=INT)?
;
// Validators start
Validators:
"validators" "=" "["validatorList=ValidatorList"]"
;
ValidatorList :
(validators+=Validator) (", " (validators+=Validator))*
;
Validator :
NotNullValidator | EmailValidator | RegexValidator | RangeValidator
;
NotNullValidator : "notNull";
EmailValidator : "eMail";
RegexValidator :
"regex" "(" regex=STRING ("," regexFlags=RegexFlags)? ")";
RegexFlags:
flags+=RegexFlag ("+" flags+=RegexFlag)*
;
enum RegexFlag : CASE_INSENSITIVE="CASE_INSENSITIVE" |
MULTILINE="MULTILINE" | DOTALL="DOTALL" | UNICODE_CASE="UNICODE_CASE" |
CANON_EQ="CANON_EQ";
RangeValidator :
"range" "("min=INT ", " max=INT ")";
// Validators end
Association :
"Ref" name=ID ":" type=[Entity] multiplicity=Multiplicity
(bidirectional?="bidirectional")?
(cascading=Cascading)?
(inverseCascading=InverseCascading)?
(eager?= "eager")?
(inverseEager ?= "inverseEager")?
(required?="required" | NOT "required")?
("doc" "=" doc=STRING)?
;
Cascading :
"cascading" "=" "["cascadingTypeList=CascadingTypeList"]"
;
InverseCascading :
"inverseCascading" "=" "["cascadingTypeList=CascadingTypeList"]"
;
CascadingTypeList:
cascadingTypes+=CascadeType (", " cascadingTypes+=CascadeType)*
;
EnumRef :
"EnumRef" name=ID ":" type=[EnumDef] ("def" "=" def=STRING)? ("doc" "="
doc=STRING)?
;
EnumDef :
"Enum" name=ID (noMultiLanguage?="noMultiLanguage")? ("doc" "="
doc=STRING)? "{"
values+=EnumValue ("," values+=EnumValue )*
"}";
EnumValue:
value=ID ("doc" "=" doc=STRING)?
;
EmbeddedRef :
"EmbeddedRef" name=ID ":" type=[Embedded] ("doc" "=" doc=STRING)?
;
PermGroup :
"PermGroup" name=ID "entityRef" "=" entityRef=[Entity] "{"
(permissions+=Perm)+
"}"
;
Perm :
name=ID "(" systemAccessLevel=SystemAccessLevel
")" ("doc" "=" doc=STRING)?
;
PermissionGroup :
"PermissionGroup" name=ID "entityRef" "=" entityRef=[Entity] "{"
(permissions+=Permission)+
"}"
;
Permission :
name=ID "(" matAdmin=MemberAccessType
(","|", ") matMaintainer=MemberAccessType
(","|", ") matMember=MemberAccessType
(","|", ") matGuest=MemberAccessType
")" ("doc" "=" doc=STRING)?
;
Service :
"Service" name=ID ((backendOnly?="backendOnly") |
(frontendOnly?="frontendOnly"))?
("entityRef" "=" entityRef=[Entity])?
("access" "=" defaultSystemAccessLevel=SystemAccessLevel)?
("doc" "=" doc=STRING)?
("{"
(serviceMethods+=ServiceMethod)*
"}")?;
ServiceMethod :
(permissionAnnotation=ServiceMethodPermissionAnnotation)?
name=ID (noDaoMethod?="noDaoMethod")?
(enforceMultiResult?="enforceMultiResult")? ((backendOnly?="backendOnly")
| (frontendOnly?="frontendOnly"))?
"(" (params=ServiceParams)? ")"
(RESULT results=ServiceResults )?
("access" "=" systemAccessLevel=SystemAccessLevel)?
("doc" "=" doc=STRING)?
;
ServiceMethodPermissionAnnotation:
"@" perm=[Perm|JavaIdentifier] "("idVarName=JavaIdentifier")"
;
GeneralDtoDef:
DTODef | EntityDtoDef
;
EntityDtoDef:
"EntityDto" name=ID "entityRef" "=" entityRef=[Entity] ("doc" "="
doc=STRING)? "{"
(members+=EntityDtoMemberDef)+
"}"
;
EntityDtoMemberDef:
member=EntityMemberIdentifier";"
;
// MTR this is almost the same as: ViewMemberDetailDef
// we should remove ViewMemberDetailDef in favour of this definition
EntityMemberIdentifier:
(memberParts+=ID)?("." memberParts+=ID)*
;
DTODef :
"DTO" name=ID ("parentClass" "=" parentClass=JavaIdentifier)? ("doc" "="
doc=STRING)? "{"
(members+=DTOMemberDef)*
"}"
;
DTOMemberDef:
param=ServiceParameter ("doc" "=" doc=STRING)? ";"
;
ServiceBaseParams :
ServiceParams | ServiceResults
;
ServiceResults :
(parameters+=ServiceParameter)?( (","|", ")
parameters+=ServiceParameter)*
;
ServiceParams :
(parameters+=ServiceParameter)?( (","|", ")
parameters+=ServiceParameter)*
;
ServiceParameter :
DomainObjectParameter | DataTypeParameter;
ExtDomainObject:
DomainObject | EnumDef | GeneralDtoDef;
DomainObjectParameter :
name=ID ":" type=[ExtDomainObject] (collection?="*")?;
DataTypeParameter :
name=ID ":" type=DataType (collection?="*")?;
View :
ContainerView | SingleView | MasterDetailView
;
SingleView:
CommonView | EntityRefView | InfoView | EntityEditView;
CommonViewData:
(hasViewControllerHandler?="hasHandler")? ("access" "="
systemAccessLevel=SystemAccessLevel)?
;
ContainerView :
"ContainerView" name=ID (commonViewData=CommonViewData)? ("style" "="
style=ContainerViewStyle)? (("package" "=" package=ID) |
("belongsToEntity" "=" belongsToEntity=[Entity]))? ("parentClass" "="
parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?
"{"
(views+=ViewRef)?((","|", ") views+=ViewRef)*
"}";
ViewRef :
type=[View] ("doc" "=" doc=STRING)?
;
CommonView:
"CommonView" name=ID (commonViewData=CommonViewData)? (("package" "="
package=ID) | ("belongsToEntity" "=" belongsToEntity=[Entity]))?
("parentClass" "=" parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?
;
EntityRefView:
DetailView | BaseListView ;
BaseListView:
ListView | SelectionView;
DetailView:
"DetailView" name=ID (commonViewData=CommonViewData)? "entityRef" "="
entityRef=[DomainObject] ("package" "=" package=ID)? ("parentClass" "="
parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?
("{"
("membersToInclude" "=" "[" membersToInclude=ViewMemberDef "]")
"}");
EntityEditView:
"EntityEditView" name=ID (commonViewData=CommonViewData)? "entityDtoRef"
"=" entityDtoRef=[EntityDtoDef] ("package" "=" package=ID)? ("parentClass"
"=" parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?;
InfoView:
"InfoView" name=ID (commonViewData=CommonViewData)? ("entityRef" "="
entityRef=[DomainObject])? ("package" "=" package=ID)? ("parentClass" "="
parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?
;
ListView:
"ListView" name=ID (isPagingAware?="isPagingAware")?
(commonViewData=CommonViewData)? (("entityRef" "="
entityRef=[DomainObject]) | ("dtoRef" "=" dtoRef=[DTODef]) |
("entityDtoRef" "=" entityDtoRef=[EntityDtoDef]) ) ("package" "="
package=ID)? ("parentClass" "=" parentClass=JavaIdentifier)? ("doc" "="
doc=STRING)?
("{"
("membersToInclude" "=" "[" membersToInclude=ViewMemberDef "]")
"}")?;
SelectionView:
"SelectionView" name=ID (isPagingAware?="isPagingAware")?
(commonViewData=CommonViewData)? (("entityRef" "="
entityRef=[DomainObject])? | ("dtoRef" "=" dtoRef=[DTODef])? |
("entityDtoRef" "=" entityDtoRef=[EntityDtoDef])?) ("package" "="
package=ID)? ("parentClass" "=" parentClass=JavaIdentifier)? ("doc" "="
doc=STRING)?
("{"
("membersToInclude" "=" "[" membersToInclude=ViewMemberDef "]")
"}")?;
MasterDetailView:
"MasterDetailView" name=ID (commonViewData=CommonViewData)? "listView"
"=" listView=[ListView] "detailView" "=" detailView=[DetailView]
("package" "=" package=ID)? ("parentClass" "="
parentClass=JavaIdentifier)? ("doc" "=" doc=STRING)?
;
ViewMemberDef:
(members+=ViewMemberDetailDef)?((","|", ") members+=ViewMemberDetailDef)*
;
ViewMemberDetailDef:
(membersPart+=ID)?("." membersPart+=ID)*
;
terminal NOT : ('!'|'not');
terminal RESULT : ('->');
// if a cascade type is added make sure, that you also update the
cascading functions in EntityUtilExt.ext
enum CascadeType : All="ct_all" | Save_update="ct_save_update" |
Delete="ct_delete" | Delete_orphan="ct_delete_orphan";
enum SystemAccessLevel: Public="public" | User="user" | Admin="admin";
enum MemberAccessType: Granted="matGranted" | Creator="matCreator" |
Denied="matDenied";
DataType:("string"|"integer"|"long"|"double"|"boolean "|"date"|"date_time"|"money"|"short"|"text"|"htmltext "|"time"|"binary"|"large_binary"|"class"|"object"| "map"|"collection");
Multiplicity : ("oneToMany"|"oneToOne"|"manyToOne");
ContainerViewStyle : ("wizard"|"tab"|"card"|"composite");
JavaIdentifier: ID ("." ID)*;
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03548 seconds