Вопросы по теме 'parsec'
Пользовательский ADT и дерево для возвращаемого значения синтаксического анализатора
Я использую Parsec для создания простого синтаксического анализатора Lisp.
Каковы (не)преимущества использования пользовательского ADT для типов анализаторов по сравнению с использованием стандартного дерева (т. е. Data.Tree )?
Попробовав оба...
431 просмотров
schedule
23.09.2023
Использование Parsec для записи экземпляра Read
Используя Parsec, я могу относительно легко написать функцию типа String -> Maybe MyType . Теперь я хотел бы создать экземпляр Read для моего типа на основе этого; однако я не понимаю, как работает readsPrec и что он должен делать.
Мое...
617 просмотров
schedule
05.02.2024
Haskell: переход через строковый/текстовый файл
Я пытаюсь прочитать файл сценария, затем обработать и вывести его в файл html. В моем файле сценария всякий раз, когда есть @title(это заголовок) , я добавляю тег [header] это заголовок [/header] в свой html выход. Итак, мой подход заключается в...
571 просмотров
schedule
03.01.2023
Парсек зависает при вводе файла
Я пытаюсь написать синтаксический анализатор для файла конфигурации, и я получаю странную ошибку, когда синтаксический анализатор просто зависает. Код можно увидеть здесь . Я запустил его в отладчике, и, похоже, это происходит в строке...
193 просмотров
schedule
24.08.2023
Почему Parsec не использует операторы Control.Applicative
Использование Control.Applicative очень полезно с Parsec, но вам нужно всегда скрывать <|> и подобные объекты, поскольку они конфликтуют с собственными объектами Parsec:
import Control.Applicative hiding ((<|>), many, optional)...
734 просмотров
schedule
22.03.2024
Использование Parsec с ограничениями на анализируемый результат
Я пытаюсь придумать умный способ разбора ассемблерного кода. Например, если регистры пронумерованы от 0 до 31, я хочу принять $31 , но не $32 .
Я хотел бы сделать это, пока я разбираю исходный код, потому что 1) я хочу использовать информацию о...
161 просмотров
schedule
09.05.2022
Парсер перестановок Parsec с разделителями
Я хочу разобрать программы на ассемблере. У меня фиксированный формат разбора адреса сборки: [ register + offset + label ] Я реализовал парсеры для регистров, смещений и меток. Теперь я хочу создать парсер, который анализирует весь адрес....
362 просмотров
schedule
05.03.2024
Как выполнить неоднозначный анализ sepBy с помощью Parsec?
Я пытаюсь разделить строку с помощью разделителя, состоящего из нескольких символов, но проблема в том, что каждый из этих символов может встречаться сам по себе в строке без разделителей. Например, у меня есть foo*X*bar*X*baz , где разделителем...
932 просмотров
schedule
22.04.2022
Разбор функционального приложения с помощью Parsec
Я пытаюсь разобрать следующие выражения, используя parsec:
f a b c
=> (Appl (Appl (Appl f a) b) c)
Я попытался использовать что-то вроде:
appl :: Parser Expr
appl = do
f <- expr
gs <- many expr
return $ foldr (\x y...
346 просмотров
schedule
03.10.2022
Тонкости вывода типов
У меня возникли некоторые трудности с пониманием того, почему сигнатура предполагаемого типа отличается от того, что я ожидал. Приведем пример (я старался сделать его как можно короче):
import Control.Applicative
import Data.Word
import...
106 просмотров
schedule
28.05.2024
Парсек игнорирует все, кроме одного фрагмента
Мне нужно проанализировать один тег select в плохо сформированном HTML-документе (поэтому синтаксические анализаторы на основе XML не работают).
Я думаю, что знаю, как использовать parsec для разбора тега select, как только я доберусь туда, но как...
313 просмотров
schedule
25.09.2023
Parsec.Expr повторяет префикс с другим приоритетом
В документации для Parsec.Expr.buildExpressionParser говорится:
Префиксные и постфиксные операторы с одинаковым приоритетом могут встречаться только один раз (т. е. --2 не допускается, если - является отрицанием префикса).
Однако я хотел...
536 просмотров
schedule
02.04.2022
Haskell Parsec анализирует фрагменты строки для сопоставления значений
Я пытаюсь разобрать строку, например
AA{A}{END}}
с данной картой: fromList [("{",43),("}",44),("{END}",255),("A",65)] ,
так что желаемый результат: [65,65,43,65,44,255,44]
Это похоже на поиск самого длинного префикса в карте на...
282 просмотров
schedule
20.02.2024
Парсер, который сохраняет комментарии и восстанавливается после ошибки
Я работаю над графическим редактором для правильного формата конфигурации. По сути, редактор будет анализировать файл конфигурации, отображать свойства объекта, чтобы пользователи могли редактировать его из графического интерфейса, а затем записывать...
115 просмотров
schedule
18.11.2023
Преобразование \ в использование Haskell/Parsec
Я просматриваю учебник по Напишите себе схему и есть упражнение, которое я не могу решить .
Наши строки не совсем совместимы с R5RS, потому что они не поддерживают экранирование внутренних кавычек внутри строки. Измените parseString так,...
226 просмотров
schedule
22.04.2024
Парсек отрицательное совпадение
parseIdent :: Parser (String)
parseIdent = do
x <- lookAhead $ try $ many1 (choice [alphaNum])
void $ optional endOfLine <|> eof
case x of
"macro" -> fail "illegal"
_ -> pure x
Я пытаюсь проанализировать...
185 просмотров
schedule
24.07.2022
Haskell Parsec — оптимизация парсинга int
Я использую import Text.Parsec.Text и import Text.Parsec.Char для анализа некоторых данных, содержащих целые числа. Я использую следующий код для анализа целых чисел.
p_int :: Parser Int
p_int = read <$> ((++) <$> option ""...
121 просмотров
schedule
12.05.2024