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.
Lexi is in its infancy and will not be available for production use any time soon.
brew install lexi-compiler/tap/lexi
Or brew tap lexi-compiler/tap
and then brew install lexi
.
Read all about Lexi at lexi-compiler.io
Make sure you have sbt
version 1.4.x
.
To execute all compiler tests: sbt test
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)))))))