Compare commits
No commits in common. "5c362d8e13cdd9b59220e2781dd8029422ce25f6" and "3f931c4a659e636f8bc04531cc0a3f4e50a6920d" have entirely different histories.
5c362d8e13
...
3f931c4a65
@ -86,17 +86,16 @@ 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 + 1
|
free += generate! child, table, free, free
|
||||||
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
|
generate! tree.expr, table, entry.register, free + 1
|
||||||
return 1
|
return 1
|
||||||
when TreeAssign
|
when TreeAssign
|
||||||
entry = table[tree.name]?
|
entry = table[tree.name]?
|
||||||
@ -119,7 +118,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 free, 0
|
sne target, 0
|
||||||
cond_jump = jr 0
|
cond_jump = jr 0
|
||||||
|
|
||||||
old_size = @instructions.size
|
old_size = @instructions.size
|
||||||
|
@ -32,6 +32,7 @@ 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
Block a user