diff --git a/Syntaxes/ABNF.tmLanguage b/Syntaxes/ABNF.tmLanguage
index 1aa952e..42206c8 100644
--- a/Syntaxes/ABNF.tmLanguage
+++ b/Syntaxes/ABNF.tmLanguage
@@ -548,6 +548,35 @@
+ rule-name-core
+
+ captures
+
+ rule
+
+ name
+ support.constant.core-rule.$1.abnf
+
+
+ match
+ (?x)\b(?<rule>
+ ALPHA |
+ BIT |
+ CHAR |
+ CR(?:LF)? |
+ CTL |
+ DIGIT |
+ DQUOTE |
+ HEXDIG |
+ HTAB |
+ LF |
+ LWSP |
+ OCTECT |
+ SP |
+ VCHAR |
+ WSP
+ )\b
+
rule-name-plain
captures
@@ -623,6 +652,10 @@
include
#string-double-quoted
+
+ include
+ #rule-name-core
+
include
#rule-name
diff --git a/Tests/Example.abnf b/Tests/Example.abnf
index 29bf6fc..45c05c4 100644
--- a/Tests/Example.abnf
+++ b/Tests/Example.abnf
@@ -1,7 +1,7 @@
; In ABNF comments start with a single semicolon.
; An ABNF rule can contain multiple sub-rules.
-rule = subrule1 subrule2 subrule3
+rule = WSP subrule2 DIGIT
; We can also use optional angle brackets around a rule name.
= "[]"; To specify a sequence of characters we use