Разделенный синтаксис, подобный оболочке, в Haskell?

#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).