У меня проблема с выполнением подстановки строк в Ruby. Я пишу препроцессор для ограниченного языка, который я использую, который изначально не поддерживает массивы, поэтому я хакерский самостоятельно.
У меня есть строка:
x[0] = x[1] & x[1] = x[2]
Я хочу заменить каждый экземпляр переформатированной версией:
x__0 = x__1 & x__1 = x__2
Строка может содержать квадратные скобки в другом месте.
У меня есть регулярное выражение, которое будет соответствовать использованию массива:
array_usage = /(\w+)\[(\d+)\]/
но я не могу понять конструкцию Ruby для замены каждого экземпляра по одному. Я не могу использовать .gsub()
, потому что это будет соответствовать каждому экземпляру в строке и заменять каждое объявление массива тем, что было первым. .scan()
жалуется, что строка изменяется, если вы пытаетесь использовать сканирование с .sub()!
внутри блока.
Любые идеи будут оценены!