summaryrefslogtreecommitdiff
path: root/README.org
blob: 49af2a533665a0af0312093028033d9d4acb4a96 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
* Run Instructions

The =manifest.scm= file provides the ideal build environment automatically to Guix users. flex, pkg-config, bison, make, and gcc are required to compile the frontend into a shared object file with =make all=, and guile is required to run the =ull= script.

Running the ./ull script will print allowed arguments, which follows the interface prescribed by the book /Writing a C Compiler/ by Nora Sandler.

* General

This compiler was made following the general guidelines provided in /Writing a C Compiler/ by Nora Sandler.

Since this a functional-programing/guile learning project, I utilized flex and bison to allow use of the Guile/C interface. Development takes a functionality-first approach---memory leaks and other undesired behavior likely.

* Feature Agenda

** Current Issues

- [ ] Memleak related to driver.c, haven't figured out how to test this yet
- [ ] More parenthesis

** TODO Major Features [2/19]

- [X] Trivial Programs
- [X] Unary Operators
  - bitwise complement, negation
- [ ] Binary Operators
- [ ] Logical and Relational Operators
- [ ] Local Variables
- [ ] If Statements and Conditional Expressions
- [ ] Compound Statements
- [ ] Loops
- [ ] Functions
- [ ] File Scope Variable Declarations and Storage-Class Specifiers
- [ ] Long Integers
- [ ] Unsigned Integers
- [ ] Floating Point Numbers
- [ ] Pointers
- [ ] Arrays and Pointer Arithmetic
- [ ] Characters and Strings
- [ ] Dynamic Memory Allocation
- [ ] Structures
- [ ] A Multitude Of Optimizations

** Fixed

- [X] Reasonable parser error messages
- [X] Rewrite deprecated temporary file generation method
- [X] Cleanup temp files after process end