Releases: Deruago/theDeamerProject
Deamer 2.3.0-rc1
Overview
This is the pre-release of Deamer 2.3.0.
This version focuses on cross-platform support. Deamer can now be used to generate compilers on different OSes.
It also supports more tooling, and more LPDs to further express your language.
If you are interested or have questions about Deamer, join the discord: https://discord.com/invite/YUwW2UdgM4
Changelog
This version adds the following improvements:
Language Generation
- New Lexer generator Dleg, Dleg is the official lexer generator of Deamer CC.
- New Parser generator Dparse, Dparse is the official LR(1) parser generator of Deamer CC.
LPD Improvements
- OOPSyntax LPD: It is possible to define OOP Concepts in your language.
Tool Improvements
- OOPSyntaxRecognizer: Allows for identifying OOP concepts in your language via syntax.
- UML Reverse Engineering tooling: It is possible to reverse engineer UML Class diagrams. The output format is plantuml
QOL Improvements
- DLDL supports generation of LPD/LDO for Deamer CC. LPDs can now be developed and integrated using a simple DSL
- DLDL and Deamer CC are cross-platform.
- .deamer dir, this directory is used by DLDL to store project settings. DLDL uses the project settings, to re-use arguments, and become callable anywhere in the project.
Deamer 2.2.0
Overview
Deamer 2.2.0 adds new features, and contains different bugfixes.
New Features:
- DLDLConverter, allows the conversion of Deamer CC definitions to DLDL definitions.
- Currently only supports lexicon and grammar conversion.
- NodeEnumToText relation available in AST generated output, allowing conversion from enumeration to text.
- NodeTextToEnum relation, inverse of NodeEnumToText
- Add tool DeamerDefaultApplication:
- TokenViewer: Prints the tokens parsed
- AstViewer: used to view the AST (prints a graphviz file)
- Update Access
- Supports ranged for loop
- Allows class type argument deduction when using C++17
DLDL
DLDL offers different bugfixes:
- Having multiple undefined references to terminals, crashed to resulting C++ project, this is now fixed
- Using terminals containing numbers was not supported, grammar is updated to allow this.
New feature:
- Automatically generate sources of DeamerDefaultApplication tool, available in Deamer v2.2.0
DST
New feature:
- Support for alternative fields, freeing the characters '<' and '>' inside abstractions
Deamer 2.1.1
Overview
This update fixes several bugs:
- When using EnterExitListeners, large inputs could cause stackoverflows.
- When using Uninitialized LDO's, memory leaks occured.
- When using Uninitialized LDO's, no warning was thrown.
New features:
- Allow generation of either single or multi projects
Notes:
Currently uninitialized LDO's, are not fully supported. In later versions more functionality will be added.
Discord server link is added: https://discord.gg/YUwW2UdgM4
If you encounter any issue, make sure to report them!
Deamer 2.1.0
Overview
This version adds support for:
- Threat LPD (Static analysis for definitions)
- Colorization LPD (Can be used to generate syntax highlighters)
- Experimental Documentation generation
- Extended output generation
Deamer 2.0.0
Deamer
Deamer is an infrastructure for Compiler and Ecosystem generation. Via specialized definitions Deamer can generate varies compilers and ecosystems.
Overview
This will page will show the changes to Deamer project, and other relevant information.
Changes to Deamer
- Complete LD and LPD system
- User definable LPD's (e.g. Lexicon, Grammar, Precedence, Associativity, Generation, Identity)
- "Standard" LPD generators
- Support for multi compilers
- Lexer generation
- Parser generation
- AST generation
- Deamer Language project generation
- It is possible to create your own extensions for Deamer
- It is possible to create your own custom LPD's
Changes to Deamer Project (with subprojects)
- DeamerExternal v1
- DLDL v2
- DST v0.2.0
- installer.py to easily install all subprojects in this repo
Known bugs Deamer
Currently no known bugs in Deamer CC
Examples
For examples and tutorials go visit the example repo: https://github.com/Deruago/DeamerExamples
Documentation
There will come a documentation repo.
Deamer 2.0.0-rc1
Introduction
This document contains the release notes for the Deamer release 2.0.0. It describes changes to the API, major improvements to DeamerProject, and known issues.
Overview
This is a pre-release, meaning that there still may be some bugs. If you encounter a bug please feel free to report them.
Deamer v2 introduces varies new things, one being a complete redesign of Deamer v2.
Documentation
We are currently busy writing documentation. If you feel like something is missing feel free to report it.
Changes to Deamer
- Generate compiler front-ends (lexers, parsers, AST)
- Generate cmake projects
- Ways to specify Language Definitions
- Default LPD generators
- External MIT licensed library, usable by Deamer output. (Note, the external library is found here)
- Support for the LPD's: Lexicon, Grammar, Identity, Generation
Changes to DST
DST is a StringTemplate DSL for C++, via templates you can more easily define code generation.
Status of DLDL
DLDL is used to generate Deamer C++ code. Currently DLDL is still only able to generate Deamer v1. We will make DLDL available for Deamer v2 as soon as possible.
To see the status of DLDL and other Deamer-Tools see this wiki post.
Deamer 1.0.0
Introduction
This document contains the release notes for the Deamer release 1.0.0. It describes changes to the API, major improvements to DeamerProject, and known issues.
Overview
This version has support for several features ranging from compiler generation to analysis of your definition.
You can find more information about how to use Deamer V1 in the wiki, or by looking at examples in the examples directory.
Changes to Deamer
- Deamer now uses cmake for compilation
- Support for lexer generation. It uses flex by default.
- Support for parser generation. It uses bison/yacc by default.
- Support for basic AST generation.
- Support for threatanalysis for language definitions. Allows the user to check their definitions for errors.
- Macro abstractions for easier language definition creation.
- Adds the SimpleLang example, explaining basic parts of Deamer.
Changes to DLDL
- Support for most language definitions
- Support for abstractions such as: "IGNORE", "DELETE", and "GROUP".
- Support for Deamer compatible code generation.
- Support for automatic compiler generation.
- Support for basic arguments, you can use arguments to modify generation.
Deamer 1.0.0-rc1
Deamer 1.0.0-rc1
Introduction
This document contains the release notes for the DeamerProject pre release 1.0.0-rc1. It describes changes to the API, major improvements to DeamerProject, and known issues.
Changes to Deamer
- Language definition structure. Used in all tools to generate code for a given language.
- Support for lexer generation. It uses flex by default.
- Support for parser generation. It uses bison/yacc by default.
- Support for basic AST generation.
- Support for threatanalysis for language definitions. Showing potential threats (errors and warnings) in form of messages.
- Macro abstractions for easier language definition creation.
- Language definition related builders.
- Language analyzers.
Changes to DLDL
- Support for most language definitions
- Support for abstractions such as: "IGNORE", "DELETE", and "GROUP".
- Support for Deamer compatible code generation.
- Support for automatic compiler generation. (If the language definition is valid)
Known issues
- When re generating code, Deamer won't check if a file already exists, and overwrites the complete file.
- Certain language definitions containing "empty recursion" can cause analyzers to run forever.
- Threat "empty recursion" not implemented