diff --git a/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java b/src/main/java/org/jastadd/relast/compiler/RelAstProcessor.java index e1c1f35867cda4438433e7c393ad23af85ec3fb3..18e72d055619f10b13dd10a8952ff359caba01cb 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 696c3c17ef59872ffaf174d4b8e4b4b7e8e9bdd1..49dea1b9a3e58d0926e2ce7d3f73f21d1ae1da22 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 {