Как отобразить информацию о местоположении из парсера? - PullRequest
0 голосов
/ 01 февраля 2019

Как я могу отобразить информацию о местоположении, когда Stream.Error происходит внутри парсера?Например:

let p = parser
  | [< '1; '2 ?? "1 expected at line L, column C" >] -> ()

как получить местоположение в потоке?Есть ли способ использовать Stream.count без необходимости считать символы новой строки вручную?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы должны построить позицию вручную (например, с помощью Lexing.position).Я бы не стал прикасаться к самому лексеру / парсеру, а скорее написал бы простую функцию, которая преобразует смещение файла (обозначается Stream.count) в систему координат (строка, столбец).

...