Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/orest-d/nomic
Nomic - a toolset for Domain Specific Languages
https://github.com/orest-d/nomic
code-generation compiler-construction dsl interpreter parsing transpilation transpiler
Last synced: 17 days ago
JSON representation
Nomic - a toolset for Domain Specific Languages
- Host: GitHub
- URL: https://github.com/orest-d/nomic
- Owner: orest-d
- Created: 2013-10-15T20:23:33.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2017-11-05T14:33:54.000Z (about 7 years ago)
- Last Synced: 2023-08-04T20:37:54.081Z (over 1 year ago)
- Topics: code-generation, compiler-construction, dsl, interpreter, parsing, transpilation, transpiler
- Language: Scala
- Size: 254 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Nomic
=====Nomic - a toolset for Domain Specific Languages
Nomic processes a DSL description called meno (Meta Nomic). The DSL description (.meno file) is very similar to a grammar definition (e.g. Backus–Naur form), but adds small restrictions and requirements which allow to build from the single source a lot of code that would otherwise have to be created manually:
* Abstract Syntac Tree objects
* Parser, that automatically creates the AST tree (Rather than being a parser generator, Nomic generates an input for a parser generator. Therefore it can leverage on existing parsing infrastructure.)
* Translator (compiler), which translates AST back to the original source. This can be used as a starting point to build a translator to another form.
* Trivial interpreter, which interprets the AST objects.
* Unification objects, which allow to build complex type-safe patterns for matching AST objects. Pattern matching can be used to identify standardized constructions (e.g. a loop construction) and convert them to another form. Another use for pattern matching is optimization.
* Prolog description (experimental)Nomic can be used to quickly protorype and build programming languaged (transpilers, compilers and interpreters) and other formal languages (e.g. declarative user interface description, data binding, data description languages etc.).
Projects similar to Nomic:
--------------------------* http://strategoxt.org/Spoofax/WebHome
* https://www.eclipse.org/Xtext/