class Bpl::AST::Body
Public Instance Methods
declarations()
click to toggle source
# File lib/bpl/ast/statement.rb, line 138 def declarations; locals + blocks end
fresh_from(prefix,taken)
click to toggle source
# File lib/bpl/ast/statement.rb, line 157 def fresh_from(prefix,taken) return prefix unless taken.include?(prefix) || prefix.empty? (0..Float::INFINITY).each do |i| break "#{prefix}_#{i}" unless taken.include?("#{prefix}_#{i}") end end
fresh_label(prefix)
click to toggle source
# File lib/bpl/ast/statement.rb, line 151 def fresh_label(prefix) name = fresh_from (prefix || "$bb"), @blocks.map{|b| b.names.map(&:name)}.flatten decl = Label.new(name: name) return LabelIdentifier.new(name: name, declaration: decl) end
fresh_var(prefix,type,taken=[])
click to toggle source
# File lib/bpl/ast/statement.rb, line 144 def fresh_var(prefix,type,taken=[]) taken += @locals.map{|d| d.names}.flatten name = fresh_from(prefix || "$var", taken) append_children(:locals, bpl("var #{name}: #{type};")) bpl(name) end
show() { |b| ... }
click to toggle source
# File lib/bpl/ast/statement.rb, line 140 def show Printing.braces((locals + blocks).map{|b| yield b} * "\n") end