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

Для чего используется многоточие (пустая строка) в грамматике Treetop (PEG)?
веб-сайт Treetop дает следующее объяснение, которое я не понимаю Многоточие Пустая строка соответствует любой позиции и не требует ввода. Это полезно, когда вы хотите рассматривать один символ как часть последовательности, например, когда...
137 просмотров
schedule 02.06.2024

Разбор зарезервированного слова в Parsing Expressive Grammar (PEG.js)
похожий вопрос и веб-сайт автора дает мне такие решения: Identifier "identifier" = !ReservedWord [A-Za-z_]+ ReservedWord = "test" / "abc" Это решение не может анализировать такой идентификатор, как этот...
676 просмотров
schedule 30.08.2022

Как я могу избежать левой рекурсии в вершине дерева без возврата?
У меня возникли проблемы с тем, чтобы избежать левой рекурсии в этом простом синтаксическом анализаторе выражений, над которым я работаю. По сути, я хочу разобрать уравнение «f x y» на два выражения «f x» и «(f x) y» (с неявными скобками). Как я...
279 просмотров
schedule 24.06.2023

Как преобразовать простую грамматику во что-то, что работает в PEG.js (ожидалось, но найдено)
Я только начал играть с PEG.js и у меня возникла проблема с грамматикой (значительно упрощенной для отладки): start = presingle single / preplural plural presingle = "a" / "b" preplural = "b" / "c" single = "d" / "e" plural =...
522 просмотров
schedule 21.07.2022

Почему эта грамматика привязки не распознает 42?
Использование грамматики start = b / a a = "4" "2" b = "4" с peg.js распознает 4, но не 42, и в этом случае ошибка «Строка 1, столбец 2: ожидается конец ввода, но найдено «2». сообщается. Очевидно, синтаксический анализатор...
147 просмотров
schedule 24.01.2023

peg/leg — любопытное поведение спецификации PEG при разборе выражений
Недавно я узнал о грамматиках синтаксического анализа выражений. Прочитав некоторые материалы по нему путем поиска в сети, я, наконец, сел запачкать руки. Я подумал о реализации программы hoc из The Unix Programming Environment Кернигана и Пайка с...
223 просмотров
schedule 18.07.2022

Можно ли использовать несколько парсеров и сохранить номера строк?
Месяц назад я задал полусвязанный вопрос: в несколько проходов, общих для грамматик PEG? Я пытался выяснить, является ли хорошей идеей написать несколько грамматик, чтобы постепенно анализировать ввод некоторого текста в проходах. Для моего...
64 просмотров

Парсер/интерпретатор строки управления доступом (ACS) с PEG.js
Предисловие Я работаю над созданием строки A доступа C управления S строкой (или S системой) (ACS) Парсер/интерпретатор с PEG.js. Строки ACS обычно используются в системах досок объявлений (BBS) для проверки прав доступа к определенным...
296 просмотров
schedule 27.05.2023

Почему сгенерированный парсер работает так медленно?
Я играл с PEG.js , пытаясь создать парсер, способный взять строку и создать объект. Например, возьмите строку «a&b» и создайте: {type:"operator",value:operator, children:[a, b]} Однако я достиг стадии, когда возврат результата может...
174 просмотров
schedule 30.06.2022

Сопоставление выражения ИЛИ с использованием Grappa (Java PEG Parser)
Я новичок в синтаксическом анализе PEG и пытаюсь написать простой синтаксический анализатор для анализа выражения типа: «term1 OR term2 Anotherterm», в идеале в AST, который будет выглядеть примерно так: OR -----------|--------- |...
371 просмотров
schedule 22.08.2023

Указание количества в PEG.js
Я играю с PEG.js Как я могу разрешить вводить ровно 2 буквы? Это мой подход: start = word word = [A-Za-z]{2} Я использовал {2} из регулярного выражения, но, к сожалению, он не работает с PEG.js.
106 просмотров
schedule 03.09.2023

Элемент двух операторов взаимно ссылается с peg.js
определите блок следующим образом compound_stat = '{' decl exp_stat '}' exp_stat = exp ';' decl = decl_specs id ';' decl_specs = 'int'/'float' id =name:[a-z]+ {return name.join("");} exp_stat = left:multiplicative "+" right:exp_stat {...
53 просмотров
schedule 02.09.2022

Как грамматика из RFC 2396 (об URI) может быть выражена в PEG?
Я пытаюсь придумать грамматику PEG, которая будет анализировать имя хоста в соответствии со следующим BNF: RFC 2396 hostname = *( domainlabel "." ) toplabel [ "." ] domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum...
153 просмотров
schedule 06.03.2023

Почему процесс синтаксического анализа Grako завершается сбоем, если моя грамматика содержит выражение, состоящее из множества соединенных по ИЛИ подвыражений?
Я использую Грако. В моей грамматике EBNF у меня есть выражение, состоящее из множества подвыражений, объединенных с помощью оператора ИЛИ, например: expression = subexpressionA | subexpressionB | ... | subexpressionZ; Процесс...
89 просмотров
schedule 18.02.2023

Как открывать файлы с помощью Peg.js?
Как я могу прочитать файл на моем языке? Я пытаюсь понять, как работают языки. Я хотел бы знать, как создать простую грамматику для чтения файлов с помощью Peg.js . В Python это примерно так f= open("testfile.txt","w+") Пример...
103 просмотров

Сложность написания грамматики рекурсивных выражений PEG с арпеджио
Мой входной текст может иметь простое утверждение, подобное этому: aircraft На своем языке я называю это имя , которое представляет собой набор экземпляров с различными свойствами. Это дает instance_set всех экземпляров самолетов в этом...
27 просмотров
schedule 23.06.2022