Несколько ошибок с разными позициями с использованием мегапарсек

Я собираюсь использовать мегапарсек для разбора языка программирования для университетского проекта. Тем не менее, я искал способ сообщить о нескольких ошибках.

Я знаю о withRecovery, и я видел эту проблему, но я не нашел о случае, когда ошибки происходят на разных позициях.

например в этом коде Java:

class A
{ 
    public get() // line 3 column 10
    {
        return x // line 5 column 22
    }
}

Есть ошибка1 "ожидаемый тип в строке 3, столбец 10" и ошибка2 "отсутствует точка с запятой в строке 5, столбец 22"

Я знаю, что могу комбинировать сообщения об ошибках с failure а как насчет нескольких позиций? Как я могу это сделать?

1 ответ

Решение

Если вы уверены в предложении Алека, но не хотите Either (ParseError ...) (Either (ParseError ...) a), вы можете просто использовать Control.Monad.join для этого значения, чтобы превратить его в Either (ParseError ...) a, Извините, если это не было слишком полезно

Другие вопросы по тегам