Есть ли модуль CPAN для анализа вложенных скобок? - PullRequest
6 голосов
/ 10 декабря 2008

Есть ли модуль CPAN, который может читать строку, подобную этой:

"[[<asdf>, <foo>], (abc, def, ghi), ({'jkl'})]"

... и разобрать его в некую древовидную структуру, по которой легко ходить и красиво печатать?

Ответы [ 5 ]

9 голосов
/ 10 декабря 2008

Я думаю, что вы могли бы построить поверх Text :: Balanced , что сделает для вас большую работу Вам все равно нужно будет построить древовидную структуру.

4 голосов
/ 10 декабря 2008

Регулярные выражения Perl 5.10 могут обрабатывать подобные сбалансированные структуры. См. (?PARNO) (?-PARNO) (?+PARNO) (?R) (?0) раздел в perlre .

2 голосов
/ 10 декабря 2008

Perl 6 будет иметь встроенные средства для поддержки этого. Тем временем Text :: Balanced (как упомянул Дэйв Рольский), вероятно, является предпочтительным модулем. Обратите внимание, что он также был написан Дамианом Конвеем (как рекомендовано Биллом Карвином).

1 голос
/ 10 декабря 2008

Разбор Дамиана Конвея :: RecDescent

Я этим не пользовался, но стоит поспорить, что стоит использовать модуль Perl, написанный Дамианом Конвеем.

0 голосов
/ 10 декабря 2008

Если строка идентична формату Data Dumper , то она может быть eval возвращена в исходную структуру.

...