From 86d0d611703543d103145f79636e6859380a5798 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Sun, 20 Jun 2021 10:48:49 +0200 Subject: [PATCH] fix is-grammar-file-check - resolves #7 --- .../relast/compiler/RelAstProcessor.java | 19 +++++++++++++++---- .../RelastSourceToSourceCompiler.java | 6 ------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java b/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java index e1c1f35..18e72d0 100644 --- a/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java +++ b/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java @@ -25,9 +25,20 @@ public abstract class RelAstProcessor extends AbstractCompiler { super(name, jastAddCompliant); } - protected boolean isGrammarFile(String fileName) { - String extension = fileName.subSequence(fileName.lastIndexOf('.'), fileName.length()).toString(); - return extension.equals(".relast") || extension.equals(".ast"); + protected boolean isGrammarFile(Path path) { + if (path.getFileName() == null) { return false; } + String fileName = path.getFileName().toString(); + int dotIndex = fileName.lastIndexOf('.'); + if (dotIndex < 0) { + printMessage(path + " has no extension, ignoring it."); + return false; + } + String extension = fileName.subSequence(dotIndex, fileName.length()).toString(); + boolean isGrammar = extension.equals(".relast") || extension.equals(".ast"); + if (!isGrammar) { + printMessage(path + " is not a grammar file, ignoring it."); + } + return isGrammar; } @Override @@ -112,7 +123,7 @@ public abstract class RelAstProcessor extends AbstractCompiler { RelAstParser parser = new RelAstParser(); - inputFiles.stream().filter(path -> isGrammarFile(path.toString())).forEach( + inputFiles.stream().filter(this::isGrammarFile).forEach( path -> { try (BufferedReader reader = Files.newBufferedReader(path)) { RelAstScanner scanner = new RelAstScanner(reader); diff --git a/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java b/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java index 696c3c1..49dea1b 100644 --- a/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java +++ b/src/main/java/org/jastadd/relast/compiler/RelastSourceToSourceCompiler.java @@ -22,12 +22,6 @@ public class RelastSourceToSourceCompiler extends RelAstProcessor { } } - @Override - protected boolean isGrammarFile(String fileName) { - String extension = fileName.subSequence(fileName.lastIndexOf("."), fileName.length()).toString(); - return extension.equals(".relast") || extension.equals(".ast"); - } - @Override protected int processGrammar(Program program, Path inputBasePath, Path outputBasePath) throws CompilerException { -- GitLab