This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require_relative "./node" | |
module AST | |
## | |
# Реализация зиппера для обхода структуры AST. | |
# | |
# Что такое зиппер? Это паттерн из функционального программирования, предлагаемый | |
# в качестве более продвинутой замены визиторов. По сути энумератор (или курсор), | |
# умеет ходить не только вперёд/назад, но и вверх/вниз по дереву. Кроме этого | |
# во время обхода дерева зиппер позволяет нам удалять/заменять/добавлять ноды |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## OLD | |
# DO NOT MODIFY THE CODE BELOW THIS LINE! | |
_elements_cnt = 0 | |
_elements_cnt = Integer(gets) | |
_elements_i=0 | |
_elements = Array.new(_elements_cnt) | |
while (_elements_i < _elements_cnt) | |
_elements_item = gets.to_s.strip; |