Bill Currie
3e1b034aaf
Use EMIT_DEF correctly.
2011-02-09 15:58:32 +09:00
Bill Currie
e75295b00c
Make normal C style functions generate code.
2011-02-09 10:25:23 +09:00
Bill Currie
68cdc904f5
Give temporary variables unique names.
2011-02-09 10:04:55 +09:00
Bill Currie
681ded9375
Fix debug line number information.
2011-02-09 09:59:43 +09:00
Bill Currie
5eff00fdeb
Fix debug information.
2011-02-09 08:47:01 +09:00
Bill Currie
71c05bd899
Update for the new syntax.
...
This one compiles to progs even :) (though it looks broken).
2011-02-08 22:39:42 +09:00
Bill Currie
81125cff3a
Creation of .ctor now mostly works.
...
There seems to be problems with the actual code generation using incorrect
addresses, but a very simple test file compiles successfully.
2011-02-08 22:38:34 +09:00
Bill Currie
1647b1e61d
Check for the correct type in emit_symtab_cat_def_cnt().
2011-02-08 22:31:09 +09:00
Bill Currie
9b52c590f8
Do not try to emit anything when there are no selector references.
2011-02-08 22:28:32 +09:00
Bill Currie
da14c95bb8
Initialize current_symtab in class_init() when necessary.
...
If an objective-qc symbol is the first token to be read, class_init() is
called before the parser gets a chance to perform the initialization
action. However, class_init() setting current_symtab if the first
objective-qc symbol is seen in a function body would be bad.
2011-02-08 22:26:35 +09:00
Bill Currie
c01f742b7b
Fix some Class vs ClassPtr confusion.
2011-02-08 18:25:23 +09:00
Bill Currie
0d5ab6600d
Store the source expression in a statement.
...
This makes problem reporting more informative.
2011-02-08 18:18:34 +09:00
Bill Currie
faab931ffc
Fix assignment of id to class pointers.
2011-02-08 17:12:01 +09:00
Bill Currie
6643c5dd98
Fix messages to super.
2011-02-08 17:09:27 +09:00
Bill Currie
505e141633
Ensure the class symbol is in the symbol table.
2011-02-08 17:08:58 +09:00
Bill Currie
93a5808659
Support direct struct/union field access.
2011-02-08 14:48:26 +09:00
Bill Currie
3c849b970b
Handle union access now that they're detected properly.
2011-02-08 14:45:48 +09:00
Bill Currie
204a267b6a
Print the def name for a pointer expr when known.
2011-02-08 14:43:57 +09:00
Bill Currie
3b080fcbb0
Fix an uninitialized variable.
2011-02-08 13:27:37 +09:00
Bill Currie
2594be8b1b
Fix a type-o ;)
2011-02-08 13:26:49 +09:00
Bill Currie
8c6fc6fb03
Fix a double insertion of a symbol.
2011-02-08 08:44:08 +09:00
Bill Currie
daa88d8f1c
Fix a type clash warning I'd failed to notice.
2011-02-08 08:23:25 +09:00
Bill Currie
35d53d0d77
Fix typedefs and class names once and for all.
...
I suspect Holub did them that way as a teaching exercise :P
2011-02-08 08:20:32 +09:00
Bill Currie
7e2173f268
Remove some old code.
2011-02-08 08:16:36 +09:00
Bill Currie
d6b10c99aa
Most, if not all, of the fixes needed to get qwaq building.
...
This is pretty much just changing [] to * and moving [N] to the other side
of the variable name.
2011-02-07 22:16:16 +09:00
Bill Currie
92799650c0
Implement struct field access via a pointer.
2011-02-07 22:15:10 +09:00
Bill Currie
7a1a9e3f2d
Better handling of the current storage for function scopes.
2011-02-07 22:11:22 +09:00
Bill Currie
ff70177041
Fix type handling for local variables.
2011-02-07 21:38:58 +09:00
Bill Currie
952a02eb23
Make print_type() output a newline.
2011-02-07 21:31:37 +09:00
Bill Currie
a28ac636a7
Make local declarations support C syntax.
2011-02-07 21:29:04 +09:00
Bill Currie
da4ec3d47c
Allow typedefs and classes in structs.
2011-02-07 20:55:13 +09:00
Bill Currie
aefd2a27d5
Make type handling in the grammar more consistent.
2011-02-07 20:54:49 +09:00
Bill Currie
3c64ae7b66
Fix overzealous type merging.
...
Use the type name instead of the symbol table for comparing
struct/union/enum types.
2011-02-07 20:48:01 +09:00
Bill Currie
265a244ba2
Set the symbol type for structs etc as soon as the tag is created.
...
Tags (struct/union/enum) are always types.
2011-02-07 15:30:49 +09:00
Bill Currie
65a07ada1c
Implement offset dereferences.
2011-02-07 14:56:29 +09:00
Bill Currie
d2b464053c
Fix assignment sub-expressions.
2011-02-07 14:43:07 +09:00
Bill Currie
6fa5bbe473
Support constant folding on enums.
2011-02-07 11:31:23 +09:00
Bill Currie
d549e5c6b5
Allow enums to be tested.
2011-02-07 11:30:56 +09:00
Bill Currie
ef2ad46f7a
Convert complex types to a suitable low-level type.
...
This takes care of moving structures etc around.
2011-02-07 10:55:09 +09:00
Bill Currie
b629c12b31
Do not change the type of the return operand.
...
Doing so made a mess of returning expressions. It was probably a holdover
from before getting instructions with void operand types working.
2011-02-07 10:21:54 +09:00
Bill Currie
829fb33e92
Fix converting nil to a pointer type.
2011-02-07 10:10:48 +09:00
Bill Currie
b8127f7543
Do not segfault when printing a pointer value with a bogus type
2011-02-07 09:57:26 +09:00
Bill Currie
28ba4b5712
Correct a comment.
2011-02-07 09:56:33 +09:00
Bill Currie
d564e6f017
Clean out the old debug prints from emit_function()
2011-02-07 08:46:12 +09:00
Bill Currie
76034861c9
Implement direct ivar access in methods.
...
A warning needs to be generated for access to ivars in a class method, but
it seems to work (unable to check due to other errors).
2011-02-07 08:32:52 +09:00
Bill Currie
3025e04ac5
Partially resurrect field_expr()
...
For now, only entity.field and ivar access via a pointer have been
implemented. The rest will come later as needed.
2011-02-07 08:30:28 +09:00
Bill Currie
1d108a8cec
Support emitting symbolic constants.
2011-02-06 20:08:54 +09:00
Bill Currie
e4ac92b5f2
Auto-cast between enums and the default type.
2011-02-06 20:08:16 +09:00
Bill Currie
6b7a81f5a7
Run find_type() early on enums and structs.
2011-02-06 20:07:19 +09:00
Bill Currie
d54a96e68a
Make enum values visible.
...
Put them in the current symbol table as well as the enum symbol table. The
latter is really just for keeping track of what values are in the enum.
2011-02-06 20:06:09 +09:00