Описание тега fparsec

Библиотека комбинаторов парсеров для F#.
1 ответ

Почему FParsec использует списки?

Я подумал, что попробую написать быстрый парсер с использованием FParsec, и быстро понял, что many возвращение списка является серьезной проблемой производительности. Затем я обнаружил альтернативу, которая использует ResizeArray в документах: let m…
01 апр '15 в 21:02
3 ответа

Что выбрать fsyacc/fslex или FParsec?

Мне нужно разобрать простой язык DSL, как показано ниже: import "library.txt" def <int, bool, byte> main(int param1, bool param2) { var a = f4(param1); // or var d = f1(f2(f3(f4(param1)))); var b = f3(a); var c = f2(b); var d = f1(c); return &…
21 июл '11 в 12:07
1 ответ

Как использовать FParsec для анализа в записи или объекте?

После завершения учебника по FParsec я решил попробовать написать синтаксический анализатор для SDP (протокол описания сеанса RFC 4366) - хотя бы первые 3 строки. SDP указан в ABNF (RFC 4234)); поэтому я пытаюсь работать с этим. В примечании в конце…
07 окт '14 в 14:38
1 ответ

Переполнение стека FParsec в.Net Core

Я использую FParsec в проекте netstandard2.1 (StandartProj) и использую его из netcoreapp2.0 (CoreProj). // Standard Project let parser = pfloat |>> (fun x -> x + 1) let runParser str = run parser str // Core Project let parseResult = runPa…
13 мар '18 в 22:41
1 ответ

Реактивный пример FParsec

Я надеюсь, что кто-то потенциально может опубликовать пример использования FParsec, где данные основаны на каком-то входящем живом потоке. В некоторых примерах может быть получен результат, основанный на жестах мыши, генерирование предупреждения или…
28 мар '12 в 17:53
1 ответ

Хвост-рекурсия в FParsec

Я столкнулся с проблемой парсеров, имеющих две ветви рекурсии. Чтобы легче продемонстрировать проблему, я использую простую грамматику лямбда-исчисления из статьи, написанной Лукой Болоньезе, в качестве примера: <expression> ::= <name> |…
12 фев '12 в 19:32
1 ответ

FParsec - как разобрать строки, разделенные трубами?

Я использую FParsec для написания небольшого парсера в режиме org, для развлечения, и у меня возникли небольшие проблемы с анализом строки таблицы в списке строк. Мой текущий код выглядит так: let parseRowEntries :Parser<RowEntries, unit> = le…
24 июл '18 в 13:51
0 ответов

Парсеры связывания; повторный анализ потребляемых данных

У меня есть парсер для запроса URI. Запрос в шестнадцатеричном /URI-кодированном виде. У меня также есть парсер для декодированной строки; тот, который дает пары ключ-значение-опция из параметров запроса. Я хотел бы сделать двухфазный проход; один д…
16 ноя '18 в 15:52
1 ответ

Почему мой рекурсивный синтаксический анализатор FParsec выдает исключение, когда он анализирует вложенный массив?

Я пытаюсь использовать FParsec для анализа массива TOML. Я работал с несколькими парсерами для различных частей спецификации 0.5, включая массивы. Однако, когда я пытаюсь поддерживать вложенные массивы, у меня возникали небольшие проблемы. Вот что у…
20 авг '18 в 04:28
3 ответа

Советы по FParsec для обработки пробелов

У меня есть следующее подвыражение для разбора "цитаты", которые имеют следующий формат "5.75 @ 5.95" Поэтому у меня есть это выражение парсек для его анализа let pquote x = (sepBy (pfloat) ((spaces .>> (pchar '/' <|> pchar '@' )>>…
04 май '12 в 15:56
0 ответов

Получить последнее сообщение об ошибке, выданное для инструкции

Я заметил, что сообщения об ошибках, отправленные FParsec, были довольно "неоднозначными", за исключением последнего сообщения, отправленного для инструкции. Вот пример: Код для разбора: if (2 + 2 == 4) Здесь, как правило, должен быть блок инструкци…
27 окт '18 в 23:48
1 ответ

Разбор по частям с FParsec

Можно ли передавать входные данные парсеру FParsec порциями, как из сокета? Если нет, возможно ли получить текущий результат и непарсированную часть входного потока, чтобы я мог выполнить это? Я пытаюсь запустить куски ввода, поступающие из SocketAs…
17 янв '12 в 07:27
0 ответов

Путаница в том, как интегрировать OperatorPrecedenceParser с моим

Единственное, что я оставил своему парсеру - это успешно установил приоритет оператора, и мой парсер будет готов. Но я не знаю, как мне интегрировать это с моим текущим парсером. Во-первых, вот представление языка: module MiniML (* Structures de don…
15 май '17 в 01:44
2 ответа

Может кто-нибудь привести пример использования chainl1 в FParsec?

Это самый загадочный комбинатор во всех FParsec... http://www.quanttec.com/fparsec/reference/primitives.html ... но нет примера того, как использовать его в документации или, AFAIK, на любых веб-страницах в Интернете. У меня есть леворекурсивный раз…
19 янв '12 в 18:19
1 ответ

Разбор ML-подобного синтаксиса на основе отступа и всего, что считается инструкцией / выражением

ПРИМЕЧАНИЕ: не так давно я уже задавал подобный вопрос. Это не дублирование, но запрашиваемые разъяснения не попадают в сферу действия самого предмета. Поэтому я позволю себе открыть другую позицию, касающуюся анализа ML-подобного синтаксиса, основа…
16 дек '18 в 21:21
1 ответ

Парсер вызова функции - FParsec

Я пытаюсь разобрать вызов функции, вот варианты: add 8 2 add x y add (inc x) (dec y) funcWithoutArgs В зависимости от того, как я распределяю свои анализаторы в коде и, возможно, также как они кодируются, я получаю ошибки, а также успешные, но нежел…
02 фев '19 в 22:50
1 ответ

Разбор пользовательских инфиксных операторов + реализация с FParsec

Я немного застрял в том, как "настоящие парсеры", такие как F# или Haskell, делают для разбора пользовательских операторов. Для "нормального" языка мы бы просто определили узел AST, в котором были бы предопределенные возможности оператора, например:…
16 фев '19 в 18:19
1 ответ

Разбор типа стрелки с помощью FParsec

Я пытаюсь разобрать тип стрелки с FParsec. То есть это: Int -> Int -> Int -> Float -> Char Например. Я пытался с этим кодом, но он работает только для одного типа стрелки (Int -> Int) и не более. Я также хочу избежать скобок, потому ч…
06 дек '18 в 16:23
1 ответ

Выбор FParsec ведет себя неожиданным образом

Я планирую использовать FParsec для прототипа моего более крупного проекта. Поэтому я решил получить свой первый опыт работы с этой библиотекой с помощью тестовой программы, перечисленной ниже. Но кажется, что комбинация моих основных синтаксических…
25 май '14 в 23:52
1 ответ

Совместимость.Net 4.0 и.Net 4.5. Не удалось загрузить файл или сборку 'FSharp.Core, версия =4.3.1.0.'

Я хочу использовать библиотеку Math.NET Symbolics в проекте F#. Но когда я запускаю простой код: open MathNet.Symbolics open MathNet.Symbolics.Operators ... let expr = Infix.parseOrThrow("sin(x) * y") let symbols = Map.ofList [ "x", Real 2.0; "y", R…
06 янв '16 в 16:23