Axion
Experimental programming metalanguage, targeting on intertranspiling with other languages.
Install / Use
/learn @axion-lang/AxionREADME
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. <br> 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).
<h3 align="center">:scroll: You can take a look at the language syntax in <a href="https://github.com/F1uctus/Axion/wiki">project wiki</a></h3>