У меня есть парсер, который читает файлы.Внутри файла вы можете объявить имя файла, и синтаксический анализатор пойдет и прочитает его, затем, когда это будет сделано, возьмет его с того места, где он остановился, и продолжит.Это может произойти столько уровней, сколько вы хотите.
Звучит довольно просто.Все, что я хочу сделать, это распечатать имена файлов и номера строк.
У меня есть класс с именем FileReader, который выглядит следующим образом:
class FileReader
attr_accessor :filename, :lineNumber
def initialize(filename)
@filename = filename
@lineNumber = 0
end
def readFile()
# pseudocode to make this easy
open @filename
while (lines)
@lineNumber = @lineNumber + 1
if(line startsWith ('File:'))
FileReader.new(line).readFile()
end
puts 'read ' + @filename + ' at ' + @lineNumber.to_s()
end
puts 'EOF'
end
end
Достаточно просто.Допустим, у меня есть файл, который ссылается на другие файлы, подобные этому.File1-> File2-> file3.Вот как это выглядит:
read File1 at 1
read File1 at 2
read File1 at 3
read File2 at 1
read File2 at 2
read File2 at 3
read File2 at 4
read File3 at 1
read File3 at 2
read File3 at 3
read File3 at 4
read File3 at 5
EOF
read File3 at 5
read File3 at 6
read File3 at 7
read File3 at 8
EOF
read File2 at 4
read File2 at 5
read File2 at 6
read File2 at 7
read File2 at 8
read File2 at 9
read File2 at 10
read File2 at 11
И это не имеет никакого смысла для меня.
File 1 has 11 lines
File 2 has 8 lines
File 3 has 4 lines
Я бы предположил, что создание нового объекта будет иметь свою собственную область, которая невлияет на родительский объект.