Class: Object

Inherits:
BasicObject
Defined in:
lib/rubimc/preprocessor.rb,
lib/rubimc/ruby_classes.rb

Overview

ЗАДАЧА ПРЕПРОЦЕССОРА: 1. (готово) замена оператора присваивания: “=” на “.c_assign=” 2. (готово )замена всех цифр(целые, дробные, отриц.) 3a. (не готово) Замена условий (find_far_pos - возвращать позицию с учетом длины идентификатора) 3b. (готово) Замена циклов 3c. Замена управляющих структур: break, next, redo, retry 4. замена строк “123” => UserVariable.new(“123”) - строки “это_строка” и ‘это_строка’ 5. Поиск необъявленных переменных и выдача ошибок 6. Предупреждение об использовании зарезервированных переменных и методов все они начинаются на “__rubim__” (напр. __rubim__times или __rubim__classparams) 7. Предупреждение об использовании зарезервированных классов UserClass, UserArray (лучше заменить на RubimClass, RubimArray) 8. Добавление предка к пользовательским классам 9. Замена return на __rubim_return 10. Сохранить все пользовательские комментарии в генерируемом коде 11. Цикл for - хз-чо делать…

Instance Method Summary collapse

Instance Method Details

#has_parent?(name) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
# File 'lib/rubimc/ruby_classes.rb', line 6

def has_parent?(name)
	return false unless self.respond_to? :ancestors
	self!=name and self.ancestors.include?(name)
end

#in?(array) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
# File 'lib/rubimc/preprocessor.rb', line 26

def in?(array)
	array.each {|x| return true if x == self}
	return false
end

#not_nil?Boolean

Returns:

  • (Boolean)


2
3
4
# File 'lib/rubimc/ruby_classes.rb', line 2

def not_nil?
	!self.nil?
end

#to_rubimObject



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rubimc/ruby_classes.rb', line 11

def to_rubim
	type = case self.class.name
				when "Fixnum" then 'int'
				when "Float" then 'float'
				when "String" then 'string'
				else nil
			end
	if type.nil? or self.to_s.nil?
		RubimCode.perror "Неизвестный тип переменной"
	end
	UserVariable.new(self.to_s, type)
end