aboutsummaryrefslogtreecommitdiff
path: root/config.ebnf
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--config.ebnf28
1 files changed, 28 insertions, 0 deletions
diff --git a/config.ebnf b/config.ebnf
new file mode 100644
index 0000000..965c5c7
--- /dev/null
+++ b/config.ebnf
@@ -0,0 +1,28 @@
+Config = Doc .
+Doc = Stmt { Stmt } .
+Stmt = Word (Assignment | Command) .
+
+# Statements
+Assignment = "=" Values br .
+Command = [Values] ( Body | br ) .
+
+# Value types
+Values = Value {Value} .
+Value = Word | String | Number | Boolean .
+Body = lbrace [ Doc ] rbrace .
+
+# Atoms
+Word = word .
+Number = number .
+Boolean = boolean .
+String = str .
+
+# Primitives
+word = `[a-zA-Z_][a-zA-Z0-9_]*` .
+number = `-?[0-9]+(\.[0-9]+)?` .
+boolean = `true|false` .
+str = `"[^"]*"` | `'[^']*'` | '`' { `[^\x60]` } '`' .
+lbrace = "{" .
+rbrace = "}" .
+br = ";" .
+white_space = ` |\t|\r|\n|#.*` .