diff --git a/src/main/jastadd/RelAst.relast b/src/main/jastadd/RelAst.relast index 2168413aef3510a889a1a2ea3f71ea4624938f1c..b92cb924a986af6d13084792f597650e65329499 100644 --- a/src/main/jastadd/RelAst.relast +++ b/src/main/jastadd/RelAst.relast @@ -20,7 +20,7 @@ NormalComponent : TypeComponent; ListComponent : TypeComponent; OptComponent : TypeComponent; -TokenComponent : Component ::= JavaTypeUse; +TokenComponent : Component ::= [JavaTypeUse]; abstract JavaTypeUse ::= <Name>; SimpleJavaTypeUse : JavaTypeUse; diff --git a/src/main/jastadd/backend/AbstractGrammar.jadd b/src/main/jastadd/backend/AbstractGrammar.jadd index 870132c2cf4fa0fa6e7ec75759ec39f72872fa3c..713efeed9b83ff4d5833323dd00e2e3fddeda50c 100644 --- a/src/main/jastadd/backend/AbstractGrammar.jadd +++ b/src/main/jastadd/backend/AbstractGrammar.jadd @@ -101,9 +101,14 @@ aspect BackendAbstractGrammar { } b.append("<"); if (!getName().equals("")) { - b.append(getName()).append(":"); + b.append(getName()); + if (hasJavaTypeUse()) { + b.append(":"); + } + } + if (hasJavaTypeUse()) { + getJavaTypeUse().generateAbstractGrammar(b); } - getJavaTypeUse().generateAbstractGrammar(b); b.append(">"); if (getNTA()) { b.append("/"); diff --git a/src/main/jastadd/parser/RelAst.parser b/src/main/jastadd/parser/RelAst.parser index f94fbef474825bbd669f89ce070b2ce8fc406c72..c05c959f6f5f7729549024daeb2da3ea1d315a88 100644 --- a/src/main/jastadd/parser/RelAst.parser +++ b/src/main/jastadd/parser/RelAst.parser @@ -118,11 +118,10 @@ Component actual_component result.setJavaTypeUse(type); return result; :} - | LT ID.type GT + | LT ID.name GT {: TokenComponent result = new TokenComponent(); - result.setName(type); - result.setJavaTypeUse(new SimpleJavaTypeUse(type)); + result.setName(name); return result; :} ;