diff options
Diffstat (limited to 'cli/doc/language.txt')
-rw-r--r-- | cli/doc/language.txt | 128 |
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" |