aboutsummaryrefslogtreecommitdiff
path: root/config.ebnf
diff options
context:
space:
mode:
author2026-02-16 21:37:31 +0300
committer2026-02-17 20:13:24 +0300
commitd3fd3ba6f9796df96ec4eae9124a460fbb05eb59 (patch)
tree57803d91f8ae7bd3085b0b393bdf81bcc2ac0dfa /config.ebnf
downloadconf-d3fd3ba6f9796df96ec4eae9124a460fbb05eb59.tar.gz
conf-d3fd3ba6f9796df96ec4eae9124a460fbb05eb59.tar.bz2
conf-d3fd3ba6f9796df96ec4eae9124a460fbb05eb59.tar.xz
conf-d3fd3ba6f9796df96ec4eae9124a460fbb05eb59.zip
init
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|#.*` .