Описание тега 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