Spec-Zone.ru › Elisp

Определения PEX

Выражения разбора можно определять с помощью следующего синтаксиса:

(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, эквивалентные классам символов в регулярных выражениях (см. Классы символов)

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/PEX-Definitions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API