Вопросы по теме 'parsec'

Parsec разбирает много вопросов
Мне нужно создать парсер для языка программирования. Я бы сказал, что на данный момент сделано на 95%, за исключением крошечной детали. Программа, написанная на этом языке, имеет следующую структуру: outputs inputs expressions Требование...
392 просмотров
schedule 29.10.2022

Состояние пользователя в Parsec
Я анализирую выражение с помощью Parsec и хочу отслеживать переменные в этих выражениях, используя состояние пользователя в Parsec. К сожалению, я действительно не понимаю, как это сделать. Учитывая следующий код: import Data.Set as Set inp =...
3323 просмотров
schedule 29.05.2023

Получить длину совпадения в парсеках
parse pattern "(some_input)" input Parsec возвращает проанализированные данные (как я указал в pattern . Как узнать, сколько input он израсходовал (шаблон не привязан к eof)? Я не хочу добавлять отслеживание длины через все внутренние...
251 просмотров
schedule 06.10.2022

Как использовать Control.Monad.State с Parsec?
Я удивлен, что я не мог найти никакой информации об этом. Должно быть, я единственный, у кого с этим проблемы. Итак, допустим, у меня есть счетчик тире. Я хочу, чтобы он подсчитывал количество тире в строке и возвращал строку. Представьте, что я...
2334 просмотров
schedule 27.09.2022

Разделение различных типов терминов при разборе
У меня есть два парсера для разных типов терминов. a :: Parser A b :: Parser B У меня есть тип данных, представляющий последовательности этих терминов. data C = C [A] [B] Если мои входные данные представляют собой последовательность...
118 просмотров
schedule 17.07.2023

Парсер Parsec csv анализирует дополнительную строку
Я определил следующий синтаксический анализатор Parsec для анализа файлов csv в таблицу строк, т.е. [[String]] --A csv parser is some rows seperated, and possibly ended, by a newline charater csvParser = sepEndBy row (char '\n') --A row is some...
674 просмотров
schedule 01.03.2022

Haskell: парные пары ключ-значение (ключ: значение)
как мне разобрать файл, содержащий ключи и значения, используя parsec в [[(String, String)]] ? key1: value 1 key2: value 2 key1: value 1 key2: value 2 key1: value 1 key2: value 2 ключ - одно слово, значение может быть больше слов. я...
502 просмотров
schedule 09.11.2023

Как сформировать в Parsec выбор ИЛИ, который может соответствовать многим параметрам, но должен соответствовать хотя бы одному варианту?
Пытаюсь написать парсер на Haskell с помощью пакета Parsec. Одна часть правил для ввода требует, чтобы синтаксический анализатор соответствовал варианту правил. Из правил может совпадать более одного правила, но по крайней мере должно...
351 просмотров
schedule 15.09.2022

Должен ли я использовать лексер при использовании библиотеки комбинатора синтаксического анализатора, такой как Parsec?
При написании синтаксического анализатора в библиотеке комбинаторов синтаксического анализатора, такой как Parsec в Haskell, у вас обычно есть 2 варианта: Напишите лексер для разделения входных данных String на токены, а затем выполните...
4755 просмотров
schedule 18.06.2023

Как читать точные N символов с помощью Parsec?
Я новичок в Haskell и Parsec. Я хочу разобрать формат php-serialize строки 's:numb:"string";' нравится s:12:"123";6789012"; где число - количество символов. Итак, функция выглядит так: newtype PhpString = PhpString String pString ::...
968 просмотров
schedule 21.09.2022

Haskell: проблема с Parsec выходит за рамки шаблона
Для справки, вот мой код: http://hpaste.org/86949 Я пытаюсь разобрать следующее выражение: if (a[1].b[2].c.d[999].e[1+1].f > 3) { } . Обыгрывается метод varExpr , который анализирует цепочки членов переменных. Контекст В языке,...
193 просмотров
schedule 12.07.2022

Разобрать список, разделитель которого также может стоять в конце
Я пытаюсь разобрать какой-то текст, но не могу понять, как разобрать список символов, разделенных каким-то разделителем, который может встречаться, а может и не встречаться в конце списка. Пример (числа, разделенные пробелами): set A = 1 2 3 4...
308 просмотров
schedule 11.01.2023

Автоматическое преобразование грамматики для левого факторинга; и удаление левой рекурсии
Стандартные методы легко доступны для преобразования контекстно-свободной грамматики, которая не является LL (1), в эквивалентную грамматику, которая есть. Существуют ли какие-либо инструменты, позволяющие автоматизировать этот процесс? В...
1594 просмотров
schedule 20.05.2023

Как разобрать строку с помощью Parsec?
Я использую библиотеку синтаксического анализа Parsec для анализа некоторого текста. Мне просто нужно проанализировать строки, которые представляют собой строки произвольных символов, заканчивающиеся на «\ n» или eof, когда он находится в конце...
4058 просмотров
schedule 02.10.2022

Игнорирование букв и разбор только цифр с помощью Parsec
Этот код работает только при наличии цифр (например: "1243\t343\n" ): tabFile = endBy line eol line = sepBy cell (many1 tab) cell = integer eol = char '\n' integer = rd <$> many digit where rd = read :: String -> Int Есть ли...
334 просмотров
schedule 12.07.2023

Parsec не разбирает это выражение, и я не могу понять, почему
Я пытаюсь написать парсер для простого языка; в основном прямо сейчас у него есть литералы, ifs, применение функций и многое другое. Вот код, который у меня есть: import Text.ParserCombinators.Parsec import Control.Monad (liftM) data Expr =...
739 просмотров
schedule 25.02.2022

Парсек: Пропустить первую строку
Я написал код парсека, который отлично работает для того, что я хочу. Он анализирует, как и ожидалось, следующий файл: 4,5 6,7 Соответствующий код выглядит так: import Text.ParserCombinators.Parsec import Control.Applicative hiding...
481 просмотров
schedule 30.05.2023

Проблема с разбором скобок. Парсек - Хаскелл
Это мой код: expr :: Parser Integer expr = buildExpressionParser table factor <?> "expression" table :: [[ Operator Char st Integer ]] table = [ [ op "*" (*) AssocLeft], [ op "+" (+) AssocLeft] ] where op s f assoc = Infix...
197 просмотров
schedule 24.07.2022

Как написать парсер парсека для списка вкрапленных элементов?
Допустим, ввод выглядит примерно так foo#1 bar baz-3.qux [...] . Я хочу написать синтаксический анализатор, который потребляет ввод только до первого пробела перед [ , что означает foo#1 bar baz-3.qux (без завершающего пробела). Как мне...
269 просмотров
schedule 23.02.2024

Сделать синтаксический анализ Text.Parsec.Indent неудачным, если unindent не соответствует ни одному внешнему уровню отступа
Я пытаюсь разобрать строку в Haskell, представляющую дерево. Каждый узел находится на линии, где отступ определяет вложенность (например, как в синтаксисе Python или Haskell). Успешный результат синтаксического анализа должен быть типа [Tree]...
199 просмотров
schedule 07.08.2023