https://github.com/sdm-lang/tree-sitter-sdml
Tree-sitter grammar for the Simple Domain Modeling Language (SDML)
https://github.com/sdm-lang/tree-sitter-sdml
bindings parser sdml tree-sitter
Last synced: about 1 year ago
JSON representation
Tree-sitter grammar for the Simple Domain Modeling Language (SDML)
- Host: GitHub
- URL: https://github.com/sdm-lang/tree-sitter-sdml
- Owner: sdm-lang
- License: other
- Created: 2023-05-13T16:01:05.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-15T23:14:10.000Z (over 1 year ago)
- Last Synced: 2024-11-15T23:26:36.556Z (over 1 year ago)
- Topics: bindings, parser, sdml, tree-sitter
- Language: C
- Homepage:
- Size: 3.96 MB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Tree-Sitter grammar for SDML

A [tree-sitter](https://tree-sitter.github.io/tree-sitter/) grammar for the Simple Domain Modeling Language (SDML). For more
information on the language, see the [documentation](https://sdml.io/).
## Example
```sdml
module campaign is
import [dc rdfs skos]
@skos:prefLabel = "Campaign sub-domain"@en
@skos:version = xsd:decimal(2)
datatype Name <- string {
minLength = 5
maxLength = 25
}
datatype Identifier <- opaque string {
length = 20
} is
@dc:description = "An opaque, general, entity identifier."@en
end
property CampaignId -> Identifier is
@skos:prefLabel = [
"Campaign Identifier"@en
"Identified de campagne"@fr
]
@dc:description = "The globally unique identifier for a Campaign entity"@en
end
structure Tag is
key -> token
value -> {0..} rdfs:langString
end
entity Campaign is
identity ref CampaignId
name -> Name is
@skos:definition = "the name of the campaign"@en
end
tag -> {unordered unique 0..} Tag
target -> {1..} Target
end
entity Target
end
```
## Bindings
The following bindings are built and released along with any version upgrade of
the source version. The tree-sitter tool also generates bindings for C, Go, and
Swift that are not built and released to any repository.
[Node](https://www.npmjs.com/package/tree-sitter-sdml) bindings are published to npmjs and can be installed using the
npm command directly, or by making it a project dependency.
```sh
〉npm install -g tree_sitter_sdml
```
[Python](https://pypi.org/project/tree-sitter-sdml/) bindings are published to PyPI and can be installed using any
standard tool, such as `pip`.
```sh
〉pip3 install tree_sitter_sdml
```
[Rust](https://crates.io/crates/tree-sitter-sdml) bindings are published to crates.io and can be installed via cargo in
the usual manner.
```sh
〉cargo install tree_sitter_sdml
```
## License
This package is released under the Apache License, Version 2.0. See LICENSE file
for details.
## Changes
See [CHANGES.md](CHANGES.md).
## Additional Links
* Node bindings -- [npm.js](https://www.npmjs.com/package/tree-sitter-sdml)
* Rust bindings -- [crates.io](https://crates.io/crates/tree-sitter-sdml)
* Python bindings -- [PyPi.org](https://pypi.org/project/tree-sitter-sdml/)
* Emacs -- [sdml-mode](https://github.com/johnstonskj/emacs-sdml-mode)
* Command-line tool -- [rust-sdml](https://github.com/johnstonskj/rust-sdml)