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
48
49
|
* 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
- ~, -
- [-] Binary Operators
- [X] +, -, *, /, %
- [ ] !, &, |, <<, >>
- [ ] 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
|