Можно ли легко получить позиции в качестве смещений (в качестве атрибутов от начала ввода) с помощью Parsec? Если да, то как? Внутренне Parsec сохраняет позицию как тип данных с именем источника, строкой и столбцом.Позиции Parsec как смещения
Я хотел бы, чтобы иметь возможность написать парсер как
pWithPos p = do left <- getPosition -- gets the current position as an offset
x <- p
right <- getPosition -- gets the current position as an offset
return (x,(left,right))
который разбирает что-то с помощью парсера р и возвращает его результат, а его левую и правую позицию смещения.
alex
(генератор лексического анализатора), например, обрабатывает positions, сохраняя абсолютное смещение символа, номер строки и номер столбца. Мне не хватает абсолютного смещения символов в parsec.
смещений от чего? parsec уже сообщает вам смещение линии от 0 и смещение столбца от 0. вы хотите, например. смещение в символах с начала файла? –
@DonStewart Я хочу смещения в символах с начала ввода. – Romildo