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