blob: a52de5b345ed7011887a1ea0e9b7cfc7bce969b4 (
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#+TITLE: Notes
#+DATE: <2017-02-20 Mon>
#+AUTHOR: Yann Herklotz
#+EMAIL: ymherklotz@gmail.com
#+DESCRIPTION: These are notes about the Compiler project.
* Lexer
** DONE Lab (calculate statistics over text)
DEADLINE: <2017-01-31 Tue>
*** Task
We had to calculate statistics over text. This was to learn about
flex and how to use it.
** DONE Coursework (c lexer)
DEADLINE: <2017-02-07 Tue>
*** Task
Design a C lexer that could lex C and output the important information
about the C code. This made us read the C spec for the first time.
* Parser
** DONE Lab (parse maths)
DEADLINE: <2017-02-14 Tue>
*** Task
We had to design a maths parser and then analyse the tree that was
created by parsing it. The additional parts where to differentiate
equations using the different rules for differentiating. We also had to
evaluate the expressions and do other operations on the tree. This taught
us how to use bison.
** TODO Coursework (c parser)
DEADLINE: <2017-03-07 Tue>
*** Task
*** AST (Abstract Syntax Tree)
Finsihed the AST for now, using polymorphism to achieve this. Right now i
t achieves the goal of this coursework as it does print out the AST in xml
format and supports all the features that the parser should support. The
expressions branch of the AST is completely bare because they are not needed
for this parser. I will continue working on this AST in the compiler section
so that it supports all the other constructs that I need for the compiler.
*** Grammar
The grammar is not completely done yet as I dont support all of the declartions
that are possible, and as I add more constructs in the AST I will also have to add
declarations in the bison file. This I will only continue in the Compiler section.
* Compiler
** DONE Lab (codegen)
DEADLINE: <2017-02-28 Tue>
*** Task
In this lab we used the setup provided to us to make a compiler for the language
specified in the lab. The AST was already built for us and the language was already
parsed using C++ instead of bison.
** TODO Coursework (c compiler)
DEADLINE: <2017-03-28 Tue>
*** Task
*** Mips Assembly
- %hi(id) :: loads the upper address of the global variable id
- %lo(id) :: loads the lower address of the global variable id
- addiu :: Add Immediate Unsigned
- jr :: Jump Register
- li :: Pseudo instruction interpreted as ( lui $rd, LabelAddr[31:16]
ori $rd,$rd, LabelAddr[15:0] )
- lui :: loads uppper immediate.
- lw :: Load Word
- move :: Pseudo instruction interpreted as (add $rt, $rs, $zero)
- nop :: No Operation
- sw :: Store Word
*** TODOs
- Change parser to have two vectors with global variables and functions.
- Analyse tree with map including "name", and struct with "type" and "stack
position", and a counter passed by reference.
- This function will be called by printasm() in the base class and will only be
implemented by function.
|