Ошибка синтаксического анализа при вводе '‹-' внутри блока do?

Я пытаюсь выполнить синтаксический анализ в Haskell, используя Parsec. У меня есть несколько парсеров в моем коде, но я получаю сообщение об ошибке на одном из них:

expression2 =
    do (operator lexer "|"
        a <- alternate
        as <- expression2
        return $ a:as
  ) <|> return []

Ошибка parse error on input '<- в строке a <- alternate.

Может ли кто-нибудь объяснить, почему я получаю эту ошибку и как ее исправить?

Заранее спасибо.


person dragonridingsorceress    schedule 05.05.2011    source источник


Ответы (1)


Вы поставили скобки в неправильном месте?

expression2 =
   (do  operator lexer "|"
        a <- alternate
        as <- expression2
        return $ a:as) <|> return []
person Don Stewart    schedule 05.05.2011
comment
Да; благодарю вас. Тот, что в конце, был в порядке, но мне нужно было поставить первый перед do. - person dragonridingsorceress; 05.05.2011