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 {