dic an spanifying output

This commit is contained in:
Torsten Ruger 2015-11-01 13:36:00 +02:00
parent 09bfae1a5f
commit f2b14c743d

View File

@ -49,34 +49,40 @@ class ToCode < AST::Processor
puts "Missing: " + s.type puts "Missing: " + s.type
s.to_sexp s.to_sexp
end end
def div statement , html
"<div class='statement #{statement.object_id}'>" + html + "</div>"
end
def span statement , html
"<span class='#{statement.object_id}'>" + html + "</span>"
end
def on_function statement def on_function statement
return_type , name , parameters, kids , receiver = *statement return_type , name , parameters, kids , receiver = *statement
str = return_type + " " + name.to_a.first + "(" str = return_type + " "
str += receiver + "." if receiver
str += name.to_a.first + "("
str += process(parameters) + ")<br>" str += process(parameters) + ")<br>"
str += process(kids) + "end<br>" str += process(kids) + "end<br>"
str div(statement,str)
end end
def on_parameters statement def on_parameters statement
process_all(statement.children).join(",") process_all(statement.children).join(",")
end end
def on_parameter p def on_parameter p
type , name = *p type , name = *p
type + " " + name span(type,type) + " " + span(name,name)
end end
# str += parameters.children.collect { |p| process(p)}.join(",") + ")<br>"
# str += kids.collect { |p| process(p)}.join("<br>")
def on_string s def on_string s
"'" + s.first + "'" span(s, "'" + s.first + "'")
end end
def on_field_def statement def on_field_def statement
type , name , value = *statement type , name , value = *statement
str = type + " " + name str = span(type, type) + " " + span(name,name)
str += " = #{process(value)}" if value str += " = #{process(value)}" if value
str div(s,str)
end end
def on_return statement def on_return statement
"return " + process(statement.first ) str = "return " + process(statement.first )
div(statement,str)
end end
def on_false_statements s def on_false_statements s
on_statements s on_statements s
@ -88,9 +94,8 @@ class ToCode < AST::Processor
str = "" str = ""
s.children.each do |c| s.children.each do |c|
str += process(c).to_s str += process(c).to_s
str += "<br>"
end end
str div(s,str)
end end
def on_if_statement statement def on_if_statement statement
branch_type , condition , if_true , if_false = *statement branch_type , condition , if_true , if_false = *statement
@ -98,34 +103,37 @@ class ToCode < AST::Processor
ret = "if_#{branch_type}(" + process(condition) + ")<br>" + process(if_true) ret = "if_#{branch_type}(" + process(condition) + ")<br>" + process(if_true)
ret += "else" + "<br>" + process(if_false) if if_false ret += "else" + "<br>" + process(if_false) if if_false
ret += "end" ret += "end"
div(statement,ret)
end end
def on_assignment statement def on_assignment statement
name , value = *statement name , value = *statement
name = name.to_a.first name = name.to_a.first
v = process(value) v = process(value)
name + " = " + v str = name + " = " + v
div(statement,str)
end end
def on_call c def on_call c
name , arguments , receiver = *c name , arguments , receiver = *c
ret = process(name) ret = process(name)
ret = process(receiver.first) + "." + ret if receiver ret += process(receiver.first) + "." + ret if receiver
ret += "(" ret += "("
ret += process(arguments).join(",") ret += process(arguments).join(",")
ret += ")" ret += ")"
span(c,ret)
end end
def on_operator_value statement def on_operator_value statement
operator , left_e , right_e = *statement operator , left_e , right_e = *statement
left_reg = process(left_e) left_reg = process(left_e)
right_reg = process(right_e) right_reg = process(right_e)
left_reg + " " + operator + " " + right_reg span(statement , left_reg + " " + operator + " " + right_reg )
end end
def on_arguments args def on_arguments args
args.children.collect{|c| process(c)} args.children.collect{|c| process(c)}
end end
def on_name name def on_name name
name.first span(name,name.first)
end end
def on_int i def on_int i
i.first.to_s span(i , i.first.to_s)
end end
end end