diff --git a/src/main/jastadd/parser/RelAst.parser b/src/main/jastadd/parser/RelAst.parser
index c4cfd43d096b226f9ee3c98fe5f75975be4f10e1..628e452c42cd935902cd79ef1293b8c46a1fb0b5 100644
--- a/src/main/jastadd/parser/RelAst.parser
+++ b/src/main/jastadd/parser/RelAst.parser
@@ -1,6 +1,5 @@
 GrammarFile goal
   = comment_list.c grammar_file.f {: f.getDeclarationList().insertChild(new EmptyDeclaration(c), 0); return f; :}
-  | grammar_file
 ;
 
 GrammarFile grammar_file
@@ -16,8 +15,8 @@ Declaration declaration
 // this method would be create by the JAstAddParser from a usage of
 // 'comment+' in a rule, but only for the standard list class 'List'.
 JastAddList comment_list
-  = comment.n {: return new JastAddList().add(n); :}
-  | comment_list.l comment.n {: return l.add(n); :}
+  = comment.c comment_list.l {: l.insertChild(c, 0); return l; :}
+  | /* epsilon */            {: return new JastAddList(); :}
 ;
 
 Comment comment
diff --git a/src/main/jastadd/scanner/Keywords.flex b/src/main/jastadd/scanner/Keywords.flex
index 76397b9efcd1c748a3a1eb69675d23dbd4042178..27524e3d2ee6768c8ec6117059967c5780be15ce 100644
--- a/src/main/jastadd/scanner/Keywords.flex
+++ b/src/main/jastadd/scanner/Keywords.flex
@@ -1,4 +1,4 @@
-<YYINITIAL,DECLARATION> {
+<YYINITIAL,COMMENT,DECLARATION> {
   "abstract"            { yybegin(DECLARATION); return sym(Terminals.ABSTRACT); }
   "rel"                 { yybegin(DECLARATION); return sym(Terminals.RELATION); }
 }
diff --git a/src/main/jastadd/scanner/RulesPostamble.flex b/src/main/jastadd/scanner/RulesPostamble.flex
index 5460a0b87e2002c06430aa5cc88abf0b39f30b9f..37f546ff66770d94feaa71ff8b74bd4462f190d8 100644
--- a/src/main/jastadd/scanner/RulesPostamble.flex
+++ b/src/main/jastadd/scanner/RulesPostamble.flex
@@ -1,7 +1,7 @@
-<YYINITIAL,DECLARATION> {
+<YYINITIAL,COMMENT,DECLARATION> {
   {ID}                  { yybegin(DECLARATION); return sym(Terminals.ID); }
-  [^]                   { throw new ScannerError((yyline+1) +"," + (yycolumn+1) + ": Illegal character <"+yytext()+">"); }
 }
-<YYINITIAL,DECLARATION,COMMENT> {
+<YYINITIAL,COMMENT,DECLARATION> {
   <<EOF>>               { return sym(Terminals.EOF); }
-}
+  [^]                   { throw new ScannerError((yyline+1) +"," + (yycolumn+1) + ": Illegal character <"+yytext()+">"); }
+}
\ No newline at end of file
diff --git a/src/main/jastadd/scanner/Symbols.flex b/src/main/jastadd/scanner/Symbols.flex
index 7f05c115b570fd3681617106bb77bc25bb79d7b2..5ac1c2d1855c91514b2d18483896ae0bb5ba1d08 100644
--- a/src/main/jastadd/scanner/Symbols.flex
+++ b/src/main/jastadd/scanner/Symbols.flex
@@ -1,4 +1,4 @@
-<YYINITIAL,DECLARATION> {
+<YYINITIAL,COMMENT,DECLARATION> {
   ";"                   { yybegin(COMMENT);     return sym(Terminals.SCOL); }
   ":"                   { yybegin(DECLARATION); return sym(Terminals.COL); }
   "::="                 { yybegin(DECLARATION); return sym(Terminals.ASSIGN); }
diff --git a/src/test/resources/NoWhitespaceAfterRules/config.yaml b/src/test/resources/NoWhitespaceAfterRules/config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0b4111a0c86ed8510b2a9d72b02a58319e246f7b
--- /dev/null
+++ b/src/test/resources/NoWhitespaceAfterRules/config.yaml
@@ -0,0 +1,9 @@
+- name: "No whitespace/comment between and after rules required"
+  args:
+    - "--inputBaseDir=in"
+    - "--outputBaseDir=out"
+    - "Grammar.relast"
+    - "Relation.relast"
+  out: "out"
+  expected: "in"
+  compare: true
diff --git a/src/test/resources/NoWhitespaceAfterRules/in/Grammar.relast b/src/test/resources/NoWhitespaceAfterRules/in/Grammar.relast
new file mode 100644
index 0000000000000000000000000000000000000000..5ef2b62144e2711ce5bb834bd332088f57725226
--- /dev/null
+++ b/src/test/resources/NoWhitespaceAfterRules/in/Grammar.relast
@@ -0,0 +1,2 @@
+Person ::= <FullName> <Address> Gender;abstract Gender;
+Male : Gender;Female : Gender;Diverse : Gender;
\ No newline at end of file
diff --git a/src/test/resources/NoWhitespaceAfterRules/in/Relation.relast b/src/test/resources/NoWhitespaceAfterRules/in/Relation.relast
new file mode 100644
index 0000000000000000000000000000000000000000..3401591959fee1ffdbdf9d8e83c7c7d63b1045ce
--- /dev/null
+++ b/src/test/resources/NoWhitespaceAfterRules/in/Relation.relast
@@ -0,0 +1 @@
+rel Person.Friend -> Person;rel Person.Child <-> Person.Parent;
\ No newline at end of file