/theDeamerProject

Deamer is an infrastructure for Compiler and Ecosystem generation. It uses specialized definitions to generate various extensions.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Codacy Badge

CMake

Deamer Project

Welcome!

Deamer Project is a Cross-Platform Language and Ecosystem Generation Toolchain.

Inside Deamer you find Tooling, Extensions, and DSLs allowing you to deeply express your language. Deamer understands what you express using its Language Definition System, this allows Deamer to generate and maintain Great Compilers and Ecosystems for your language.

Deamer Ecosystem Generation gives a lot of possibilities for your Language Ecosystem, examples:

  • Syntax Highlighter Generation for various IDEs and Text Editors
  • Language Documentation Generation
  • Generation of UML Class Diagram Reverse Engineering Tooling
  • And more

Examples and Tutorials

For Examples and Tutorials go to the Example Repo: "https://github.com/Deruago/DeamerExamples"

Documentation

For documentation about the project see the Documentation Repo: "https://github.com/Deruago/DeamerDocumentation";

Quick Start Guide

Clone the Repo and Run the Installer, for linux:

git clone --recursive https://github.com/Deruago/theDeamerProject.git
cd theDeamerProject
sudo python3 ./installer.py

For Windows:

git clone --recursive https://github.com/Deruago/theDeamerProject.git
cd theDeamerProject
python3 ./installer.py

More information about installation can be found at: "How To Install Deamer?".

To start up generating compilers and ecosystems, it is highly recommended to visit the example repo: https://github.com/Deruago/DeamerExamples.

Discord Community

Official Discord Server: https://discord.gg/YUwW2UdgM4

If you have questions about Deamer, feel free to join the server and ask them!

Compiler Generation capabilities

  • Compilers can be generated that may utilize different parsers:
    • Dparse
      • LALR
      • LR
      • GLR
      • GLALR
      • Recursive Descent
    • Antlr4
      • ALL(*)
    • Bison
      • LALR
      • LR
      • GLR
  • AST and CST construction
  • Semantic modeling
    • File/Module Import
    • Trivial value representation
  • Concept modeling
    • Comments
    • OOP Syntactic concepts
  • Ecosystem tooling

Getting the Deamer Source Code

Run the git clone command on this repo:

git clone --recursive https://github.com/Deruago/theDeamerProject.git

The above will retrieve the Deamer source code and its dependencies, so that you can easily install it.

How To Install Deamer

Prerequisites

Make sure you have the following installed:

  • CMake
  • Python
  • C++ Compiler (Compatible with C++17)

Installing

To quickly get started with Deamer Project. Run the Installer. The installer automates the installing of all projects in Deamer.

To run the installer simply do (for linux):

sudo python3 ./installer.py

And for Windows users run the python installer as adminstrator:

python3 .\installer.py

Installing extensions

The installer will only install the neccessary development tools for languages, this excludes optional extensions such as DST. In order to install the full project add the flag -complete:

sudo python3 ./installer.py -complete

Installing without installer

If you want to install it without the helpers, you can do so by going to each project and following its install instructions.

Projects

Subproject Type Short Description
Deamer (CC) Required Infrastructure for compiler and ecosystem generation
DLDL Required Front-end of Deamer CC.
DREGX Required Regex fuzzer for Deamer CC.
Deamer External Required External library used by output generated by Deamer CC.
Deamer Algorithm Required Algorithm library used by both output and Deamer CC.
DST Optional DSL for interpreting deamer string templates

Contributing

If you want to contribute to Deamer you can do so in many ways:

  • Extending the Language Definition System, by adding or expanding Language Property Definitions (LPDs)
  • Reporting bugs or issues in any project in the Deamer toolchain
  • Expanding the documentation of Deamer
  • Fixing issues
  • Adding new features

If you want to add new features, please contact me through discord.