- Notifications
You must be signed in to change notification settings - Fork1
A toy OOP language with lexer, parser, codegen and runtime
License
NotificationsYou must be signed in to change notification settings
XChy/XSharp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A toy OOP language with lexer, parser, compiler and runtime
Not completed yet, and your contributions are highly appreciated
Having learned about the theory of compiler, a dull coder try to develop something to have fun.
XSharp is compiled into the byte codes,and then run in a XSharp runtime environment.
Also it provide a way to generate native binary withLLVM
This project can be built with CMake
Input the command below in to build XSharp Compiler in your computer(Only support Linux now)
# Install LLVM dependencies for XSharpsudo apt install llvm-15# Install toolchain for compiling XSharpsudo apt install build-essentialgit clone git@github.com:XChy/XSharp.git where/xsharp/lies/incd where/xsharp/lies/in./buildRelease.sh
#default compile into a binary executablebin/xsharpc xxx.xsharp#compile into bytecode, not supported yetbin/xsharpc -vm xxx.xsharp# compile into bytecode which can be executed by XSharp's VMbin/xsharp xxx.xe# execute the bytecode
XSharp can compile XSharp code into LLVM IR, whichXSharp applyLLVM15(or above) to compile and optimize to generate binary.
For format printing.
For CLI argument parser.
For garbage collection.
i32 a =2333;
i32abs(i32 a){if(a >=0)return aelsereturn -a;}
classfoo{ i32getAge() {return self.age; }voidsetAge(i32 age) { self.age = age; } i32 age;}
voidmain(){print("Hello,World!");}
--XSharp | |- XSharp # Main code of XSharp (Lexer, Parser) |- XSharpRuntime # Runtime for X# |- XSharpCLI # Command-line Interface (xsharpc) |- |- LLVMIR # Impliment AOT for xsharpc |- test # Test driver