Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cach30verfl0w/furlang

Furlang is a toy language based on LLVM and ANTLR4, developed in Kotlin
https://github.com/cach30verfl0w/furlang

fur furlang kotlin language llvm

Last synced: 29 days ago
JSON representation

Furlang is a toy language based on LLVM and ANTLR4, developed in Kotlin

Awesome Lists containing this project

README

        

# Furlang
Furlang is a toy programming language developed by Cach30verfl0w for learning Compiler Engineering and working with the LLVM API, completely designed in Kotlin/Native. This repository contains the complete toolchain with embeddable compiler, IntelliJ Idea Plugin, Gradle Plugin and parser frontend.

## Credits and Dependencies
This project would not have been possible or much more complicated without the work of the following people and projects listed below.

- [Marc-André Moreau](https://github.com/awakecoding)'s LLVM prebuilt repository ([GitHub](https://github.com/awakecoding/llvm-prebuilt)) providing prebuilts for the CInterop module for the LLVM usage on Kotlin/Native ([MIT License](https://github.com/awakecoding/llvm-prebuilt/blob/master/LICENSE))
- [Alexander Hinze](https://github.com/kitsunealex)'s help with a few design choices in the language itself and some ANTLR4 knowledge (some of the grammar is copied/inspired from the Ferrous Compiler Parser-Lexer Frontend [Vanadium](https://git.karmakrafts.dev/kk/ferrous-project/vanadium))
- The syntax of the language is heavily inspired by the [Kotlin](https://kotlinlang.org/) programming language and other parts are inspired by the [Rust](https://www.rust-lang.org/) programming language

| Name | Author | License |
|---------------------------------------------------------------------------------------------------|----------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [The LLVM Project](https://github.com/llvm/llvm-project/) | [LLVM](https://github.com) | [Apache 2.0 with exceptions](https://github.com/llvm/llvm-project/blob/main/LICENSE.TXT) |
| [ANTLR Kotlin Runtime](https://github.com/Strumenta/antlr-kotlin) | [Strumenta](https://github.com/Strumenta) | [Apache 2.0](https://github.com/Strumenta/antlr-kotlin/blob/master/LICENSE-Apache) and [BSD-3-Clause](https://github.com/Strumenta/antlr-kotlin/blob/master/LICENSE-BSD) |
| [ANTLR4 Intellij Adapter](https://github.com/antlr/antlr4-intellij-adaptor) | [ANTLR Project](https://github.com/antlr) | [BSD 2-CLause](https://github.com/antlr/antlr4-intellij-adaptor/blob/master/LICENSE) |
| [IntelliJ Platform Gradle Plugin](https://github.com/JetBrains/intellij-platform-gradle-plugin) | [JetBrains](https://github.com/JetBrains) | [Apache License 2.0](https://github.com/JetBrains/intellij-platform-gradle-plugin/blob/main/LICENSE) |
| [Gradle Download Task](https://github.com/michel-kraemer/gradle-download-task) | [Michel Krämer](https://github.com/michel-kraemer) | [Apache License 2.0](https://github.com/michel-kraemer/gradle-download-task/blob/master/LICENSE.txt) |