Entire codebase is implemented in .NET 6 (+ .NET Standard 2.1)
Directory | Contents |
---|---|
Axion |
User interface for compiler: CLI, ScriptBench editor, interpreter |
Axion.Core |
Language core, lexer, parser, frontend interface, compiler API |
Axion.Emitter.Axion |
Extension to translate Axion syntax tree back into Axion source code |
Axion.Emitter.CSharp |
Extension to translate Axion AST into C# source code |
Axion.Emitter.Python |
Extension to translate Axion AST into Python source code |
Axion.Testing |
NUnit-based unit tests for the toolset |
CodeConsole |
Sub-repo for ScriptBench - console code editor (still unstable) |
misc |
Code examples, arts, etc. |
-
Expressiveness
Maintaining the "perfect balance" (© Thanos) between usage of expressive symbols and readable names.
Support for language-oriented programming (LOP) and macros system allows you to:- Add new language syntax of almost any complexity
- Implement common design patterns quickly and simply
-
Inter-transpiling to other popular languages
At the moment Axon targets C# and Python code output. More languages are planned!
-
Static typing with less annotations
Support for full type soundness and type inferring (in design).
-
High-performance
Compile-time computations, macros expansion, and transpiling to fastest target language's code.
- Lexical analyzer
- Syntax parser
- Interpreter (based on C# transpiling)
- Console code editor with syntax highlighting & error reporting
- C#, Python transpilers
You can launch compiler with dotnet run
in Axion.csproj
folder
and type -h
in console to get support about arguments for compiler interface.
At the moment toolset supports interpretation of the Axion source
with -i
CLI argument (through console code editor) and
file processing with -f "<path>.ax" -m <output lang>
arguments.
Interpretation is performed by transpiling Axion to C# and running it through Roslyn (still incomplete and doesn't support some syntax).