summaryrefslogtreecommitdiff
path: root/README.md
blob: e209b74a1221f577fe0d6f9a71b462aaadaad7db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

Intro
===
This project is an attempt at creating a simple rust compiler in C++, with the ultimate goal of being a seperate reimplementation.

The short-term goal is to compile pre-borrowchecked rust code into C, for passing to an existing C compiler. Thankfully, (from what I have seen), the borrow checker is not needed to compile rust code (just to ensure that it's valid)

Current Features
===
- Successfully parses libcore and rustc's run-pass tests
- (incomplte) Attribute and macro expansion
 - Rewrite in progress, missing some syntax extensions
- Resolves all paths to absolute forms
- Outputs the processed AST as (almost) rust code
 - Almost because it uses special path types to handle: external crates, 'str', and anonymous modules.

Short-Term Plans
===
- Complete rewrite/audit of resolve section to reduce chance of bugs.
- Type resolution and checking (quite interlinked)
- Converting operator invocations to explicit calls

Medium-Term Goals
===
- Flattening AST into an intermediate form with no module higherarchy or generics
- Converting flat AST into C
 - Bonus points for making it readable C
 - NOTE: Due to `#[cfg]` attributes being resolved already, the C code won't be portable.