Вопросы по теме '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