Crates.io | owens-ml-parser |
lib.rs | owens-ml-parser |
version | 0.0.0 |
source | src |
created_at | 2019-08-07 02:11:23.095776 |
updated_at | 2019-08-07 02:11:23.095776 |
description | A lightweight parser for a lightweight markup language. |
homepage | |
repository | https://gitlab.com/scOwez/owens-ml-parser |
max_upload_size | |
id | 154720 |
size | 23,773 |
owens-ml-parser
This parser for the owens-ml
markup language is a learning project to make a simple library using nom
. This "core" parser can then easily be extended to runtimes and bindings in other languages (Python using pyo3
for example) to make a small ecosystem.
NOTE: As it is a learning project, it may not be to the best of quality.
owens-ml
design spec: owens-ml specowens-ml
owens-ml
is an easy-to-parse, generalized (can be used in place of json/yaml/toml/similar), implamented with Rust + the nom
library.
Some of the key objectives for owens-ml
are described in the bullet-points below:
owens-ml
.owens-ml
syntax(s) "hello there" (o) {
(s) "woo" (a-i) [
4234,
5,
34
],
(i) 3423 (o) {
(s) "ids" (o) {
(i) 423 (s) "scOwez",
(i) 4234 (s) "gdude",
(i) 234 (s) "bisk",
(s) "username_dynamic" (s) "woo"
}
}
},
(s) "cool_array" (a-s) [
"woo",
"cool",
"awesome",
":)"
]
As you can see, owens-ml
is a fiercely statically-typed markup language with a different annotation for every different type. This has a reason: parsing ease.