Class: PreProcessor

Inherits:
Object show all
Defined in:
lib/rubimc/preprocessor.rb

Overview

class RubimRipper

Constant Summary collapse

@@program =
""

Class Method Summary collapse

Class Method Details

.execute(str) ⇒ Object



300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
# File 'lib/rubimc/preprocessor.rb', line 300

def self.execute(str)
  @@program = str
  
  # Последовательность очень важна - не нарушать!
  @@program = RubimRipper.replace_assing_operators(@@program)
  @@program = RubimRipper.replace_all_numeric(@@program)
  @@program = RubimRipper.replace_then_else_elsif_kw(@@program)

  @@program = RubimRipper.replace_modify_express(@@program, "if")
  @@program = RubimRipper.replace_modify_express(@@program, "unless")
  @@program = RubimRipper.replace_modify_express(@@program, "while")
  @@program = RubimRipper.replace_modify_express(@@program, "until")

  @@program = RubimRipper.replace_flat_express(@@program, "if")
  @@program = RubimRipper.replace_flat_express(@@program, "unless")
  @@program = RubimRipper.replace_flat_express(@@program, "while")
  @@program = RubimRipper.replace_flat_express(@@program, "until")

  @@program = RubimRipper.replace_loop(@@program)
  @@program = RubimRipper.replace_rubim_tmpif(@@program)

  @@program = RubimRipper.add_binding_to_init(@@program)
  @@program = RubimRipper.replace_instructions(@@program) # next/break
  @@program = RubimRipper.replace_boolean_kw(@@program) # true/false
end

.programObject



297
# File 'lib/rubimc/preprocessor.rb', line 297

def self.program; @@program; end

.program=(str) ⇒ Object



298
# File 'lib/rubimc/preprocessor.rb', line 298

def self.program=(str); @@program = str; end

.write_in_file(input_file, dirname, basename, outfile) ⇒ Object

write preprocessing program in file



328
329
330
331
# File 'lib/rubimc/preprocessor.rb', line 328

def self.write_in_file(input_file, dirname, basename, outfile)
  PreProcessor.execute( File.read(input_file) )
  File.write("#{outfile}", PreProcessor.program)
end