#python #haskell #split #lexical-analysis #shlex
#питон #haskell #разделить #лексический анализ #shlex
Вопрос:
Как я могу разделить строку в синтаксисе в стиле оболочки в Haskell? Эквивалент в Python shlex.split
.
>>> shlex.split('''/nosuchconf "/this doesn't exist either" "yep"''')
['/nosuchconf', "/this doesn't exist either", 'yep']
Комментарии:
1. Вы когда-нибудь получали удовлетворительный ответ на этот вопрос?
2. @RichardCook Нет, я так не считаю. Прошло некоторое время.
Ответ №1:
Я не уверен, что именно вы имеете в виду: вы хотите получить все вложенные строки в кавычках из строки? Обратите внимание, что в отличие от Python и т. Д. В Haskell есть только один набор кавычек, которые указывают, что что-то является строкой, а именно "..."
.
Возможности для рассмотрения:
- Функции слов и строк
- Разделенный пакет
- Напишите пользовательский синтаксический анализатор, используя polyparse, uu-parsinglib, parsec и т. Д.
Это может быть полезно, если вы укажете, почему вам нужна такая функциональность: вы пытаетесь проанализировать существующие сценарии оболочки? Тогда language-sh может быть полезен. Но вы не должны использовать такие строки внутри Haskell, а вместо этого использовать [String]
или что-то в этом роде.
Комментарии:
1. Строка, разделенная оболочкой, является значением параметра в файле конфигурации в стиле INI.
2. @MattJoiner: если вы хотите прочитать конфигурационный файл в стиле INI, см. hsini и ConfigFile .
3. Да, я уже использую ConfigFile… Значением параметра является эта строка оболочки…
4. @MattJoiner: о, и это еще не делает это разделение для вас? Возможно, вам удастся попросить Джона Герцена добавить поддержку для синтаксического анализа таких значений для вас (поскольку ConfigFile уже использует parsec).