Вопросы по теме 'peg'

Ограничения генераторов грамматики и синтаксического анализатора PEG?
Мне очень понравилось пользоваться YARD: http://www.ootl.org/yard/ http://code.google.com/p/yardparser/ http://www.codeproject.com/KB/recipes/yard-tokenizer.aspx Я смог сконструировать полностью функциональный калькулятор. Я...
7168 просмотров
schedule 13.09.2021

Различать приоритеты операторов при обходе AST
У меня есть AST, сгенерированный грамматикой синтаксического анализа из целевого языка, который будет компилироваться в исходный язык путем обхода его узлов. Простой источник, такой как (10 + 20) * 2 , должен генерировать следующее представление...
678 просмотров

Использование PEG.js для простого поиска / замены
Я пытаюсь понять, как использовать PEG.js для простого поиска / замены в тексте. Конечно, это не предназначенное использование для парсера, но в любом случае мне любопытно, какая логика стоит за этими языками, чтобы произвести некоторый поиск /...
265 просмотров
schedule 23.11.2021

Грамматика PEG, которая принимает три необязательных элемента в любом порядке
Предположим, у нас есть три элемента a b и c . В допустимом выражении используются эти три элемента (и необязательные пробелы). Должен присутствовать хотя бы один из этих трех элементов. Все три элемента являются необязательными (если...
326 просмотров
schedule 05.10.2021

python parsimonious: анализ файла конфигурации с несколькими отметками комментариев
Я пытаюсь разобрать файл конфигурации, в котором значение записи может иметь пометку комментария. Таким образом, по правилу только последний знак комментария является разделителем между значением и комментарием. Например: key1 = value key2 =...
345 просмотров
schedule 15.11.2021

Ожидается любой символ, но не найден конец ввода
мой ввод - это рекурсивная структура, которая выглядит так (обратите внимание на пустую вторую строку): xxx @ {} yyy @ {zzz @ {} wwww} грамматика, как я вижу, должна выглядеть так: start = item+ item = thing / space thing = '@{'...
1574 просмотров
schedule 25.10.2021

что не так с этой грамматикой привязки?
следующая грамматика (из RFC 2396): domainlabel = 'a' / ('a' ('a' / '-')* 'a') не может разобрать это: aa Почему?
103 просмотров
schedule 10.11.2021

Обработка списка токенов, разделенных пробелами или запятыми, с арпеджио
Я пытаюсь написать грамматику арпеджио, которая будет извлекать токены, которые могут быть разделены запятыми или пробелами. То есть токены можно разделять запятыми, например: a,b,c пробел, например: a b c или комбинация, например:...
272 просмотров
schedule 05.11.2021

Генерация правильных фраз из грамматик PEG
Я написал генератор парсера PEG просто для удовольствия (я опубликую его через некоторое время на NPM) и подумал, что будет легко добавить генератор случайных фраз поверх него. Идея состоит в том, чтобы автоматически получать правильные фразы с...
53 просмотров
schedule 05.09.2021

простейшие правила в верхушке дерева не работают
У меня есть древовидная грамматика только с двумя правилами: grammar RCFAE rule num [0-9]+ <Num> end rule identifier [a-zA-Z] [a-zA-Z]* <ID> end end Я пытаюсь разобрать простые строки ("A" и "5")....
193 просмотров
schedule 07.04.2022

Как работает возврат в peg.js (с примером)?
Я определил следующую минимальную грамматику Peg.js: start = "A1" / "A123" которые вы можете попробовать в песочнице . Я ожидал, что будет соответствовать «A1», а также «A123» (согласно моему представлению о том, как работает поиск с...
1680 просмотров
schedule 02.04.2022

Создание парсера BBcode с проблемой PEG
Я делаю парсер bbcode с PEG (реализация Citrus для Ruby), и я застрял на разборе этого [b]sometext[anothertext[/b] Есть код grammar BBCodeParser rule document (open_tag | close_tag | new_line | text)* end rule open_tag ("["...
226 просмотров
schedule 15.04.2022

Можно ли создать очень разрешительную грамматику, используя Menhir?
Я пытаюсь разобрать некоторые фрагменты Verilog - меня в первую очередь интересует извлечение определений и экземпляров модулей. В Verilog модуль определяется так: module foo ( ... ) endmodule; И модуль создается одним из двух возможных...
433 просмотров
schedule 12.05.2022

Что такое «memoize» в парсерах PEG (например, Pegasus) и когда его следует использовать?
Вот пример из Pegasus : additive <double> -memoize = left:additive "+" right:multiplicative { left + right } / left:additive "-" right:multiplicative { left - right } / multiplicative Что такое memoize в этом контексте и когда его...
220 просмотров
peg
schedule 05.06.2022

Разобрать одно или несколько выражений с полезными ошибками
Я использую grako (библиотека генератора синтаксического анализатора PEG для python) для анализа простого декларативного языка, где документ может содержать один или несколько протоколов. Первоначально у меня было корневое правило для документа,...
67 просмотров
schedule 17.06.2022

Сопоставьте строковый литерал, содержащий нижнюю область, с помощью PEG.js
я продолжаю изучать PEG.js, но застрял на следующем вопросе. Синтаксический анализатор, сгенерированный PEG.js, не может сопоставить строку, содержащую нижние области видимости: CONFIG += stl_off но успешно анализирует строку без...
528 просмотров
schedule 09.07.2022

Почему pegjs не обрабатывает правило пробелов *
Следующая простая грамматика pegjs отлично работает: start = sentence sentence = word ws sentence / word word = [a-z]* ws = " " Он доступен по адресу http://jsfiddle.net/4V3Zt/ . Грамматику также можно вставить в...
219 просмотров
schedule 06.08.2022

Как лучше всего анализировать текст по нескольким (15+) регулярным выражениям в каждой строке?
У меня есть основной текст, который я должен сканировать, и каждая строка содержит как минимум 2, а иногда и четыре части информации. Проблема в том, что в каждой строке может быть 1 из 15-20 различных действий. в Ruby текущий код выглядит...
1618 просмотров
schedule 10.09.2022

Любой парсер PEG, способный обрабатывать левую рекурсию?
Ну, я знаю, что можно переписать грамматику, чтобы исключить левую рекурсию. Но это очень скучный процесс, и иногда очень нетривиально сохранить правильную ассоциативность. Есть ли парсер, способный правильно обрабатывать грамматики с левой рекурсией?
1079 просмотров
schedule 20.10.2022

Устранить левую рекурсию в этой грамматике PEG.js
(Примечание: я читал другие вопросы, такие как this , но я не смог понять это). Я написал эту грамматику: start = call ident = [a-z]+ spaces = [ ]+ call = f:ident spaces g:(call / ident) { return f + "(" + g + ")"; } С этим вводом...
2646 просмотров
schedule 24.12.2022