Разбор строковых литералов с помощью FParsec? - PullRequest
1 голос
/ 08 февраля 2012

Я хотел бы проанализировать строковые литералы, используя FParsec. Под «строковыми литералами» я подразумеваю что-то среднее между открывающей и закрывающей кавычкой (в моем случае - одинарная кавычка):

'Please, switch off your mobile phone'

Что я сейчас делаю, так это:

let string = between (pstring "'") (pstring "'") (manySatisfy isLetter)

Но это останавливается после первой буквы. Есть ли способ сделать его жадным?

1 Ответ

7 голосов
/ 08 февраля 2012

Это уже жадный;manySatisfy isLetter анализирует последовательность букв из входного потока.

Проблема в том, что синтаксический анализатор завершается ошибкой с , или пробелами, поскольку они не являются буквами.Это можно исправить, используя:

manyChars (noneOf "'")

или более явно, используя вместо этого:

manySatisfy ((<>) '\'')

.

...