PEG.js - это простой генератор парсеров для JavaScript, который производит быстрые парсеры с отличным отчетом об ошибках.
1 ответ

PEGJS предикатная грамматика

Мне нужно создать грамматику с помощью предиката. Приведенная ниже грамматика не подходит для данного случая. startRule = a:namespace DOT b:id OPEN_BRACE CLOSE_BRACE {return {"namespace": a, "name": b}} namespace = id (DOT id)* DOT = '.'; OPEN_BRACE…
30 окт '14 в 12:22
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 ответ

Как разобрать имена типов, определенные во время разбора

Я использую pegjs для определения грамматики, которая позволяет определять новые типы. Как мне тогда распознать эти типы после их определения? У меня есть производство, которое определяет встроенные типы, например, BuiltInType = "int" / "float" / "s…
07 дек '16 в 21:06
2 ответа

Как сгруппировать непустые строки с PEG.js

Я пытаюсь проанализировать файл категорий с PEG.js Как я могу сгруппировать категории (набор непустых строк, за которыми следует пустая строка) stopwords:fr:aux,au,de,le,du,la,a,et,avec synonyms:en:flavoured, flavored synonyms:en:sorbets, sherbets e…
12 окт '14 в 00:41
1 ответ

Глубокая маркировка параметров внутри группы pegjs regex

Рассмотрим следующую грамматику: list = head:item (',' tail:item)* { return [head].concat(tail); } item = $ ([0-9]*) Следует описать списки натуральных чисел. Проблема в том, что tail не определено, как внутри паренсов. Поэтому я вынужден сделать сл…
13 янв '19 в 15:27
1 ответ

Как разобрать файл.RC с помощью Javascript

Я пытаюсь проанализировать данные из.RC (файл определения ресурса) в JSON, используя js с простой функцией fs.readFile, однако я получаю SyntaxError: неверный или неожиданный токен. На данный момент я не нашел другого решения для анализа файлов этог…
27 авг '17 в 18:28
1 ответ

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

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

Разбор полных математических выражений с помощью PEG.js

Я пытаюсь расширить пример грамматики PEG.js для разбора математических выражений всеми 4 операторами для моего эксперимента с интерпретатором BASIC: http://www.dantonag.it/basicjs/basicjs.html но не все выражения анализируются правильно. Это моя гр…
15 окт '13 в 20:07
3 ответа

Как сделать необязательное слово в PEG.js

Я пытаюсь создать простой парсер с PEG.js. Я хочу, чтобы пользователь мог вводить ряд ключевых слов с необязательным "И" между ними, но я не могу получить необязательные и работающие. Он всегда этого ожидает, хотя я пометил это? (ноль или один). Вст…
05 окт '13 в 16:22
3 ответа

Сконфигурируйте Karma для загрузки pegjs с requirejs

Попытка протестировать проект, используя PegJS и requirejs. У меня есть несколько исходных файлов, реализованных в виде модуля AMD (определение), который загружается через требуемый API. Ниже структура каталогов: js/ somefile.js main.js parser.js te…
24 ноя '15 в 13:46
1 ответ

Возвращаемый ключ, значение объекта с именем динамического ключа

В PEG.js у меня есть следующее правило label = l:[a-zA-Z\$\#\% ]* { return word(l); } block = "[" l:label "]" { return l; } option = "\n"* key:block value:label "\n"? {return {key : value}; } Если это анализирует [hello] world это приводит к: {"key"…
05 фев '14 в 16:46
0 ответов

Условное грамматическое правило в PEGjs

Я пытаюсь реализовать простой DSL, который анализирует основные арифметические выражения. Это нужно сделать в браузере, поэтому я использую PEGjs для генерации парсера. Термины в выражении могут быть числами (целыми или действительными), переменными…
20 дек '16 в 02:55
1 ответ

Как создать анализатор PEG.js 0.7.0 с помощью Rhino (Java SE 6 ScriptEngine API)

Я создавал парсеры, используя плагин Maven (т.е. вызывая PEG.js из Java-кода), успешно используя PEG.js версии 0.6.1, но теперь при попытке обновления до новой версии происходит сбой с сообщением об ошибке: sun.org.mozilla.javascript.internal.EcmaEr…
1 ответ

PegJS: Как сопоставить фразу в окружающем тексте

Я пытаюсь сделать парсер с PegJS Я пытаюсь разобрать что-то вроде этого.. I would like to email john@gmail.com today or tomorrow. Как бы вы сделали парсер, который соответствует определенным фразам, например email john@gmail.com и выбросить окружающ…
19 июн '13 в 21:32
1 ответ

Двигатель Peg.js отступает после того, как это делают регулярные выражения?

Согласно регулярным сообщениям о поиске обходных путей, движок откатывается назад: Давайте еще раз заглянем внутрь, чтобы убедиться в том, что вы понимаете последствия этого. Давайте применим q(?= U)i для выхода. Взгляд в будущее теперь положительны…
19 окт '18 в 14:10
1 ответ

PEG.js: как использовать подсказку?

Я создаю синтаксический анализатор C++ с PEG.js, и мне нужно иметь возможность использовать cin, С JS после матча, когда я использую prompt()(альтернативная) онлайн-версия выдает ошибку "Ошибка разбора: приглашение не определено". Я пытаюсь использо…
12 май '14 в 19:12
1 ответ

Анализ цепочки логических выражений с помощью pegjs

Я пытаюсь разобрать эту строку с помощью peg.js: filter a > 2 or b < 3 or b > 10 or c = 12 Соответствующий фрагмент грамматики выглядит так: bool "bool" = left:expr space+ logicOp:logicOp space+ right:bool { return new options.BooleanExpr(l…
25 окт '14 в 03:33
1 ответ

Что не так с этой грамматикой колышка?

Следующая грамматика (из RFC 2396): domainlabel = 'a' / ('a' ('a' / '-')* 'a') не могу разобрать это: aa Зачем?
05 фев '17 в 00:28