From 9dfc2fdb5ca448717b6a58b2b838be0e4f3653ad Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Thu, 7 May 2020 22:00:55 +0200 Subject: [PATCH] fix parsing of token without explicit type --- src/main/jastadd/RelAst.relast | 2 +- src/main/jastadd/backend/AbstractGrammar.jadd | 9 +++++++-- src/main/jastadd/parser/RelAst.parser | 5 ++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/jastadd/RelAst.relast b/src/main/jastadd/RelAst.relast index 2168413..b92cb92 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 870132c..713efee 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 f94fbef..c05c959 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; :} ; -- GitLab