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