Skip to content

Experimental programming metalanguage, targeting on intertranspiling with other languages.

License

Notifications You must be signed in to change notification settings

axion-lang/Axion

Repository files navigation

Welcome to Axion programming language toolset

🚧 Under construction 🚧

Codacy Badge Build Status Gitmoji

📂 Distribution

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.

🎯 Key features

  • 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.

💹 Progress

  • Lexical analyzer
  • Syntax parser
  • Interpreter (based on C# transpiling)
  • Console code editor with syntax highlighting & error reporting
  • C#, Python transpilers

🚀 Launching

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).

📜 You can take a look at the language syntax in project wiki