Нет, вы должны написать грамматику без контекста (или рекурсивные регулярные выражения Perl) для ее анализа.Чем заменяются игнорируемые вложенные шаблоны?
Парсер будет выглядеть так в псевдокоде:
input = "| {{ | {{ | }} | | }} |", pointer = 0;
char = '', results = [];
read_next_char() {
return input[++ pointer];
}
go_back_one_char() {
pointer --;
}
while (char = read_next_char()) {
if (char == '{') {
if (read_next_char() == '{') InsideBraces();
else go_back_one_char();
}
}
InsideBraces(skipping=false) {
result = "";
while (char = read_next_char()) {
if (char == '{') {
if (read_next_char() == '}') InsideBraces();
else go_back_one_char();
} else if (char == '}') {
if (read_next_char() == '}') break;
else go_back_one_char();
} else {
result += char;
}
}
if (!skipping) results.push(result);
}