У меня есть этот парсер для разбора строк с использованием библиотеки Haskell Parsec.
myStringLiteral = lexeme (
do str <- between (char '\'')
(char '\'' <?> "end of string")
(many stringChar)
; return (U.replace "''" "'" (foldr (maybe id (:)) "" str))
<?> "literal string"
)
Строки в моем языке определены как буквенно-цифровые символы внутри ''
(пример: 'this is my string'
), но эти строки также могут содержать '
внутри него (в этом случае '
должен быть экранирован другой '
, бывший 'this is my string with '' inside of it'
).
Что мне нужно сделать, так это посмотреть вперед, когда '
появляется во время синтаксического анализа строки, и решить, есть ли другой '
после или нет (если нет, вернуть конец строки). Но я не знаю, как это сделать. Есть идеи? Спасибо!