Skip to content

A multi-language and multi-target modular research compiler designed for easy modification with first-class plugin support.

Notifications You must be signed in to change notification settings

lexi-compiler/lexi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lexi Compiler

A multi-language and multi-target modular research compiler designed for easy modification with first-class plugin support.

Lexi is not just a standard compiler; it will also provide metaprogramming capabilities for you to use with existing compilers, including parsing and type system APIs.

Current State

Lexi is in its infancy and will not be available for production use any time soon.

Install Lexi

macOS

brew install lexi-compiler/tap/lexi

Or brew tap lexi-compiler/tap and then brew install lexi.

Documentation

Read all about Lexi at lexi-compiler.io

Run Tests

Quick Dev Guide

Make sure you have sbt version 1.4.x.

Running Tests

To execute all compiler tests: sbt test

Build Compiler

Build Java jar file which will generate a jarfile under target/scala-3.0.0-M3/lexi-assembly-0.1.0-SNAPSHOT.jar:

sbt assembly

Or build native image via GraalVM native-image under target/graalvm-native-image/lexi:

sbt graalvm-native-image:packageBin

To test the compiler build was successful:

$ java -jar target/scala-3.0.0-M3/lexi-assembly-0.1.0-SNAPSHOT.jar -lang kotlin "val x: Int = 5"
$ Some(IrFile(None,Some(Vector(IrTopLevelObject(Some(IrDeclaration(Some(IrProperty(Some(x),Some(5),Some(Int))),None)))))))
$ target/graalvm-native-image/lexi -lang kotlin "val x: Int = 5"
$ Some(IrFile(None,Some(Vector(IrTopLevelObject(Some(IrDeclaration(Some(IrProperty(Some(x),Some(5),Some(Int))),None)))))))

About

A multi-language and multi-target modular research compiler designed for easy modification with first-class plugin support.

Resources

Stars

Watchers

Forks

Packages

No packages published