Function: define-peg-ruleset

define-peg-ruleset is a macro defined in peg.el.gz.

Signature

(define-peg-ruleset NAME &rest RULES)

Documentation

Define a set of PEG rules for later use, e.g., in with-peg-rules.

View in manual

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/peg.el.gz
(defmacro define-peg-ruleset (name &rest rules)
  "Define a set of PEG rules for later use, e.g., in `with-peg-rules'."
  (declare (indent 1))
  (let ((defs ())
        (aliases ()))
    (dolist (rule rules)
      (let* ((rname (car rule))
             (full-rname (format "%s %s" name rname)))
        (push `(define-peg-rule ,full-rname . ,(cdr rule)) defs)
        (push `(,(peg--rule-id rname) #',(peg--rule-id full-rname)) aliases)))
    (require 'cl-lib)
    `(cl-flet ,aliases
       ,@defs
       (eval-and-compile (put ',name 'peg--rules ',aliases)))))