This changelog lists semantic versions and related changes.
- ✨ implement liveness-analysis per function
- determine unused arguments per function
- determine unused variable declarations per function
- determine unused variable values per function
- show register count per function
- ♻️ improve CLI
- improve options and add descriptions
- improve outputs and the verbosity flag
- improve overall readability and maintainability
- ➕ add dependency to commons-cli
- ✅ extend and update tests
- 📝 improve documentation
- ✨ add functions
- ✅ extend and update tests
- 📝 update description of functions
- ♻️ improve readability
- 🐛 improve stack depth evaluation for string concatenations
- 📝 add changelog instead of roadmap
- 📝 improve description of functions
- ✨ add string literals and variables
- ✨ add
==
and!=
support for strings - ✨ implement string concatenations (including type casts for other types) using
§
- ✅ extend tests
- ♻️ improve readability and apply minor improvements
- 📝 improve documentation of types
- ✨ add dev-container for VSCode users, add checkstyle
- ♻️ improve gradle setup, generate executable jar for Easy compiler
- 🔥 remove gradlew
- ✅ test and document comments
- 📝 improve documentation
- ✨ add
float
variables and literals - ✅ add tests
- 🏗️ save type information for expressions inside AST-nodes and remove ExpressionTypeCache
- ♻️ apply minor improvements for better testability
- 📝 improve documentation
- ➕ setup the Jasmin assembler
- ✨ implement generation of Jasmin assembly code
- main function
- declarations, initializations and assignments
- expressions: unary, arithmetic, comparison, logical
- statements:
if
-else
,while
,print
,println
- ✨ implement liveness analysis for
- ✅ add tests for functionality of compiled correct programs
- ✨ add type-checker
- detect missing declaration before first assignment
- detect repeated declarations
- evaluate type of expressions
- detect assignments of incompatible types
- check conditions of control structures (while and if need boolean expressions)
- check content of print/println statements
- ✨ add symbol table
- ✨ add line-evaluator
- ✨ add error-handler for type-errors
- ✅ add tests for type checking
- 🎉 setup git-repository and create gradle-project
- ✨ create
EasyCompiler
class and CLI - ✨ implement reader for Easy source files
- ✅ setup testing
- 📝 create language description of Easy
- ➕ setup SableCC
- ✨ add SableCC grammar, generate abstract syntax tree
- define main function, code blocks and comments
- define literals, operators and expressions including precedence: unary, arithmetic, comparison and logical
- define declarations and assignments
- define control structures (without Dangling-Else!):
if
-else
,while
- define
print
andprintln