summaryrefslogtreecommitdiff
path: root/cli/doc/language.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cli/doc/language.txt')
-rw-r--r--cli/doc/language.txt128
1 files changed, 128 insertions, 0 deletions
diff --git a/cli/doc/language.txt b/cli/doc/language.txt
new file mode 100644
index 0000000..e6c9161
--- /dev/null
+++ b/cli/doc/language.txt
@@ -0,0 +1,128 @@
+Token types:
+ keyword
+ identifier
+ punctuation (";" "{" "}" "(" ")" "," "|" "=" ":")
+ cxx-path-literal ("c++:path", <c++:path>, "path", <path>)
+ cli-path-literal ("cli:path", <cli:path>, "path.cli", <path.cli>)
+ char-literal
+ string-literal
+ bool-literal
+ int-literal
+ float-literal
+ call-expr (e.g., (a, 2))
+ template-expr (e.g., <a, 2>)
+ end-of-stream
+
+def-unit:
+ include-decl-seq(opt) decl-seq(opt)
+
+include-decl-seq:
+ source-decl
+ include-decl
+ include-decl-seq include-decl
+
+source-decl:
+ "source" cli-path-literal ";"
+
+include-decl:
+ "include" include-path ";"
+
+include-path:
+ cxx-path-literal
+ cli-path-literal
+
+decl-seq:
+ decl
+ decl-seq decl
+
+decl:
+ source-decl
+ scope-doc
+ namespace-def
+ class-def
+
+scope-doc:
+ string-literal
+ "{" doc-string-seq "}"
+
+namespace-def:
+ "namespace" identifier "{" namespace-body "}"
+
+namespace-body:
+ decl-seq(opt)
+
+class-def:
+ "class" identifier inheritance-spec(opt) abstract-spec(opt) "{" class-decl-seq(opt) "};"
+
+inheritance-spec:
+ ":" base-seq
+
+base-seq:
+ qualified-name
+ base-seq "," qualified-name
+
+abstract-spec:
+ "=" "0"
+
+class-decl-seq:
+ class-decl
+ class-decl-seq class-decl
+
+class-decl
+ scope-doc
+ option-def
+
+option-def:
+ type-spec option-name-seq initializer(opt) option-def-trailer
+
+type-spec:
+ fundamental-type-spec
+ qualified-name
+
+option-name-seq:
+ option-name
+ option-name-seq "|" option-name
+
+option-name:
+ option-identifier
+ string-literal
+
+initializer:
+ "=" initializer-expr
+ call-expr
+
+initializer-expr:
+ bool-literal
+ int-literal
+ float-literal
+ char-literal
+ string-literal
+ qualified-name
+ call-expr
+
+option-def-trailer:
+ ";"
+ option-doc
+
+option-doc:
+ "{" doc-string-seq "}"
+
+doc-string-seq:
+ string-literal
+ doc-string-seq "," string-literal
+
+qualified-name:
+ "::" qualified-name-trailer
+ qualified-name-trailer
+
+qualified-name-trailer:
+ template-id
+ qualified-name "::" template-id
+
+template-id:
+ identifier template-expr(opt)
+
+fundamental-type-spec:
+ "bool"
+ ...
+ "long double"