Ваш парсер работает точно так же, как и кодированный:
- Сначала
char '"'
потребляет первую цитату - Затем
many $ satisfy ...
ничего не потребляет, потому что следующая символ - это кавычка, которая не удовлетворяет предикату - Наконец,
char '"'
потребляет вторую кавычку, в результате получается пустая строка и остается неиспользованный хвост "Hello"
Если вы хотите, чтобы ваш синтаксический анализатор рассматривал начальные три кавычки как кавычки, вы должны определить некоторые строгие правила, как это будет работать.
Например, если четыре кавычки в строке анализировать как две кавычки, которые указаны с обеих сторон, или это должна быть одна кавычка с неиспользованным хвостом, состоящим из одной кавычки?
А как насчет других символов? Должен ли "foo"bar"
быть проанализирован как "foo\"bar"
или как "foo"
с неиспользованным хвостом bar"
?
Короче говоря, есть веская причина, почему существуют escape-последовательности: -)