projects
/
fur
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement and/or, introducing jumps and labels
[fur]
/
c_generation.py
diff --git
a/c_generation.py
b/c_generation.py
index
a1e4e59
..
821048f
100644
(file)
--- a/
c_generation.py
+++ b/
c_generation.py
@@
-22,6
+22,9
@@
def generate_integer_argument(argument):
assert isinstance(argument, int)
return '(int32_t){}'.format(argument)
assert isinstance(argument, int)
return '(int32_t){}'.format(argument)
+def generate_label_argument(argument):
+ return 'LABEL_{}'.format(argument)
+
def generate_null_argument(argument):
assert argument is None
return 'NULL'
def generate_null_argument(argument):
assert argument is None
return 'NULL'
@@
-55,6
+58,8
@@
def generate_argument(instruction):
'gt': generate_null_argument_from(2),
'gte': generate_null_argument_from(2),
'idiv': generate_null_argument_from(2),
'gt': generate_null_argument_from(2),
'gte': generate_null_argument_from(2),
'idiv': generate_null_argument_from(2),
+ 'jump': generate_label_argument,
+ 'jump_if_false': generate_label_argument,
'lt': generate_null_argument_from(2),
'lte': generate_null_argument_from(2),
'mod': generate_null_argument_from(2),
'lt': generate_null_argument_from(2),
'lte': generate_null_argument_from(2),
'mod': generate_null_argument_from(2),