Я пытаюсь создать метод Scala, который будет принимать одну родительскую группу скобок, представленную в виде строки, а затем сопоставлять каждую подгруппу скобок с другой буквой. Затем он должен поместить их в карту, которую он возвращает, поэтому в основном я вызываю следующий метод следующим образом:
val s = "((2((x+3)+6)))"
val map = mapParentheses(s)
Где s может содержать любое количество наборов скобок, а возвращаемая карта должна содержать:
"(x+3)" -> 'a'
"(a+6)" -> 'b'
"(2b)" -> 'c'
"(c)" -> 'd'
Так что в другом месте моей программы я могу вызвать 'd' и получить "(c)", который станет "((2b))" затем ((2(a+6))) и, наконец, ((2((x+3)+6))). Строка, отправляемая методу mapParentheses, никогда не будет содержать несовпадающих круглых скобок или дополнительных символов за пределами основных родительских круглых скобок, поэтому следующие элементы никогда не будут отправлены:
- "(fsf)a", поскольку
a
находится за пределами родительских скобок - "(a(aa))(a)", поскольку
(a)
находится за пределами родительских скобок - "((a)", поскольку скобки не совпадают
- ")a(", потому что скобки не совпадают
Поэтому мне было интересно, знает ли кто-нибудь о простом (или не простом) способе создания этого метода mapParentheses.
((x + 1) + (y + 2))
)? - person Travis Brown   schedule 16.09.2012