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

Parser generator for context-free grammars in [tag:Clojure]. Supports EBNF and ABNF notation.
1 ответ

Как проверить тексты, не соответствующие грамматике Instaparse (Clojure)?

Я написал проект для разбора строк с использованием контекстно-свободной грамматики в Instaparse (Clojure). Теперь я хотел бы проверить несколько строк ввода для их результатов анализа. Некоторые входные строки могут не вписываться в грамматику. До …
3 ответа

postwalk для оценки арифметического выражения

Я пытаюсь использовать Instaparse, чтобы сделать простой анализатор арифметических выражений. Парсер работает нормально, но я не могу понять, как вычислить возвращенный вложенный вектор. В настоящее время я использую postwalk, как это (ns test5.core…
14 фев '19 в 08:36
1 ответ

Как убрать неоднозначность в грамматике EBPF Instaparse

Как я могу предотвратить, чтобы литерал "," в правиле структуры анализировался как оператор в следующей грамматике EBNF для Instaparse? Грамматика: structure = atom <"("> term ("," term)* <")"> term = atom | number | structure | variable…
02 июн '18 в 19:12
0 ответов

Как разобрать строки в двойных кавычках с instaparse?

Я создаю парсер для языка, и мне не удалось разобрать строки.Примеры: (println "hello world") (println "this one contains an escaped dble quote: \" (bonus points!)") Должны быть извлечены в какой-то момент: "hello world" "this one contains an escape…
25 мар '18 в 14:10
2 ответа

Самый простой способ получить сообщение об ошибке в виде строки в Instaparse?

Instaparse может печатать хорошие сообщения об ошибках в REPL => (negative-lookahead-example "abaaaab") Parse error at line 1, column 1: abaaaab ^ Expected: NOT "ab" но я не могу найти встроенную функцию для получения сообщения в виде строки. Ка…
12 окт '18 в 18:34
1 ответ

Невероятные серии цифр или букв как один лист?

Так что я возился с instaparse, и это было здорово, однако я старался избегать использования регулярных выражений в качестве опоры, и это привело к более многословному. Ради сохранения читабельности давайте просто скажем #'[A-z]' на самом деле в 'A'…
19 апр '16 в 01:17
2 ответа

Неопределенная двусмысленность в Clojure

У меня проблема с неоднозначным разбором в инсте. Вот грамматика: (def yip-shape (insta/parser (str/join "\n" ["S = ( list-item | heading | text-block )*" ;; lists and that "list-item = list-level <ws> anything" "list-level = #' {0,3}\\*'" ;; …
22 фев '16 в 08:46
1 ответ

Instaparse: поддерживается ли отрицание?

- оператор должен поддерживать отрицание, но я не могу заставить его работать: raw-type = "DINT" | "REAL" | "SINT" | "BIT" custom-type = - raw-type Каждый раз, когда я пытаюсь получить сообщение об ошибке: RuntimeException - occurs on the right-hand…
25 авг '16 в 04:18
2 ответа

Instaparse: Как распознать новую строку

Я хочу разобрать текст файла, который содержит переводы строки. Файл может быть в Windows или Unix, но сейчас это файл Windows с таким содержимым: (************** ***************) Выше содержимое файла было прочитано с slurp и будет содержать новую …
23 авг '16 в 07:36
1 ответ

Как разобрать> персонажа в Clojure Instaparse?

Я пытаюсь разобрать > персонаж в Clojure Instaparse. я пытался |> а также |\> но парсер, похоже, не распознает ничего из этого. Кто-нибудь знает правильный синтаксис?
02 авг '15 в 05:38
1 ответ

Как пройти парсинг дерева от инстапарсе

Я экспериментирую с Clojure и Instaparse. Я создал маленький игрушечный язык и застрял в том, как правильно обрабатывать получающееся дерево. Вот что я получаю: [:ClassDescription [:ClassName "Test"] [:Properties [:Property [:PropertyName "ID"] [:Pr…
10 апр '15 в 08:02
1 ответ

Устранение неоднозначности в простой грамматике Instaparse

[Также опубликовано в списке рассылки Instaparse, но также и здесь, так как я предполагаю, что это довольно общая проблема] Рассмотрим грамматику D = (B|S)* S = 'S' B* B = 'B' (Это версия Instaparse BNF...) B может произойти сам по себе или после S;…
21 мар '15 в 16:41
1 ответ

Соответствие чему-либо с Clojure Instaparse

Я хочу разобрать простой язык, который в основном имеет пару специальных символов или символов перед строкой текста. Если он не имеет их, то строка текста просто берется в качестве данных. Например: + hfflsdjf dslfhsldfh sdlfkh sdlfkhs ! sdlfkhsdl s…
16 ноя '18 в 20:05
1 ответ

Как вы становитесь неподходящим, чтобы пропустить пробелы?

Как вы становитесь неподходящим для пропуска пробелов между токенами? (Конечно, я мог бы определить пробел как токен сам по себе и вставить его между всеми элементами в правой части каждого правила, но я имею дело с грамматикой, имеющей более трехсо…
11 апр '16 в 18:38
1 ответ

Instaparse: есть ошибка, но она не сообщается

Я пытаюсь создать грамматику с Instaparse. Довольно часто я обнаруживаю, что этот код не соответствует первому утверждению, выдавая "Пустой список": (defn parse-it [] (let [parser (insta/parser ebnf) res (insta/parses parser input) _ (assert (seq re…
24 авг '16 в 06:51
2 ответа

Есть ли способ ускорить инстапарс?

Я пытаюсь использовать instaparse для файла dimacs размером менее 700 КБ со следующей грамматикой <file>=<comment*> <problem?> clause+ comment=#'c.*' problem=#'p\s+cnf\s+\d+\s+\d+\s*' clause=literal* <'0'> <literal>=#'[…
12 апр '16 в 12:16
1 ответ

Как определить грамматику для кода clojure, используя instaparse?

Я новичок в разборе и хочу проанализировать некоторый код clojure. Я надеюсь, что кто-то может привести пример того, как код clojure может быть проанализирован с использованием instaparse. Мне просто нужно сделать цифры, символы, ключевые слова, пол…
12 авг '13 в 12:39
1 ответ

Грамматика, допускающая произвольный порядок правил

Я (пытаюсь) разработать предметно-ориентированный язык (я назвал его "Фаренгейт") для разработки стилей цитирования. Программа, написанная по Фаренгейту: ДОЛЖЕН иметь ровно один citation блокировать МОЖЕТ иметь ноль или больше macro блоки. Вот упрощ…
14 янв '20 в 16:23
0 ответов

Проблемы с построением правил Clara динамически с помощью instaparse

Я последовал этому примеру Insta Declarative DSL, где мы используем Clara с instaparse для использования DSL и генерации правил. у меня все работает как положено, но одна проблема. Я не могу получить доступ к привязке переменной из условия, выраженн…
2 ответа

Невероятно плохое время синтаксического анализа

Мне нужно проанализировать код Elisp (Emacs Lisp), поэтому я написал для него парсер с помощью Instaparse. Я ожидал, что это будет медленно, но делать 1 Кб строк в секунду слишком медленно, чтобы быть правильным даже на калькуляторе (или моем доволь…