/usr/lib/ruby/vendor_ruby/treetop/compiler/ruby_builder.rb is in ruby-treetop 1.4.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | require 'treetop/ruby_extensions/string'
module Treetop
module Compiler
class RubyBuilder
attr_reader :level, :address_space, :ruby
def initialize
@level = 0
@address_space = LexicalAddressSpace.new
@ruby = ""
end
def <<(ruby_line)
return if ruby_line.blank?
ruby << ruby_line.tabto(level) << "\n"
end
def newline
ruby << "\n"
end
def indented(depth = 2)
self.in(depth)
yield
self.out(depth)
end
def class_declaration(name, &block)
self << "class #{name}"
indented(&block)
self << "end"
end
def module_declaration(name, &block)
self << "module #{name}"
indented(&block)
self << "end"
end
def method_declaration(name, &block)
self << "def #{name}"
indented(&block)
self << "end"
end
def assign(left, right)
if left.instance_of? Array
self << "#{left.join(', ')} = #{right.join(', ')}"
else
self << "#{left} = #{right}"
end
end
def extend(var, module_name)
self << "#{var}.extend(#{module_name})"
end
def accumulate(left, right)
self << "#{left} << #{right}"
end
def if__(condition, &block)
self << "if #{condition}"
indented(&block)
end
def if_(condition, &block)
if__(condition, &block)
self << 'end'
end
def else_(&block)
self << 'else'
indented(&block)
self << 'end'
end
def loop(&block)
self << 'loop do'
indented(&block)
self << 'end'
end
def break
self << 'break'
end
def in(depth = 2)
@level += depth
self
end
def out(depth = 2)
@level -= depth
self
end
def next_address
address_space.next_address
end
def reset_addresses
address_space.reset_addresses
end
private
def indent
" " * level
end
end
end
end
|