A “Parsing Expression Grammar” (“PEG”) is a formal language to describe formal languages.
1 ответ

Проблемы с неоднозначной грамматикой и PEG.js (примеры не найдены)

Я хочу проанализировать файл со строками следующего содержания: simple word abbr -8. (012) word, simple phrase, one another phrase - (simply dummy text of the printing; Lorem Ipsum : "Lorem" - has been the industry's standard dummy text, ever since …
09 июл '14 в 17:02
1 ответ

Как описать условное утверждение (if-then-else) с помощью PEG

Я работаю над анализатором файлов проекта Qmake (проект с открытым исходным кодом). И у меня возникли проблемы с описанием варианта условного оператора qmake, называемого "областью действия" в документации. EBNF (упрощенно): ScopeStatement -> Con…
25 июн '17 в 18:27
1 ответ

Генерация грамматики языка TextMate из грамматики PEG.js.

Есть ли инструмент, который переводит грамматику PEG.js в грамматику TextMate? Я создаю свой собственный язык и хотел бы, чтобы для него использовалась подсветка синтаксиса в моем предпочтительном редакторе TextMate. Грамматика моего языка построена…
02 фев '13 в 18:39
2 ответа

Ожидается любой символ, кроме найденного конца ввода

Мой ввод - рекурсивная структура выглядит следующим образом (обратите внимание на пустую 2-ую строку): xxx @ {} гггг @{ zzz @{} wwww } грамматика, которую я вижу, прочитав ее, должна выглядеть так: start = item+ item = thing / space thing = '@{' ite…
07 янв '17 в 04:07
1 ответ

Пользовательские методы для узлов синтаксиса Treetop

У меня есть грамматика Treetop PEG, которая соответствует некоторым ключам. Я хочу посмотреть значения, связанные с этими ключами, в хэше, который я даю парсеру. Как я могу сделать так, чтобы синтаксические узлы имели доступ к методам или переменным…
05 апр '18 в 05:11
1 ответ

Разбор одного или нескольких выражений с полезными ошибками

Я использую Grako (PEG-генератор парсера для Python) для анализа простого декларативного языка, где документ может содержать один или несколько протоколов. Первоначально у меня было корневое правило для документа, написанное как: document = {protoco…
05 окт '16 в 18:55
3 ответа

Реализация "cut" в парсере рекурсивного спуска

Я внедряю генератор синтаксического анализатора PEG в Python, и до сих пор добился успеха, за исключением функции "вырезать", о которой знает тот, кто знает Пролог. Идея в том, что после разреза (!) символ был проанализирован, поэтому никакие альтер…
03 янв '13 в 18:15
1 ответ

Что такое "запоминать" в PEG-парсерах (например, Pegasus) и когда его следует использовать?

Вот пример из Пегаса: additive <double> -memoize = left:additive "+" right:multiplicative { left + right } / left:additive "-" right:multiplicative { left - right } / multiplicative Что такое memoize в этом контексте и когда я должен использов…
21 сен '15 в 00:46
2 ответа

Разбор STEP-файла (с использованием JavaScript)

Я пытаюсь прочитать информацию из STEP-файла ( ISO 10303-21) с помощью JavaScript. Я не уверен, как справиться с этим вообще. Я нашел альтернативы с открытым исходным кодом, но на всех языках, кроме Javascript... Так что я не могу многому научиться …
19 сен '16 в 06:55
2 ответа

Существуют ли основанные на PEG генераторы парсеров, которые поддерживают левую рекурсию?

Левая рекурсия, кажется, является большой проблемой для многих генераторов синтаксического анализатора, которые построены на основе анализа рекурсивного спуска. Я ищу генератор синтаксических анализаторов на основе PEG- на любом языке.
1 ответ

Переполнение буфера при использовании peg/leg

Я использую программное обеспечение Ian Piumarta для разметки игрушечного языка, над которым я работаю. К сожалению, некоторые входные данные для синтаксического анализатора вызывают сбой, который, по словам дезинфицирующего устройства Clang, вызван…
22 май '13 в 09:51
10 ответов

Каков наилучший способ анализа текста по множеству (15+) регулярных выражений в каждой строке?

У меня есть текст, который я должен отсканировать, и каждая строка содержит как минимум 2, а иногда и четыре части информации. Проблема в том, что в каждой строке может быть 1 из 15-20 разных действий. в ruby ​​текущий код выглядит примерно так: tex…
19 ноя '08 в 23:44
1 ответ

PEG грамматика не работает, как ожидалось

Я работаю над грамматикой PEG, которая берет код на языке программирования музыки и создает дерево разбора музыкальных событий (ноты, аккорды, изменения громкости / темпа и т. Д.). Особенностью моего MPL является то, что он поддерживает голоса, то е…
30 мар '14 в 22:01
2 ответа

Peg.js различает отсутствующие значения и пробелы

У меня есть следующий скрипт peg.js: start = name* name = '** name ' var ws 'var:' vr:var ws 'len:' n:num? ws 'label:' lb:label? 'type:' ws t:type? '**\n' {return {NAME: vr, LENGTH: n, LABEL:lb, TYPE: t }} type = 'CHAR'/'NUM' var = $([a-zA-Z_][a-zA-…
28 сен '18 в 11:40
1 ответ

Методы создания подсветки синтаксиса в textX?

Поскольку я не могу найти какие-либо рекомендации по подсветке синтаксиса, я решил подготовить простой предварительный просмотр записи в виде обычного текста и затем подсветки всего в html, что достаточно для моей области на данный момент. Переопред…
16 янв '19 в 11:44
1 ответ

Возвратная вершина Treetop похожа на регулярные выражения?

Все, что я прочитал, предполагает возврат к вершинам Treetop, как регулярные выражения, но мне тяжело сделать эту работу. Предположим, у меня есть следующая грамматика: grammar TestGrammar rule open_close '{' .+ '}' end end Это не соответствует стро…
17 окт '12 в 04:38
2 ответа

Разбор особых случаев

Если я правильно понимаю, синтаксический анализ превращает последовательность символов в дерево. У меня вопрос: возможно ли использовать какую-то стандартную процедуру (LR, LL, PEG, ..?) Для разбора следующих двух примеров или необходимо написать сп…
1 ответ

Синтаксический анализ одного узла XML с помощью peg.js

Учитывая вход <outer> Content <inner> Inner <single/> </inner> </outer>, Как бы я написал грамматику, которая разбирает <single> узел вместе с узлами, которые имеют соответствующий закрывающий узел? Вот мой текущи…
28 сен '14 в 21:40
1 ответ

Как я должен изменить грамматику, чтобы разрешить необязательное выражение без возврата

Вот простая грамматика: filling = fill? align fill = . align = [<>=^] и оно должно соответствовать следующему: < 0< << Тем не менее, PEG.js не позволяет откат и fill просто потребляется < персонаж: < (does not work) 0< (wo…
28 ноя '17 в 01:51
1 ответ

Различия в реализации между комбинаторами парсера и алгоритмом упаковки

Чтобы лучше понять упаковку, я попытался взглянуть на предоставленную реализацию, поставляемую вместе со статьей (я сосредотачиваюсь на bind): instance Derivs d => Monad (Parser d) where -- Sequencing combinator (Parser p1) >>= f = Parser p…
21 ноя '18 в 20:02