У меня есть следующее Подвыражение разобрать «цитирует», которые имеют следующий форматРекомендации по FParsec для обработки пробельных
"5.75 @ 5.95"
поэтому у меня есть это парсеки выражения для синтаксического анализа его
let pquote x = (sepBy (pfloat) ((spaces .>> (pchar '/' <|> pchar '@')>>. spaces))) x
Он отлично работает .. за исключением случаев, когда на моем входе есть конечное пространство, поскольку выражение разделителя начинает потреблять контент. Поэтому я завернул его в попытку, которая работает и кажется, из того, что я понимаю, более или менее того, что это должно было быть.
let pquote x = (sepBy (pfloat) (attempt (spaces .>> (pchar '/' <|> pchar '@')>>. spaces))) x
Как я не знаю fparsec так хорошо, интересно, есть ли лучший способ написать это. это кажется немного тяжелым (в то же время очень управляемым конечно)
это # 2 была боль. хороший трюк, чтобы знать. все полезные комментарии .. – nicolas
ваш проект сумасшедший. ты сумасшедший. Приятно видеть, что какой-то парсек используется здесь, показания качества, я думаю. – nicolas
['spaces'] (http://www.quanttec.com/fparsec/reference/charparsers.html#members.spaces) анализирует нулевые или более пробелы - не нужно использовать' opt'. – Daniel