Я пишу парсер для разбора огромных кусков английского текста с помощью attoparsec. Пока все было замечательно, за исключением разбора этого символа "――"
. Я знаю, что это всего 2 черты вместе "--"
. Странная вещь, парсер ловит это в этом коде:
wordSeparator :: Parser ()
wordSeparator = many1 (space <|> satisfy (inClass "――?!,:")) >> pure ()
но не в этом случае:
specialChars = ['――', '?', '!', ',', ':']
wordSeparator :: Parser ()
wordSeparator = many1 (space <|> satisfy (inClass specialChars)) >> pure ()
Причина, по которой я использую список specialChars
, заключается в том, что у меня много символов для рассмотрения, и я применяю его несколько раз. А что касается входных данных, рассмотрим: "I am ――Walt Whitman._"
, а выход должен быть {"I", "am", "Walt", "Whiteman."}
Я полагаю, что это в основном потому, что "――"
не является Char? Как это исправить?