Выражения парсинга могут быть определены с использованием следующего синтаксиса:
(and e1 e2…)Последовательность PEX, которые должны быть сопоставлены. Форма and является необязательной и неявной.
(or e1 e2…)Приоритетные выборы, что означает, как в Elisp, что выборы проверяются по порядку, и используется первое успешное совпадение. Обратите внимание, что это отличается от контекстно-свободных грамматик, где выбор между несколькими совпадениями неопределенен.
(any)Сопоставляет любой одиночный символ, как регулярное выражение “.”.
stringБуквальная строка.
(char c)Одиночный символ c в виде литерала символа Elisp.
(* e)Ноль или более экземпляров выражения e, как регулярное выражение ‘*’. Сопоставление всегда “жадное”.
(+ e)Один или более экземпляров выражения e, как регулярное выражение ‘+’. Сопоставление всегда “жадное”.
(opt e)Ноль или один экземпляр выражения e, как регулярное выражение ‘?’.
symbolСимвол, представляющий ранее определенное правило PEG.
(range ch1 ch2)Диапазон символов между ch1 и ch2, как регулярное выражение ‘[ch1-ch2]’.
[ch1-ch2 "+*" ?x]Набор символов, который может включать диапазоны, литералы символов или строки символов.
[ascii cntrl]Список именованных классов символов.
(syntax-class name)Один синтаксический класс.
(funcall e args…)Вызов PEX e (ранее определенный с
define-peg-rule) с аргументами args.
(null)Пустая строка.
Следующие выражения используются в качестве якорей или тестов – они не перемещают точку, но возвращают булево значение, которое может быть использовано для ограничения совпадений как способ управления процессом парсинга (см. Написание правил PEG).
(bob)Начало буфера.
(eob)Конец буфера.
(bol)Начало строки.
(eol)Конец строки.
(bow)Начало слова.
(eow)Конец слова.
(bos)Начало символа.
(eos)Конец символа.
(if e)Возвращает не-nil, если парсинг PEX e из точки
успешен (точка не перемещается).
(not e)Возвращает не-nil, если парсинг PEX e из точки не удался
(точка не перемещается).
(guard exp)Обрабатывает значение Lisp-выражения exp как булево.
Сопоставление классов символов может ссылаться на классы, названные в
peg-char-classes, что эквивалентно классам символов в регулярных
выражениях (см. (elisp)Классы символов)