From c71ed0bf5f8afa4875cd58d1b656ee3e3725c6b4 Mon Sep 17 00:00:00 2001 From: Ivan Garcia Sainz-Aja Date: Thu, 12 Dec 2024 16:28:12 +0100 Subject: [PATCH] flexibilities where `config`, `apis`, `imports` and `global_javadoc` may appear on the document, allowing zdl file concatenation. --- .../io.github.zenwave360.zdl.antlr/Zdl.g4 | 6 ++--- .../zenwave360/zdl/antlr/ZdlListenerImpl.java | 6 ++--- .../zenwave360/zdl/antlr/ZdlListenerTest.java | 7 +++++- src/test/resources/composed.zdl | 23 +++++++++++++++++++ 4 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 src/test/resources/composed.zdl diff --git a/src/main/antlr4/io.github.zenwave360.zdl.antlr/Zdl.g4 b/src/main/antlr4/io.github.zenwave360.zdl.antlr/Zdl.g4 index 602fe04..31ab120 100644 --- a/src/main/antlr4/io.github.zenwave360.zdl.antlr/Zdl.g4 +++ b/src/main/antlr4/io.github.zenwave360.zdl.antlr/Zdl.g4 @@ -118,9 +118,9 @@ PATTERN_REGEX: '/' .*? '/' ; // TODO: improve regex ERRCHAR: . -> channel(HIDDEN); // Rules -zdl: imports global_javadoc? legacy_constants config? apis? (policies | aggregate | entity | enum | input | output | event | relationships | service | service_legacy)* EOF; +zdl: legacy_constants (import_ | config | apis | policies | aggregate | entity | enum | input | output | event | relationships | service | service_legacy)* EOF; -imports: ('@import' LPAREN import_value RPAREN)*; +import_: '@import' LPAREN import_value RPAREN; import_value: string; global_javadoc: JAVADOC; javadoc: JAVADOC; @@ -139,7 +139,7 @@ pair: keyword COLON value; object: LBRACE pair (COMMA pair)* RBRACE; array: LBRACK? value (COMMA value)* RBRACK?; -config: CONFIG config_body; +config: global_javadoc? CONFIG config_body; config_body: LBRACE config_option* plugins? RBRACE; config_option: field_name complex_value; diff --git a/src/main/java/io/github/zenwave360/zdl/antlr/ZdlListenerImpl.java b/src/main/java/io/github/zenwave360/zdl/antlr/ZdlListenerImpl.java index 8fa86fa..742deda 100644 --- a/src/main/java/io/github/zenwave360/zdl/antlr/ZdlListenerImpl.java +++ b/src/main/java/io/github/zenwave360/zdl/antlr/ZdlListenerImpl.java @@ -62,10 +62,8 @@ public void enterLegacy_constants(io.github.zenwave360.zdl.antlr.ZdlParser.Legac } @Override - public void enterImports(io.github.zenwave360.zdl.antlr.ZdlParser.ImportsContext ctx) { - for (io.github.zenwave360.zdl.antlr.ZdlParser.Import_valueContext importValue : ctx.import_value()) { - model.appendToList("imports", getValueText(importValue.string())); - } + public void enterImport_(io.github.zenwave360.zdl.antlr.ZdlParser.Import_Context ctx) { + model.appendToList("imports", getValueText(ctx.import_value().string())); } @Override diff --git a/src/test/java/io/github/zenwave360/zdl/antlr/ZdlListenerTest.java b/src/test/java/io/github/zenwave360/zdl/antlr/ZdlListenerTest.java index 06b53fa..9a1487b 100644 --- a/src/test/java/io/github/zenwave360/zdl/antlr/ZdlListenerTest.java +++ b/src/test/java/io/github/zenwave360/zdl/antlr/ZdlListenerTest.java @@ -24,12 +24,17 @@ public class ZdlListenerTest { @Test public void parseZdl_SuffixJavadoc() throws Exception { - ZdlModel model = parseZdl("src/test/resources/suffix_javadoc.zdl"); + System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model)); + } + @Test + public void parseZdl_Composed() throws Exception { + ZdlModel model = parseZdl("src/test/resources/composed.zdl"); System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model)); } + @Test public void parseZdl_CompleteZdl() throws Exception { diff --git a/src/test/resources/composed.zdl b/src/test/resources/composed.zdl new file mode 100644 index 0000000..7c789ee --- /dev/null +++ b/src/test/resources/composed.zdl @@ -0,0 +1,23 @@ +/** +* First Global Javadoc +*/ +config { + title "First Title" +} + +entity OneEntity { + oneField String + secondField String +} + +/** +* Seccond Global Javadoc +*/ +config { + title "Second Title" +} + +entity OneEntity { + oneField Long + thirdField String +}