Compare commits
2 Commits
3f931c4a65
...
5c362d8e13
Author | SHA1 | Date |
---|---|---|
Danila Fedorin | 5c362d8e13 | |
Danila Fedorin | 946db467ee |
|
@ -86,16 +86,17 @@ module Chalk
|
|||
when TreeBlock
|
||||
table = Table.new(table)
|
||||
tree.children.each do |child|
|
||||
free += generate! child, table, free, free
|
||||
free += generate! child, table, free, free + 1
|
||||
end
|
||||
when TreeVar
|
||||
entry = table[tree.name]?
|
||||
if entry == nil
|
||||
entry = VarEntry.new free
|
||||
free += 1
|
||||
table[tree.name] = entry
|
||||
end
|
||||
raise "Unknown variable" unless entry.is_a?(VarEntry)
|
||||
generate! tree.expr, table, entry.register, free + 1
|
||||
generate! tree.expr, table, entry.register, free
|
||||
return 1
|
||||
when TreeAssign
|
||||
entry = table[tree.name]?
|
||||
|
@ -118,7 +119,7 @@ module Chalk
|
|||
when TreeWhile
|
||||
before_cond = @instructions.size
|
||||
generate! tree.condition, table, free, free + 1
|
||||
sne target, 0
|
||||
sne free, 0
|
||||
cond_jump = jr 0
|
||||
|
||||
old_size = @instructions.size
|
||||
|
|
|
@ -32,7 +32,6 @@ module Chalk
|
|||
def generate!(emitter, params, table, target, free)
|
||||
emitter.generate! params[0], table, free, free + 1
|
||||
emitter.instructions << GetFontInstruction.new free
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue