branch: externals/yaml
commit 57254d464aa382fd09a1fabc2a4b55e0b3d6afc1
Author: Zachary Romero <zacrom...@posteo.net>
Commit: Zachary Romero <zacrom...@posteo.net>

    update schema
---
 grammargen.bb |  160 ++++-
 yaml.el       | 1794 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 1924 insertions(+), 30 deletions(-)

diff --git a/grammargen.bb b/grammargen.bb
index ece9231164..7962ac877e 100755
--- a/grammargen.bb
+++ b/grammargen.bb
@@ -19,17 +19,51 @@
          (map symbol))
     (list)))
 
-(defmulti gen-elisp-fn-arg #(.getName (class %)))
+(defn gen-elisp-lambda [f]
+  (list 'lambda (list) f))
+
+(defmulti gen-elisp-fn-arg #(if (nil? %)
+                              "nil"
+                              (.getName (class %))))
+
+(defmethod gen-elisp-fn-arg "nil" [_]
+  'nil)
+(defmethod gen-elisp-fn-arg "java.lang.Integer" [n]
+  n)
 (defmethod gen-elisp-fn-arg "java.lang.String" [var-name]
-  (symbol var-name))
+  (cond (= "<auto-detect-indent>" var-name)
+        (list 'yaml--auto-detect-indent 'n)
+
+        (= "(match)" var-name)
+        (list 'yaml--match)
+
+        (#{"flow-out" "flow-in" "block-in" "block-out"} var-name)
+        var-name
+
+        (> (count var-name) 2)
+        (list (prefix-package-symbol var-name))
+
+        (= "m" var-name)
+        (list 'yaml--state-m)
+
+        (= "t" var-name)
+        (list 'yaml--state-t)
+
+        :else (symbol var-name)))
+
 (defmethod gen-elisp-fn-arg "clojure.lang.PersistentArrayMap" [m]
   (cond
     (get m "(+)")
     (let [[var val] (get m "(+)")]
-      (list 'yaml--add (symbol var) val))
+      (list '+ (gen-elisp-fn-arg var) (gen-elisp-fn-arg val)))
     (get m "(-)")
     (let [[var val] (get m "(-)")]
       (list 'yaml--sub (symbol var) val))
+    (get m "(len)")
+    (list 'length (gen-elisp-fn-arg (get m "(len)")))
+    (get m "(ord)")
+    (list 'yaml--ord (gen-elisp-lambda (list 'yaml--match))) ;; hack
+
     :else
     (let [[f args] (first m)]
       (concat (list (prefix-package-symbol f))
@@ -37,24 +71,41 @@
 
 (defmulti gen-elisp-parse-expr #(.getName (class %)))
 
+(defn gen-elsip-char-symbol [c]
+  (symbol (str "?\\"
+               (if (= c "N")
+                 "n"
+                 c))))
+
 (defmethod gen-elisp-parse-expr "java.lang.String" [chr]
-  (list 'yaml--chr chr))
+  (cond (= "<start-of-line>" chr)
+        (list 'yaml--start-of-line)
+        (= "<end-of-stream>" chr)
+        (list 'yaml--end-of-stream)
+        (= "<empty>" chr)
+        (list 'yaml--empty)
+        (or (= (count chr) 1) (= (first chr) \x))
+        (list 'yaml--chr (gen-elsip-char-symbol chr))
+        (= "N" chr)
+        (list (prefix-package-symbol "\n"))
+        :else
+        (list (prefix-package-symbol chr))))
 
 (defmethod gen-elisp-parse-expr "clojure.lang.PersistentVector" [[min max]]
   (list 'yaml--chr-range
-        (symbol (str "?\\" min))
-        (symbol (str "?\\" max))))
+        (gen-elsip-char-symbol min)
+        (gen-elsip-char-symbol max)))
 
 (defmethod gen-elisp-parse-expr "clojure.lang.PersistentArrayMap" [m]
   (cond
     (get m "({n})")
-    (list 'yaml--repeat-n 'n (prefix-package-symbol-quoted (get m "({n})")))
+    (list 'yaml--rep 'n 'n (prefix-package-symbol-quoted (get m "({n})")))
     (get m "({2})")
-    (list 'yaml--repeat-n 2 (prefix-package-symbol-quoted (get m "({2})")))
+    (list 'yaml--rep 2 2 (prefix-package-symbol-quoted (get m "({2})")))
     (get m "({4})")
-    (list 'yaml--repeat-n 4 (prefix-package-symbol-quoted (get m "({4})")))
+    (list 'yaml--rep 4 4 (prefix-package-symbol-quoted (get m "({4})")))
     (get m "({8})")
-    (list 'yaml--repeat-n 4 (prefix-package-symbol-quoted (get m "({8})")))
+    (list 'yaml--rep 8 8 (prefix-package-symbol-quoted (get m "({8})")))
 
     (get m "(all)")
     (concat (list 'yaml--all) (map gen-elisp-parse-expr (get m "(all)")))
@@ -62,32 +113,78 @@
     (get m "(any)")
     (concat (list 'yaml--any) (map gen-elisp-parse-expr (get m "(any)")))
 
+    (get m "(exclude)")
+    (concat (list 'yaml--exclude (get m "(exclude)")))
+
     (get m "(flip)")
     (let [flip-args (get m "(flip)")
-          var (gen-elisp-fn-arg (get flip-args "var"))
-          block-in (or (and (get flip-args "block-in") (gen-elisp-fn-arg (get 
flip-args "block-in"))) 'f)
-          block-out (or (and (get flip-args "block-out") (gen-elisp-fn-arg 
(get flip-args "block-out"))) 'f)
-          block-key (or (and (get flip-args "block-key") (gen-elisp-fn-arg 
(get flip-args "block-key"))) 'f)
-          flow-in (or (and (get flip-args "flow-in") (gen-elisp-fn-arg (get 
flip-args "flow-in"))) 'f)
-          flow-out (or (and (get flip-args "flow-out") (gen-elisp-fn-arg (get 
flip-args "flow-out"))) 'f)
-          flow-key (or (and (get flip-args "flow-key") (gen-elisp-fn-arg (get 
flip-args "flow-key"))) 'f)]
-      (concat (list 'yaml--flip var block-in block-out block-key flow-in 
flow-out flow-key)))
+          var (symbol (get flip-args "var"))
+          flip-args (dissoc flip-args "var")]
+      (concat (list 'cond)
+              (map (fn [[from to]]
+                     (list (list 'equal var from)
+                           (gen-elisp-fn-arg  to)))
+                   flip-args)))
 
     (get m "(<<<)")
     (list 'yaml--may (gen-elisp-parse-expr (get m "(<<<)")))
 
     (get m "(???)")
-    (list 'yaml--rep 0 1 (gen-elisp-parse-expr (get m "(???)")))
+    (list 'yaml--rep 0 1 (gen-elisp-lambda (gen-elisp-parse-expr (get m 
"(???)"))))
     (get m "(***)")
-    (list 'yaml--rep2 0 'f (gen-elisp-parse-expr (get m "(***)")))
+    (list 'yaml--rep2 0 'nil (gen-elisp-lambda (gen-elisp-parse-expr (get m 
"(***)"))))
 
     (get m "(+++)")
-    (list 'yaml--rep 1 'f (gen-elisp-parse-expr (get m "(+++)")))
+    (list 'yaml--rep 1 'nil (gen-elisp-lambda (gen-elisp-parse-expr (get m 
"(+++)"))))
+
+    (get m "(---)")
+    (concat (list 'yaml--but) (map gen-elisp-lambda (map gen-elisp-parse-expr 
(get m "(---)"))))
+
+
 
     (get m "(+)")
     (let [[var val] (get m "(+)")]
       (list 'yaml--add val (symbol var)))
 
+    (get m "(<)")
+    (let [[a b] (get m "(<)")]
+      (list '< (gen-elisp-fn-arg a) (gen-elisp-fn-arg b)))
+
+    (get m "(<=)")
+    (let [[a b] (get m "(<=)")]
+      (list '<= (gen-elisp-fn-arg a) (gen-elisp-fn-arg b)))
+
+    (get m "(<==)")
+    (let [expr (get m "(<==)")]
+      (list 'yaml--chk "<=" (gen-elisp-fn-arg expr)))
+
+    (get m "(===)")
+    (let [[a b] (first (get m "(===)"))]
+      (list 'yaml--chk "=" (list (first (gen-elisp-fn-arg a)) 
(gen-elisp-fn-arg b))))
+
+    (get m "(!==)")
+    (let [[a b] (first (get m "(!==)"))]
+      (list 'yaml--chk "!" (list (first (gen-elisp-fn-arg a)) 
(gen-elisp-fn-arg b))))
+
+    (get m "(max)")
+    (list 'yaml--max (get m "(max)"))
+
+    (get m "(set)")
+    (let [[var-name val] (get m "(set)")]
+      (list 'yaml--set (symbol var-name) (gen-elisp-fn-arg val)))
+
+    (get m "(case)")
+    (let [case-params (get m "(case)")
+          var-name (get case-params "var")
+          case-params (dissoc case-params "var")]
+      (concat
+       (list 'cond)
+       (map (fn [[case-name function]]
+              (list (list 'equal (symbol var-name) case-name)
+                    (gen-elisp-fn-arg function)))
+            case-params)))
+
+
     ;; else funcall with args
     :else
     (let [[f args] (first m)]
@@ -96,12 +193,11 @@
               (map gen-elisp-fn-arg (flatten (list args)))))))
 
 (defn gen-elisp-defun [[name rule]]
-  (let [params (extract-params rule)]
-    (println "[debug]"  (pr-str name) (pr-str rule))
+  (let [params (extract-params rule)
+        rule (if (map? rule) (dissoc rule "(...)") rule)]
     (list 'defun (prefix-package-symbol name) params
           "Documentation string."
-          (list 'yaml-debug-symbol name)
-          (gen-elisp-parse-expr rule))))
+          (list 'yaml--frame name (gen-elisp-parse-expr rule)))))
 
 (def json-grammar (into {} (filter (fn [[k _]] (not (= ":" (subs k 0 1)))) 
(json/parse-string (slurp "./yaml-spec-1.2.json")))))
 
@@ -115,9 +211,15 @@
 ;; (println (pr-str (gen-elisp-defun ["s-indent" (get json-grammar 
"s-indent")])))
 ;; (println (pr-str (gen-elisp-defun ["ns-esc-32-bit" (get json-grammar 
"ns-esc-32-bit")])))
 
-;; (println (pr-str (gen-elisp-defun ["s-indent-lt" (get json-grammar 
"s-indent-lt")])))
+;;(println (pr-str (gen-elisp-defun ["s-indent-lt" (get json-grammar 
"s-indent-lt")])))
 ;; (println (pr-str (gen-elisp-defun ["s-l+block-collection" (get json-grammar 
"s-l+block-collection")])))
-;; (println (pr-str (gen-elisp-defun ["in-flow" (get json-grammar 
"in-flow")])))
 
-(println (first json-grammar))
-(gen-elisp-defun (first json-grammar))
+;;
+
+;; (println (pr-str (gen-elisp-defun ["ns-plain-safe" (get json-grammar 
"ns-plain-safe")])))
+(println (pr-str *command-line-args*))
+
+(if-let [fn-name (first *command-line-args*)]
+  (println (pr-str (gen-elisp-defun [fn-name (get json-grammar fn-name)])))
+  (doall (map println (map pr-str (map gen-elisp-defun json-grammar)))))
+;;
diff --git a/yaml.el b/yaml.el
index edc0fe3efd..4c76e21615 100644
--- a/yaml.el
+++ b/yaml.el
@@ -30,7 +30,1799 @@
 
 ;;; Code:
 
-(message "Hello World!")
+(defconst yaml-tracing-ignore '("s-space"
+                                "s-tab"
+                                "s-white"
+                                "l-comment"
+                                "b-break"
+                                "b-line-feed"
+                                "b-carriage-return"
+                                "s-b-comment"
+                                "b-comment"
+                                "l-comment"
+                                "ns-char"
+                                "nb-char"
+                                "b-char"
+                                "c-printable"
+                                "b-as-space"))
+
+(defvar yaml-parsing-input "ABC")
+(defvar yaml-parsing-position 0)
+(defvar yaml-states nil)
+
+(cl-defstruct (yaml-state (:constructor yaml-state-create)
+                          (:copier nil))
+  doc tt m name lvl beg end)
+
+(defmacro yaml-parse (data &rest forms)
+  "Parse DATA according to FORMS."
+  (declare (indent defun))
+  `(progn (setq yaml-parsing-input ,data)
+          (setq yaml-parsing-position 0)
+          (yaml--initialize-state)
+          ,@forms))
+
+
+(defun yaml--state-curr ()
+  "Return the current state."
+  (or (car yaml-states)
+      (yaml-state-create
+       :name nil :doc nil :lvl 0 :beg 0 :end 0 :m nil :tt nil)))
+
+(defun yaml-state-set-m (val)
+  "Set the current value of m to VAL."
+  (let* ((top-state (yaml--state-curr)))
+    (setcar yaml-states
+            (yaml-state-create :doc (yaml-state-doc top-state)
+                               :tt (yaml-state-tt top-state)
+                               :m val
+                               :name (yaml-state-m top-state)
+                               :lvl (yaml-state-lvl top-state)
+                               :beg (yaml-state-beg top-state)
+                               :end (yaml-state-end top-state)))))
+(defun yaml-state-set-t (val)
+  "Set the current value of t to VAL."
+  (let* ((top-state (yaml--state-curr)))
+    (setcar yaml-states
+            (yaml-state-create :doc (yaml-state-doc top-state)
+                               :tt val
+                               :m (yaml-state-m top-state)
+                               :name (yaml-state-m top-state)
+                               :lvl (yaml-state-lvl top-state)
+                               :beg (yaml-state-beg top-state)
+                               :end (yaml-state-end top-state)))))
+
+(defun yaml--state-doc ()
+  "Return the doc property of current state."
+  (yaml-state-doc (yaml--state-curr)))
+
+(defun yaml--state-t ()
+  "Return the doc property of current state."
+  (yaml-state-tt (yaml--state-curr)))
+
+(defun yaml--state-m ()
+  "Return the doc property of current state."
+  (yaml-state-m (yaml--state-curr)))
+
+(defun yaml--state-end ()
+  "Return the doc property of current state."
+  (yaml-state-end (yaml--state-curr)))
+
+(defun yaml--push-state (name)
+  "Add a new state frame with NAME."
+  (let* ((curr-state (yaml--state-curr))
+         (new-state (yaml-state-create
+                    :doc (yaml--state-doc)
+                    :tt (yaml--state-t)
+                    :m (yaml--state-m)
+                    :name name
+                    :lvl (1+ (yaml-state-lvl curr-state))
+                    :beg yaml-parsing-position
+                    :end nil)))
+    (push new-state yaml-states)))
+
+(defun yaml--pop-state ()
+  "Pop the current state."
+  (let ((popped-state (car yaml-states)))
+   (setq yaml-states (cdr yaml-states))
+   (let ((top-state (car yaml-states)))
+     (setcar yaml-states
+             (yaml-state-create :doc (yaml-state-doc top-state)
+                                :tt (yaml-state-tt top-state)
+                                :m (yaml-state-m top-state)
+                                :name (yaml-state-m top-state)
+                                :lvl (yaml-state-lvl top-state)
+                                :beg (yaml-state-beg popped-state)
+                                :end yaml-parsing-position)))))
+
+(defun yaml--initialize-state ()
+  "Initialize the yaml state for parsing."
+  (setq yaml-states
+        (list (yaml-state-create :doc nil
+                                 :tt nil
+                                 :m nil
+                                 :name nil
+                                 :lvl 0
+                                 :beg nil
+                                 :end nil))))
+
+(defmacro yaml--frame (name rule)
+  "Add a new state frame of NAME for RULE."
+  (declare (indent defun))
+  `(progn
+     ;(message "%2d: %s" (length yaml-states) ,name)
+     (yaml--push-state ,name)
+     (when (not (member ,name yaml-tracing-ignore))
+       (message "|%s>%s %30s \"%s\""
+                (make-string (length yaml-states) ?-)
+                (make-string (- 30 (length yaml-states)) ?\s)
+                ,name
+                (replace-regexp-in-string
+                 "\n"
+                 "\\n"
+                 (substring yaml-parsing-input yaml-parsing-position)
+                 nil
+                 'literal)))
+     (let ((beg yaml-parsing-position)
+           (res ,rule))
+       (when (and res (not (member ,name yaml-tracing-ignore)))
+         (message "<%s|%s %30s \"%s\""
+                  (make-string (length yaml-states) ?-)
+                  (make-string (- 30 (length yaml-states)) ?\s)
+                  ,name
+                  (replace-regexp-in-string
+                   "\n"
+                   "\\n"
+                   (substring yaml-parsing-input beg yaml-parsing-position)
+                   nil
+                   'literal)))
+       (yaml--pop-state)
+       res)))
+
+(defun yaml--end-of-stream ()
+  ""
+  (>= yaml-parsing-position (length yaml-parsing-input)))
+
+(defun yaml--char-at-pos (pos)
+  "Return the character at POS."
+  (aref yaml-parsing-input pos))
+
+(defun yaml--slice (pos)
+  "Return the character at POS."
+  (substring yaml-parsing-input pos))
+
+(defun yaml--at-char ()
+  "Return the current character."
+  (yaml--char-at-pos yaml-parsing-position))
+
+(defun yaml--char-match (at &rest chars)
+  "Return non-nil if AT match any of CHARS."
+  (if (not chars)
+      nil
+    (or (equal at (car chars))
+        (apply #'yaml--char-match (cons at (cdr chars))))))
+
+(defun yaml--chr (c)
+  "Try to match the character C."
+  (if (or (yaml--end-of-stream) (not (equal (yaml--at-char) c)))
+      nil
+    (setq yaml-parsing-position (1+ yaml-parsing-position))
+    t))
+
+(defun yaml--chr-range (min max)
+  "Return non-nil if the current character is between MIN and MAX."
+  (if (or (yaml--end-of-stream) (not (<= min (yaml--at-char) max)))
+      nil
+    (setq yaml-parsing-position (1+ yaml-parsing-position))
+    t))
+
+(defmacro yaml--all (&rest forms)
+  "Pass if all of FORMS pass."
+  (if (= 1 (length forms))
+      (car forms)
+    (let ((idx-sym (make-symbol "idx")))
+      `(let ((,idx-sym ,(car forms)))
+         (and ,idx-sym (yaml--all ,@(cdr forms)))))))
+
+
+(defmacro yaml--any (&rest forms)
+  "Pass if any of FORMS pass."
+  (if (= 1 (length forms))
+      (car forms)
+    (let ((idx-sym (make-symbol "idx"))
+          (start-pos-sym (make-symbol "idx")))
+      `(let ((,start-pos-sym yaml-parsing-position)
+             (,idx-sym ,(car forms)))
+         (or ,idx-sym
+             (progn (setq yaml-parsing-position ,start-pos-sym)
+                    (yaml--any ,@(cdr forms))))))))
+
+(defmacro yaml--may (action)
+  action)
+
+(defmacro yaml--exclude (_)
+  "Return non-nil."
+  't)
+
+(defmacro yaml--max (_)
+  "Return non-nil."
+  t)
+
+(defun yaml--empty ()
+  "Return non-nil."
+  t)
+
+(defun yaml--match ()
+  ""
+  (let* ((states yaml-states)
+         (res nil))
+    (while (and states (not res))
+      (let ((top-state (car states)))
+        (if (yaml-state-end top-state)
+            (let ((beg (yaml-state-beg top-state))
+                  (end (yaml-state-end top-state)))
+              (setq res (substring yaml-parsing-input beg end)))
+          (setq states (cdr states)))))))
+
+(defun yaml--auto-detect-indent (n)
+  "Detect the indentation given N."
+  (let* ((pos yaml-parsing-position)
+         (in-seq (and (> pos 0)
+                      (yaml--char-match (yaml--char-at-pos (1- pos)) ?\- ?\? 
?\:)))
+         (slice (yaml--slice pos))
+         (_ (string-match
+             "^\\(\\(?: *\\(?:#.*\\)?\n\\)*\\)\\( *\\)"
+             slice))
+         (pre (match-string 1 slice))
+         (m (length (match-string 2 slice))))
+    (if (and in-seq (not pre))
+        (when (= n -1)
+          (setq m (1+ m)))
+      (setq m (- m n)))
+    (when (< m 0)
+      (setq m 0))
+    m))
+
+(defun yaml--the-end ()
+  "Return non-nil if at the end of input (?)."
+  (or (>= yaml-parsing-position (length yaml-parsing-input))
+      (and (yaml--state-doc)
+           (yaml--start-of-line)
+           ;; TODO Test this Regex
+           (string-match "\\^g(?:---|\\.\\.\\.\\)\\([[:blank:]]\\|$\\)" 
(substring yaml-parsing-input yaml-parsing-position)))))
+
+(defun yaml--ord (f)
+  (let ((res (funcall f)))
+    (- (aref res 0) 48)))
+
+(defun yaml--but (&rest fs)
+  "Match the first FS but none of the others."
+  (if (yaml--the-end)
+      nil
+    (let ((pos1 yaml-parsing-position))
+      (if (not (funcall (car fs)))
+          nil
+        (let ((pos2 yaml-parsing-position))
+          (setq yaml-parsing-position pos1)
+          (if (equal ':error (catch 'break
+                               (dolist (f (cdr fs))
+                                 (if (funcall f)
+                                     (progn
+                                       (setq yaml-parsing-position pos1)
+                                       (throw 'break ':error))))))
+              nil
+            (setq yaml-parsing-position pos2)
+            t))))))
+
+(defun yaml--rep (min max func)
+  "Repeat FUNC between MIN and MAX times."
+  (yaml--rep2 min max func))
+
+(defun yaml--rep2 (min max func)
+  "Repeat FUNC between MIN and MAX times."
+  (if (and max (< max 0))
+      nil
+    (let* ((count 0)
+           (pos yaml-parsing-position)
+           (pos-start pos))
+      (catch 'break
+        (while (or (not max) (< count max))
+          (let ((res (funcall func)))
+            (when (or (not res)
+                      (= yaml-parsing-position pos))
+              (throw 'break nil))
+            (setq count (1+ count))
+            (setq pos yaml-parsing-position))))
+      (if (and (>= count min)
+               (or (not max) (<= count max)))
+          (progn
+            (setq yaml-parsing-position pos)
+            t)
+        (setq yaml-parsing-position pos-start)
+        nil))))
+
+(defun yaml--start-of-line ()
+  "Return non-nil if start of line."
+  (or (= yaml-parsing-position 0)
+      (>= yaml-parsing-position (length yaml-parsing-input))
+      (equal (yaml--char-at-pos (1- yaml-parsing-position)) ?\n)))
+
+(defun yaml--top ()
+  "Perform top level YAML parsing rule."
+  (yaml-l-yaml-stream))
+
+(defmacro yaml--set (variable value)
+  "Set the current state of VARIABLE to VALUE"
+  (let ((res-sym (make-symbol "res")))
+    `(let ((,res-sym ,value))
+       (when ,res-sym
+         (,(cond ((equal "m" (symbol-name variable)) 'yaml-state-set-m)
+                 ((equal "t" (symbol-name variable)) 'yaml-state-set-t))
+          ,res-sym)
+         ,res-sym))))
+
+(defmacro yaml--chk (type expr)
+  (let ((start-symbol (make-symbol "start"))
+        (ok-symbol (make-symbol "ok")))
+    `(let ((,start-symbol yaml-parsing-position))
+       (when (equal ,type "<=")
+         (setq yaml-parsing-position (1- yaml-parsing-position)))
+       (let ((ok (and (>= yaml-parsing-position 0) ,expr)))
+         (setq yaml-parsing-position ,start-symbol)
+         (if (equal ,type "!")
+             (not ok)
+           ok)))))
+
+(defun yaml-parse-string (str)
+  "Parse STR as YAML."
+  (let ((res (yaml-parse str
+               (yaml--top))))
+    (when (< yaml-parsing-position (length yaml-parsing-input))
+      (error (format "parser finished before end of input %s/%s"
+                     yaml-parsing-position
+                     (length yaml-parsing-input)) ))
+    res))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+(defun yaml-c-flow-sequence (n c)
+  "Documentation string."
+  (yaml--frame "c-flow-sequence"
+               (yaml--all (yaml--chr ?\[)
+                          (yaml--rep 0 1 (lambda () (yaml-s-separate n c)))
+                          (yaml--rep 0 1 (lambda () 
(yaml-ns-s-flow-seq-entries n (yaml-in-flow c))))
+                          (yaml--chr ?\]))))
+
+(defun yaml-c-indentation-indicator (m)
+  "Documentation string."
+  (yaml--frame "c-indentation-indicator"
+    (yaml--any
+     (yaml--set m (yaml--ord (lambda () (yaml--match))))
+     (yaml--set m (yaml-auto-detect)))))
+
+(defun yaml-ns-reserved-directive ()
+  "Documentation string."
+  (yaml--frame "ns-reserved-directive"
+               (yaml--all (yaml-ns-directive-name)
+                          (yaml--rep2 0 nil (lambda () (yaml--all 
(yaml-s-separate-in-line) (yaml-ns-directive-parameter)))))))
+
+(defun yaml-ns-flow-map-implicit-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-map-implicit-entry"
+               (yaml--any (yaml-ns-flow-map-yaml-key-entry n c)
+                          (yaml-c-ns-flow-map-empty-key-entry n c)
+                          (yaml-c-ns-flow-map-json-key-entry n c))))
+
+(defun yaml-ns-esc-double-quote ()
+  "Documentation string."
+  (yaml--frame "ns-esc-double-quote"
+               (yaml--chr ?\")))
+
+(defun yaml-c-mapping-start ()
+  "Documentation string."
+  (yaml--frame "c-mapping-start"
+               (yaml--chr ?\{)))
+
+(defun yaml-ns-flow-seq-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-seq-entry"
+               (yaml--any (yaml-ns-flow-pair n c)
+                          (yaml-ns-flow-node n c))))
+
+(defun yaml-l-empty (n c)
+  "Documentation string."
+  (yaml--frame "l-empty"
+               (yaml--all (yaml--any (yaml-s-line-prefix n c)
+                                     (yaml-s-indent-lt n))
+                          (yaml-b-as-line-feed))))
+
+(defun yaml-c-primary-tag-handle ()
+  "Documentation string."
+  (yaml--frame "c-primary-tag-handle"
+               (yaml--chr ?\!)))
+
+(defun yaml-ns-plain-safe-out ()
+  "Documentation string."
+  (yaml--frame "ns-plain-safe-out"
+               (yaml-ns-char)))
+
+(defun yaml-c-ns-shorthand-tag ()
+  "Documentation string."
+  (yaml--frame "c-ns-shorthand-tag"
+               (yaml--all (yaml-c-tag-handle)
+                          (yaml--rep 1 nil (lambda () (yaml-ns-tag-char))))))
+
+(defun yaml-nb-ns-single-in-line ()
+  "Documentation string."
+  (yaml--frame "nb-ns-single-in-line"
+               (yaml--rep2 0 nil (lambda () (yaml--all (yaml--rep2 0 nil 
(lambda () (yaml-s-white))) (yaml-ns-single-char))))))
+
+(defun yaml-l-strip-empty (n)
+  "Documentation string."
+  (yaml--frame "l-strip-empty"
+               (yaml--all (yaml--rep2 0 nil (lambda () (yaml--all 
(yaml-s-indent-le n)
+                                                                  
(yaml-b-non-content))))
+                          (yaml--rep 0 1 (lambda () (yaml-l-trail-comments 
n))))))
+
+(defun yaml-c-indicator ()
+  "Documentation string."
+  (yaml--frame "c-indicator"
+               (yaml--any (yaml--chr ?\-)
+                          (yaml--chr ?\?)
+                          (yaml--chr ?\:)
+                          (yaml--chr ?\,)
+                          (yaml--chr ?\[)
+                          (yaml--chr ?\])
+                          (yaml--chr ?\{)
+                          (yaml--chr ?\})
+                          (yaml--chr ?\#)
+                          (yaml--chr ?\&)
+                          (yaml--chr ?\*)
+                          (yaml--chr ?\!)
+                          (yaml--chr ?\|)
+                          (yaml--chr ?\>)
+                          (yaml--chr ?\')
+                          (yaml--chr ?\")
+                          (yaml--chr ?\%)
+                          (yaml--chr ?\@)
+                          (yaml--chr ?\`))))
+
+(defun yaml-c-l+literal (n)
+  "Documentation string."
+  (yaml--frame "c-l+literal" (yaml--all (yaml--chr ?\|)
+                                        (yaml-c-b-block-header (yaml--state-m) 
(yaml--state-t))
+                                        (yaml-l-literal-content (+ n 
(yaml--state-m)) (yaml--state-t)))))
+
+(defun yaml-c-single-quoted (n c)
+  "Documentation string."
+  (yaml--frame "c-single-quoted" (yaml--all (yaml--chr ?\')
+                                            (yaml-nb-single-text n c)
+                                            (yaml--chr ?\'))))
+
+(defun yaml-c-forbidden ()
+  "Documentation string."
+  (yaml--frame "c-forbidden" (yaml--all (yaml--start-of-line)
+                                        (yaml--any (yaml-c-directives-end)
+                                                   (yaml-c-document-end))
+                                        (yaml--any (yaml-b-char)
+                                                   (yaml-s-white)
+                                                   (yaml--end-of-stream)))))
+
+(defun yaml-c-ns-alias-node ()
+  "Documentation string."
+  (yaml--frame "c-ns-alias-node"
+               (yaml--all (yaml--chr ?\*)
+                          (yaml-ns-anchor-name))))
+
+(defun yaml-c-secondary-tag-handle ()
+  "Documentation string."
+  (yaml--frame "c-secondary-tag-handle"
+               (yaml--all (yaml--chr ?\!)
+                          (yaml--chr ?\!))))
+
+(defun yaml-ns-esc-next-line ()
+  "Documentation string."
+  (yaml--frame "ns-esc-next-line"
+               (yaml--chr ?N)))
+
+(defun yaml-l-nb-same-lines (n)
+  "Documentation string."
+  (yaml--frame "l-nb-same-lines"
+               (yaml--all (yaml--rep2 0 nil (lambda () (yaml-l-empty n 
"block-in")))
+                          (yaml--any (yaml-l-nb-folded-lines n)
+                                     (yaml-l-nb-spaced-lines n)))))
+
+(defun yaml-c-alias ()
+  "Documentation string."
+  (yaml--frame "c-alias" (yaml--chr ?\*)))
+
+(defun yaml-ns-single-char ()
+  "Documentation string."
+  (yaml--frame "ns-single-char"
+               (yaml--but (lambda () (yaml-nb-single-char))
+                          (lambda () (yaml-s-white)))))
+
+(defun yaml-c-l-block-map-implicit-value (n)
+  "Documentation string."
+  (yaml--frame "c-l-block-map-implicit-value"
+               (yaml--all (yaml--chr ?\:)
+                          (yaml--any (yaml-s-l+block-node n "block-out")
+                                     (yaml--all (yaml-e-node) 
(yaml-s-l-comments))))))
+
+(defun yaml-ns-uri-char ()
+  "Documentation string."
+  (yaml--frame "ns-uri-char"
+               (yaml--any (yaml--all (yaml--chr ?\%) (yaml-ns-hex-digit) 
(yaml-ns-hex-digit))
+                          (yaml-ns-word-char)
+                          (yaml--chr ?\#)
+                          (yaml--chr ?\;)
+                          (yaml--chr ?\/)
+                          (yaml--chr ?\?)
+                          (yaml--chr ?\:)
+                          (yaml--chr ?\@)
+                          (yaml--chr ?\&)
+                          (yaml--chr ?\=)
+                          (yaml--chr ?\+)
+                          (yaml--chr ?\$)
+                          (yaml--chr ?\,)
+                          (yaml--chr ?\_)
+                          (yaml--chr ?\.)
+                          (yaml--chr ?\!)
+                          (yaml--chr ?\~)
+                          (yaml--chr ?\*)
+                          (yaml--chr ?\')
+                          (yaml--chr ?\()
+                          (yaml--chr ?\))
+                          (yaml--chr ?\[)
+                          (yaml--chr ?\]))))
+
+(defun yaml-ns-esc-16-bit ()
+  "Documentation string."
+  (yaml--frame "ns-esc-16-bit"
+    (yaml--all (yaml--chr ?u)
+               (yaml--rep 4 4 #'yaml-ns-hex-digit))))
+
+(defun yaml-l-nb-spaced-lines (n)
+  "Documentation string."
+  (yaml--frame "l-nb-spaced-lines"
+               (yaml--all (yaml-s-nb-spaced-text n)
+                          (yaml--rep2 0 nil (lambda () (yaml--all 
(yaml-b-l-spaced n)
+                                                                  
(yaml-s-nb-spaced-text n)))))))
+
+(defun yaml-ns-plain (n c)
+  "Documentation string."
+  (yaml--frame "ns-plain"
+               (cond ((equal c "block-key") (yaml-ns-plain-one-line c))
+                     ((equal c "flow-in") (yaml-ns-plain-multi-line n c))
+                     ((equal c "flow-key") (yaml-ns-plain-one-line c))
+                     ((equal c "flow-out") (yaml-ns-plain-multi-line n c)))))
+
+(defun yaml-c-printable ()
+  "Documentation string."
+  (yaml--frame "c-printable"
+               (yaml--any (yaml--chr ?\x09)
+                          (yaml--chr ?\x0A)
+                          (yaml--chr ?\x0D)
+                          (yaml--chr-range ?\x20 ?\x7E)
+                          (yaml--chr ?\x85)
+                          (yaml--chr-range ?\xA0 ?\xD7FF)
+                          (yaml--chr-range ?\xE000 ?\xFFFD)
+                          (yaml--chr-range ?\x010000 ?\x10FFFF))))
+
+(defun yaml-c-mapping-value ()
+  "Documentation string."
+  (yaml--frame "c-mapping-value" (yaml--chr ?\:)))
+
+(defun yaml-l-nb-literal-text (n)
+  "Documentation string."
+  (yaml--frame "l-nb-literal-text"
+               (yaml--all (yaml--rep2 0 nil (lambda () (yaml-l-empty n 
"block-in")))
+                          (yaml-s-indent n)
+                          (yaml--rep 1 nil (lambda () (yaml-nb-char))))))
+
+(defun yaml-ns-plain-char (c)
+  "Documentation string."
+  (yaml--frame "ns-plain-char"
+    (yaml--any (yaml--but (lambda () (yaml-ns-plain-safe c))
+                          (lambda () (yaml--chr ?\:))
+                          (lambda () (yaml--chr ?\#)))
+               (yaml--all (yaml--chk "<=" (yaml-ns-char))
+                          (yaml--chr ?\#))
+               (yaml--all (yaml--chr ?\:)
+                          (yaml--chk "=" (yaml-ns-plain-safe c))))))
+
+(defun yaml-ns-anchor-char ()
+  "Documentation string."
+  (yaml--frame "ns-anchor-char"
+               (yaml--but (lambda () (yaml-ns-char))
+                          (lambda () (yaml-c-flow-indicator)))))
+
+(defun yaml-s-l+block-scalar (n c)
+  "Documentation string."
+  (yaml--frame "s-l+block-scalar"
+               (yaml--all (yaml-s-separate (+ n 1) c)
+                          (yaml--rep 0 1 (lambda () (yaml--all 
(yaml-c-ns-properties (+ n 1) c)
+                                                               
(yaml-s-separate (+ n 1) c))))
+                          (yaml--any (yaml-c-l+literal n)
+                                     (yaml-c-l+folded n)))))
+
+(defun yaml-ns-plain-safe-in ()
+  "Documentation string."
+  (yaml--frame "ns-plain-safe-in"
+               (yaml--but (lambda () (yaml-ns-char))
+                          (lambda () (yaml-c-flow-indicator)))))
+
+(defun yaml-nb-single-text (n c)
+  "Documentation string."
+  (yaml--frame "nb-single-text"
+               (cond ((equal c "block-key") (yaml-nb-single-one-line))
+                     ((equal c "flow-in") (yaml-nb-single-multi-line n))
+                     ((equal c "flow-key") (yaml-nb-single-one-line))
+                     ((equal c "flow-out") (yaml-nb-single-multi-line n)))))
+
+(defun yaml-s-indent-le (n)
+  "Documentation string."
+  (yaml--frame "s-indent-le"
+               (yaml--may (yaml--all (yaml--rep2 0 nil (lambda () 
(yaml-s-space)))
+                                     (<= (length (yaml--match)) n)))))
+
+(defun yaml-ns-esc-carriage-return ()
+  "Documentation string."
+  (yaml--frame "ns-esc-carriage-return" (yaml--chr ?\r)))
+
+(defun yaml-l-chomped-empty (n t)
+  "Documentation string."
+  (yaml--frame "l-chomped-empty"
+               (cond ((equal t "clip") (yaml-l-strip-empty n))
+                     ((equal t "keep") (yaml-l-keep-empty n))
+                     ((equal t "strip") (yaml-l-strip-empty n)))))
+
+(defun yaml-c-s-implicit-json-key (c)
+  "Documentation string."
+  (yaml--frame "c-s-implicit-json-key"
+               (yaml--all (yaml--max 1024)
+                          (yaml-c-flow-json-node nil c)
+                          (yaml--rep 0 1 (lambda () 
(yaml-s-separate-in-line))))))
+
+(defun yaml-b-as-space ()
+  "Documentation string."
+  (yaml--frame "b-as-space" (yaml-b-break)))
+
+(defun yaml-ns-s-flow-seq-entries (n c)
+  "Documentation string."
+  (yaml--frame "ns-s-flow-seq-entries"
+               (yaml--all (yaml-ns-flow-seq-entry n c)
+                          (yaml--rep 0 1 (lambda () (yaml-s-separate n c)))
+                          (yaml--rep 0 1 (lambda () (yaml--all (yaml--chr ?\,)
+                                                               (yaml--rep 0 1 
(lambda () (yaml-s-separate n c)))
+                                                               (yaml--rep 0 1 
(lambda () (yaml-ns-s-flow-seq-entries n c)))))))))
+
+(defun yaml-l-block-map-explicit-value (n)
+  "Documentation string."
+  (yaml--frame "l-block-map-explicit-value"
+               (yaml--all (yaml-s-indent n)
+                          (yaml--chr ?\:)
+                          (yaml-s-l+block-indented n "block-out"))))
+
+(defun yaml-c-ns-flow-map-json-key-entry (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-map-json-key-entry"
+               (yaml--all (yaml-c-flow-json-node n c)
+                          (yaml--any (yaml--all (yaml--rep 0 1 (lambda () 
(yaml-s-separate n c)))
+                                                
(yaml-c-ns-flow-map-adjacent-value n c))
+                                     (yaml-e-node)))))
+
+(defun yaml-c-sequence-entry ()
+  "Documentation string."
+  (yaml--frame "c-sequence-entry"
+               (yaml--chr ?\-)))
+
+(defun yaml-l-bare-document ()
+  "Documentation string."
+  (yaml--frame "l-bare-document"
+               (yaml--all (yaml--exclude "c-forbidden")
+                          (yaml-s-l+block-node -1 "block-in"))))
+
+(defun yaml-b-chomped-last (t)
+  "Documentation string."
+  (yaml--frame "b-chomped-last"
+    (cond ((equal t "clip") (yaml--any (yaml-b-as-line-feed) 
(yaml--end-of-stream)))
+          ((equal t "keep") (yaml--any (yaml-b-as-line-feed) 
(yaml--end-of-stream)))
+          ((equal t "strip") (yaml--any (yaml-b-non-content) 
(yaml--end-of-stream))))))
+
+(defun yaml-b-chomped-last (t)
+  "Documentation string."
+  (yaml--frame "b-chomped-last"
+    (cond ((equal t "clip") (yaml--any (yaml-b-as-line-feed) 
(yaml--end-of-stream)))
+          ((equal t "keep") (yaml--any (yaml-b-as-line-feed) 
(yaml--end-of-stream)))
+          ((equal t "strip") (yaml--any (yaml-b-non-content) 
(yaml--end-of-stream))))))
+
+(defun yaml-l-trail-comments (n)
+  "Documentation string."
+  (yaml--frame "l-trail-comments"
+               (yaml--all (yaml-s-indent-lt n)
+                          (yaml-c-nb-comment-text)
+                          (yaml-b-comment)
+                          (yaml--rep2 0 nil (lambda () (yaml-l-comment))))))
+
+(defun yaml-ns-flow-map-yaml-key-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-map-yaml-key-entry"
+               (yaml--all (yaml-ns-flow-yaml-node n c)
+                          (yaml--any (yaml--all (yaml--rep 0 1 (lambda () 
(yaml-s-separate n c)))
+                                                
(yaml-c-ns-flow-map-separate-value n c))
+                                     (yaml-e-node)))))
+
+(defun yaml-s-indent (n)
+  "Documentation string."
+  (yaml--frame "s-indent" (yaml--rep n n #'yaml-s-space)))
+
+(defun yaml-ns-esc-line-separator ()
+  "Documentation string."
+  (yaml--frame "ns-esc-line-separator" (yaml--chr ?\L)))
+
+(defun yaml-ns-flow-yaml-content (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-yaml-content"
+    (yaml-ns-plain n c)))
+
+(defun yaml-ns-flow-yaml-node (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-yaml-node"
+               (yaml--any (yaml-c-ns-alias-node)
+                          (yaml-ns-flow-yaml-content n c)
+                          (yaml--all (yaml-c-ns-properties n c)
+                                     (yaml--any (yaml--all (yaml-s-separate n 
c) (yaml-ns-flow-yaml-content n c)) (yaml-e-scalar))))))
+
+(defun yaml-ns-yaml-version ()
+  "Documentation string."
+  (yaml--frame "ns-yaml-version"
+               (yaml--all (yaml--rep 1 nil (lambda () (yaml-ns-dec-digit)))
+                          (yaml--chr ?\.)
+                          (yaml--rep 1 nil (lambda () (yaml-ns-dec-digit))))))
+
+(defun yaml-c-folded ()
+  "Documentation string."
+  (yaml--frame "c-folded" (yaml--chr ?\>)))
+
+(defun yaml-c-directives-end ()
+  "Documentation string."
+  (yaml--frame "c-directives-end"
+    (yaml--all (yaml--chr ?\-)
+               (yaml--chr ?\-)
+               (yaml--chr ?\-))))
+
+(defun yaml-s-double-break (n)
+  "Documentation string."
+  (yaml--frame "s-double-break"
+               (yaml--any (yaml-s-double-escaped n)
+                          (yaml-s-flow-folded n))))
+
+(defun yaml-s-nb-spaced-text (n)
+  "Documentation string."
+  (yaml--frame "s-nb-spaced-text"
+               (yaml--all (yaml-s-indent n)
+                          (yaml-s-white)
+                          (yaml--rep2 0 nil (lambda () (yaml-nb-char))))))
+
+(defun yaml-l-folded-content (n t)
+  "Documentation string."
+  (yaml--frame "l-folded-content"
+               (yaml--all (yaml--rep 0 1 (lambda () (yaml--all 
(yaml-l-nb-diff-lines n)
+                                                               
(yaml-b-chomped-last (yaml--state-t)))))
+                          (yaml-l-chomped-empty n (yaml--state-t)))))
+
+(defun yaml-nb-ns-plain-in-line (c)
+  "Documentation string."
+  (yaml--frame "nb-ns-plain-in-line"
+    (yaml--rep2 0 nil (lambda ()
+                        (yaml--all (yaml--rep2 0 nil (lambda () 
(yaml-s-white)))
+                                   (yaml-ns-plain-char c))))))
+
+(defun yaml-nb-single-multi-line (n)
+  "Documentation string."
+  (yaml--frame "nb-single-multi-line"
+               (yaml--all (yaml-nb-ns-single-in-line)
+                          (yaml--any (yaml-s-single-next-line n)
+                                     (yaml--rep2 0 nil (lambda () 
(yaml-s-white)))))))
+
+(defun yaml-l-document-suffix ()
+  "Documentation string."
+  (yaml--frame "l-document-suffix"
+               (yaml--all (yaml-c-document-end)
+                          (yaml-s-l-comments))))
+
+(defun yaml-c-sequence-start ()
+  "Documentation string."
+  (yaml--frame "c-sequence-start"
+               (yaml--chr ?\[)))
+
+(defun yaml-ns-l-block-map-entry (n)
+  "Documentation string."
+  (yaml--frame "ns-l-block-map-entry"
+               (yaml--any (yaml-c-l-block-map-explicit-entry n)
+                          (yaml-ns-l-block-map-implicit-entry n))))
+
+(defun yaml-ns-l-compact-mapping (n)
+  "Documentation string."
+  (yaml--frame "ns-l-compact-mapping"
+               (yaml--all (yaml-ns-l-block-map-entry n)
+                          (yaml--rep2 0 nil (lambda () (yaml--all 
(yaml-s-indent n)
+                                                                  
(yaml-ns-l-block-map-entry n)))))))
+
+(defun yaml-ns-esc-space ()
+  "Documentation string."
+  (yaml--frame "ns-esc-space"
+               (yaml--chr ?\x20)))
+
+(defun yaml-ns-esc-vertical-tab ()
+  "Documentation string."
+  (yaml--frame "ns-esc-vertical-tab"
+               (yaml--chr ?v)))
+
+(defun yaml-ns-s-implicit-yaml-key (c)
+  "Documentation string."
+  (yaml--frame "ns-s-implicit-yaml-key"
+               (yaml--all (yaml--max 1024)
+                          (yaml-ns-flow-yaml-node nil c)
+                          (yaml--rep 0 1 (lambda () 
(yaml-s-separate-in-line))))))
+
+(defun yaml-b-l-folded (n c)
+  "Documentation string."
+  (yaml--frame "b-l-folded"
+               (yaml--any (yaml-b-l-trimmed n c)
+                          (yaml-b-as-space))))
+
+(defun yaml-s-l+block-collection (n c)
+  "Documentation string."
+  (yaml--frame "s-l+block-collection"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml-s-separate (+ n 1) c)
+                                                    (yaml-c-ns-properties (+ n 
1) c))))
+               (yaml-s-l-comments)
+               (yaml--any (yaml-l+block-sequence (yaml-seq-spaces n c))
+                          (yaml-l+block-mapping n)))))
+
+(defun yaml-c-quoted-quote ()
+  "Documentation string."
+  (yaml--frame "c-quoted-quote"
+               (yaml--all (yaml--chr ?\')
+                          (yaml--chr ?\'))))
+
+(defun yaml-l+block-sequence (n)
+  "Documentation string."
+  (yaml--frame "l+block-sequence"
+               (yaml--all (yaml--set m (yaml--auto-detect-indent n))
+                          (yaml--rep 1 nil (lambda () (yaml--all 
(yaml-s-indent (+ n (yaml--state-m)))
+                                                                 
(yaml-c-l-block-seq-entry (+ n (yaml--state-m)))))))))
+
+(defun yaml-c-double-quote ()
+  "Documentation string."
+  (yaml--frame "c-double-quote" (yaml--chr ?\")))
+
+(defun yaml-ns-esc-backspace ()
+  "Documentation string."
+  (yaml--frame "ns-esc-backspace" (yaml--chr ?b)))
+
+(defun yaml-c-flow-json-content (n c)
+  "Documentation string."
+  (yaml--frame "c-flow-json-content"
+               (yaml--any (yaml-c-flow-sequence n c)
+                          (yaml-c-flow-mapping n c)
+                          (yaml-c-single-quoted n c)
+                          (yaml-c-double-quoted n c))))
+
+(defun yaml-c-mapping-end ()
+  "Documentation string."
+  (yaml--frame "c-mapping-end" (yaml--chr ?\})))
+
+(defun yaml-nb-single-char ()
+  "Documentation string."
+  (yaml--frame "nb-single-char"
+               (yaml--any (yaml-c-quoted-quote)
+                          (yaml--but (lambda () (yaml-nb-json)) (lambda () 
(yaml--chr ?\'))))))
+
+(defun yaml-ns-flow-node (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-node"
+               (yaml--any (yaml-c-ns-alias-node)
+                          (yaml-ns-flow-content n c)
+                          (yaml--all (yaml-c-ns-properties n c)
+                                     (yaml--any (yaml--all (yaml-s-separate n 
c) (yaml-ns-flow-content n c))
+                                                (yaml-e-scalar))))))
+
+(defun yaml-c-non-specific-tag ()
+  "Documentation string."
+  (yaml--frame "c-non-specific-tag"
+               (yaml--chr ?\!)))
+
+(defun yaml-l-directive-document ()
+  "Documentation string."
+  (yaml--frame "l-directive-document"
+               (yaml--all (yaml--rep 1 nil (lambda () (yaml-l-directive)))
+                          (yaml-l-explicit-document))))
+
+(defun yaml-c-l-block-map-explicit-entry (n)
+  "Documentation string."
+  (yaml--frame "c-l-block-map-explicit-entry"
+               (yaml--all (yaml-c-l-block-map-explicit-key n)
+                          (yaml--any (yaml-l-block-map-explicit-value n)
+                                     (yaml-e-node)))))
+
+(defun yaml-e-node ()
+  "Documentation string."
+  (yaml--frame "e-node" (yaml-e-scalar)))
+
+(defun yaml-seq-spaces (n c)
+  "Documentation string."
+  (yaml--frame "seq-spaces"
+               (cond ((equal c "block-in") n)
+                     ((equal c "block-out") (yaml--sub n 1)))))
+
+
+(defun yaml-l-yaml-stream ()
+  "Documentation string."
+  (yaml--frame "l-yaml-stream"
+               (yaml--all (yaml--rep2 0 nil (lambda () 
(yaml-l-document-prefix)))
+                          (yaml--rep 0 1 (lambda () (yaml-l-any-document)))
+                          (yaml--rep2 0 nil (lambda ()
+                                              (yaml--any (yaml--all (yaml--rep 
1 nil (lambda () (yaml-l-document-suffix)))
+                                                                    
(yaml--rep2 0 nil (lambda () (yaml-l-document-prefix)))
+                                                                    (yaml--rep 
0 1 (lambda () (yaml-l-any-document))))
+                                                         (yaml--all 
(yaml--rep2 0 nil (lambda () (yaml-l-document-prefix)))
+                                                                    (yaml--rep 
0 1 (lambda () (yaml-l-explicit-document))))))))))
+
+(defun yaml-nb-double-one-line ()
+  "Documentation string."
+  (yaml--frame "nb-double-one-line"
+               (yaml--rep2 0 nil (lambda () (yaml-nb-double-char)))))
+
+(defun yaml-s-l-comments ()
+  "Documentation string."
+  (yaml--frame "s-l-comments" (yaml--all (yaml--any (yaml-s-b-comment)
+                                                    (yaml--start-of-line))
+                                         (yaml--rep2 0 nil (lambda () 
(yaml-l-comment))))))
+
+(defun yaml-nb-char ()
+  "Documentation string."
+  (yaml--frame "nb-char"
+               (yaml--but (lambda () (yaml-c-printable))
+                          (lambda () (yaml-b-char))
+                          (lambda () (yaml-c-byte-order-mark)))))
+
+(defun yaml-ns-plain-first (c)
+  "Documentation string."
+  (yaml--frame "ns-plain-first"
+               (yaml--any (yaml--but (lambda () (yaml-ns-char))
+                                     (lambda () (yaml-c-indicator)))
+                          (yaml--all (yaml--any (yaml--chr ?\?)
+                                                (yaml--chr ?\:)
+                                                (yaml--chr ?\-))
+                                     (yaml--chk "=" (yaml-ns-plain-safe c))))))
+
+(defun yaml-c-ns-esc-char ()
+  "Documentation string."
+  (yaml--frame "c-ns-esc-char"
+    (yaml--all (yaml--chr ?\\)
+               (yaml--any (yaml-ns-esc-null)
+                          (yaml-ns-esc-bell)
+                          (yaml-ns-esc-backspace)
+                          (yaml-ns-esc-horizontal-tab)
+                          (yaml-ns-esc-line-feed)
+                          (yaml-ns-esc-vertical-tab)
+                          (yaml-ns-esc-form-feed)
+                          (yaml-ns-esc-carriage-return)
+                          (yaml-ns-esc-escape)
+                          (yaml-ns-esc-space)
+                          (yaml-ns-esc-double-quote)
+                          (yaml-ns-esc-slash)
+                          (yaml-ns-esc-backslash)
+                          (yaml-ns-esc-next-line)
+                          (yaml-ns-esc-non-breaking-space)
+                          (yaml-ns-esc-line-separator)
+                          (yaml-ns-esc-paragraph-separator)
+                          (yaml-ns-esc-8-bit)
+                          (yaml-ns-esc-16-bit)
+                          (yaml-ns-esc-32-bit)))))
+
+(defun yaml-ns-flow-map-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-map-entry"
+    (yaml--any (yaml--all (yaml--chr ?\?)
+                          (yaml-s-separate n c)
+                          (yaml-ns-flow-map-explicit-entry n c))
+               (yaml-ns-flow-map-implicit-entry n c))))
+
+(defun yaml-l-explicit-document ()
+  "Documentation string."
+  (yaml--frame "l-explicit-document"
+    (yaml--all (yaml-c-directives-end)
+               (yaml--any (yaml-l-bare-document)
+                          (yaml--all (yaml-e-node)
+                                     (yaml-s-l-comments))))))
+
+(defun yaml-s-white ()
+  "Documentation string."
+  (yaml--frame "s-white"
+    (yaml--any (yaml-s-space)
+               (yaml-s-tab))))
+
+(defun yaml-l-keep-empty (n)
+  "Documentation string."
+  (yaml--frame "l-keep-empty"
+    (yaml--all (yaml--rep2 0 nil (lambda () (yaml-l-empty n "block-in")))
+               (yaml--rep 0 1 (lambda () (yaml-l-trail-comments n))))))
+
+(defun yaml-ns-tag-prefix ()
+  "Documentation string."
+  (yaml--frame "ns-tag-prefix"
+    (yaml--any (yaml-c-ns-local-tag-prefix)
+               (yaml-ns-global-tag-prefix))))
+
+(defun yaml-c-l+folded (n)
+  "Documentation string."
+  (yaml--frame "c-l+folded"
+    (yaml--all (yaml--chr ?\>) (yaml-c-b-block-header (yaml--state-m) 
(yaml--state-t))
+               (yaml-l-folded-content (+ n (yaml--state-m)) (yaml--state-t)))))
+
+(defun yaml-ns-directive-name ()
+  "Documentation string."
+  (yaml--frame "ns-directive-name"
+    (yaml--rep 1 nil (lambda () (yaml-ns-char)))))
+
+(defun yaml-b-char ()
+  "Documentation string."
+  (yaml--frame "b-char"
+    (yaml--any (yaml-b-line-feed)
+               (yaml-b-carriage-return))))
+
+(defun yaml-ns-plain-multi-line (n c)
+  "Documentation string."
+  (yaml--frame "ns-plain-multi-line"
+    (yaml--all (yaml-ns-plain-one-line c)
+               (yaml--rep2 0 nil (lambda () (yaml-s-ns-plain-next-line n 
c))))))
+
+(defun yaml-ns-char ()
+  "Documentation string."
+  (yaml--frame "ns-char"
+    (yaml--but (lambda () (yaml-nb-char))
+               (lambda () (yaml-s-white)))))
+
+(defun yaml-s-space ()
+  "Documentation string."
+  (yaml--frame "s-space" (yaml--chr ?\x20)))
+
+(defun yaml-c-l-block-seq-entry (n)
+  "Documentation string."
+  (yaml--frame "c-l-block-seq-entry"
+    (yaml--all (yaml--chr ?\-)
+               (yaml--chk "!" (yaml-ns-char))
+               (yaml-s-l+block-indented n "block-in"))))
+
+(defun yaml-c-ns-properties (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-properties"
+    (yaml--any (yaml--all (yaml-c-ns-tag-property)
+                          (yaml--rep 0 1 (lambda () (yaml--all 
(yaml-s-separate n c)
+                                                               
(yaml-c-ns-anchor-property)))))
+               (yaml--all (yaml-c-ns-anchor-property)
+                          (yaml--rep 0 1 (lambda () (yaml--all 
(yaml-s-separate n c)
+                                                               
(yaml-c-ns-tag-property))))))))
+
+(defun yaml-ns-directive-parameter ()
+  "Documentation string."
+  (yaml--frame "ns-directive-parameter"
+    (yaml--rep 1 nil (lambda () (yaml-ns-char)))))
+
+(defun yaml-c-chomping-indicator (t)
+  "Documentation string."
+  (yaml--frame "c-chomping-indicator"
+    (yaml--any (yaml--set t (yaml-strip))
+               (yaml--set t (yaml-keep))
+               (yaml--set t (yaml-clip)))))
+
+(defun yaml-ns-global-tag-prefix ()
+  "Documentation string."
+  (yaml--frame "ns-global-tag-prefix"
+    (yaml--all (yaml-ns-tag-char)
+               (yaml--rep2 0 nil (lambda () (yaml-ns-uri-char))))))
+
+(defun yaml-c-ns-flow-pair-json-key-entry (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-pair-json-key-entry"
+    (yaml--all (yaml-c-s-implicit-json-key (yaml-flow-key))
+               (yaml-c-ns-flow-map-adjacent-value n c))))
+
+(defun yaml-l-literal-content (n t)
+  "Documentation string."
+  (yaml--frame "l-literal-content"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml-l-nb-literal-text n) 
(yaml--rep2 0 nil (lambda () (yaml-b-nb-literal-next n))) (yaml-b-chomped-last 
(yaml--state-t)))))
+               (yaml-l-chomped-empty n (yaml--state-t)))))
+
+(defun yaml-c-document-end ()
+  "Documentation string."
+  (yaml--frame "c-document-end"
+    (yaml--all (yaml--chr ?\.) (yaml--chr ?\.) (yaml--chr ?\.))))
+
+(defun yaml-nb-double-text (n c)
+  "Documentation string."
+  (yaml--frame "nb-double-text"
+    (cond ((equal c "block-key") (yaml-nb-double-one-line))
+          ((equal c "flow-in") (yaml-nb-double-multi-line n))
+          ((equal c "flow-key") (yaml-nb-double-one-line))
+          ((equal c "flow-out") (yaml-nb-double-multi-line n)))))
+
+(defun yaml-s-b-comment ()
+  "Documentation string."
+  (yaml--frame "s-b-comment"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml-s-separate-in-line)
+                                                    (yaml--rep 0 1 (lambda () 
(yaml-c-nb-comment-text))))))
+               (yaml-b-comment))))
+
+(defun yaml-s-block-line-prefix (n)
+  "Documentation string."
+  (yaml--frame "s-block-line-prefix"
+    (yaml-s-indent n)))
+
+(defun yaml-c-tag-handle ()
+  "Documentation string."
+  (yaml--frame "c-tag-handle"
+    (yaml--any (yaml-c-named-tag-handle)
+               (yaml-c-secondary-tag-handle)
+               (yaml-c-primary-tag-handle))))
+
+(defun yaml-ns-plain-one-line (c)
+  "Documentation string."
+  (yaml--frame "ns-plain-one-line"
+    (yaml--all (yaml-ns-plain-first c)
+               (yaml-nb-ns-plain-in-line c))))
+
+(defun yaml-nb-json ()
+  "Documentation string."
+  (yaml--frame "nb-json"
+    (yaml--any (yaml--chr ?\x09) (yaml--chr-range ?\x20 ?\x10FFFF))))
+
+(defun yaml-s-ns-plain-next-line (n c)
+  "Documentation string."
+  (yaml--frame "s-ns-plain-next-line"
+    (yaml--all (yaml-s-flow-folded n)
+               (yaml-ns-plain-char c)
+               (yaml-nb-ns-plain-in-line c))))
+
+(defun yaml-c-reserved ()
+  "Documentation string."
+  (yaml--frame "c-reserved"
+    (yaml--any (yaml--chr ?\@) (yaml--chr ?\`))))
+
+(defun yaml-b-l-trimmed (n c)
+  "Documentation string."
+  (yaml--frame "b-l-trimmed"
+    (yaml--all (yaml-b-non-content)
+               (yaml--rep 1 nil (lambda () (yaml-l-empty n c))))))
+
+(defun yaml-l-document-prefix ()
+  "Documentation string."
+  (yaml--frame "l-document-prefix"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml-c-byte-order-mark)))
+               (yaml--rep2 0 nil (lambda () (yaml-l-comment))))))
+
+(defun yaml-c-byte-order-mark ()
+  "Documentation string."
+  (yaml--frame "c-byte-order-mark"
+    (yaml--chr ?\xFEFF)))
+
+(defun yaml-c-anchor ()
+  "Documentation string."
+  (yaml--frame "c-anchor"
+    (yaml--chr ?\&)))
+
+(defun yaml-s-double-escaped (n)
+  "Documentation string."
+  (yaml--frame "s-double-escaped"
+    (yaml--all (yaml--rep2 0 nil (lambda () (yaml-s-white)))
+               (yaml--chr ?\\)
+               (yaml-b-non-content)
+               (yaml--rep2 0 nil (lambda () (yaml-l-empty n "flow-in")))
+               (yaml-s-flow-line-prefix n))))
+
+(defun yaml-ns-esc-32-bit ()
+  "Documentation string."
+  (yaml--frame "ns-esc-32-bit"
+    (yaml--all
+     (yaml--chr ?U)
+     (yaml--rep 8 8 #'yaml-ns-hex-digit))))
+
+(defun yaml-b-non-content ()
+  "Documentation string."
+  (yaml--frame "b-non-content" (yaml-b-break)))
+
+(defun yaml-ns-tag-char ()
+  "Documentation string."
+  (yaml--frame "ns-tag-char"
+    (yaml--but (lambda () (yaml-ns-uri-char))
+               (lambda () (yaml--chr ?\!))
+               (lambda () (yaml-c-flow-indicator)))))
+
+(defun yaml-b-carriage-return ()
+  "Documentation string."
+  (yaml--frame "b-carriage-return"
+    (yaml--chr ?\x0D)))
+
+(defun yaml-s-double-next-line (n)
+  "Documentation string."
+  (yaml--frame "s-double-next-line"
+    (yaml--all (yaml-s-double-break n)
+               (yaml--rep 0 1 (lambda () (yaml--all (yaml-ns-double-char)
+                                                    (yaml-nb-ns-double-in-line)
+                                                    (yaml--any 
(yaml-s-double-next-line n)
+                                                               (yaml--rep2 0 
nil (lambda () (yaml-s-white))))))))))
+
+(defun yaml-ns-esc-non-breaking-space ()
+  "Documentation string."
+  (yaml--frame "ns-esc-non-breaking-space"
+    (yaml--chr ?\_)))
+
+(defun yaml-l-nb-diff-lines (n)
+  "Documentation string."
+  (yaml--frame "l-nb-diff-lines"
+    (yaml--all (yaml-l-nb-same-lines )
+               (yaml--rep2 0 nil (lambda () (yaml--all (yaml-b-as-line-feed) 
(yaml-l-nb-same-lines n)))))))
+
+(defun yaml-s-flow-folded (n)
+  "Documentation string."
+  (yaml--frame "s-flow-folded"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml-s-separate-in-line)))
+               (yaml-b-l-folded n "flow-in")
+               (yaml-s-flow-line-prefix n))))
+
+(defun yaml-ns-flow-map-explicit-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-map-explicit-entry"
+    (yaml--any (yaml-ns-flow-map-implicit-entry n c)
+               (yaml--all (yaml-e-node) (yaml-e-node)))))
+
+(defun yaml-ns-l-block-map-implicit-entry (n)
+  "Documentation string."
+  (yaml--frame "ns-l-block-map-implicit-entry"
+    (yaml--all (yaml--any (yaml-ns-s-block-map-implicit-key)
+                          (yaml-e-node))
+               (yaml-c-l-block-map-implicit-value n))))
+
+(defun yaml-l-nb-folded-lines (n)
+  "Documentation string."
+  (yaml--frame "l-nb-folded-lines"
+    (yaml--all (yaml-s-nb-folded-text n)
+               (yaml--rep2 0 nil (lambda () (yaml--all (yaml-b-l-folded n 
"block-in")
+                                                       (yaml-s-nb-folded-text 
n)))))))
+
+(defun yaml-c-l-block-map-explicit-key (n)
+  "Documentation string."
+  (yaml--frame "c-l-block-map-explicit-key"
+    (yaml--all (yaml--chr ?\?)
+               (yaml-s-l+block-indented n "block-out"))))
+
+(defun yaml-s-separate (n c)
+  "Documentation string."
+  (yaml--frame "s-separate"
+    (cond ((equal c "block-in") (yaml-s-separate-lines n))
+          ((equal c "block-key") (yaml-s-separate-in-line))
+          ((equal c "block-out") (yaml-s-separate-lines n))
+          ((equal c "flow-in") (yaml-s-separate-lines n))
+          ((equal c "flow-key") (yaml-s-separate-in-line))
+          ((equal c "flow-out") (yaml-s-separate-lines n)))))
+
+(defun yaml-ns-flow-pair-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-pair-entry"
+    (yaml--any (yaml-ns-flow-pair-yaml-key-entry n c)
+               (yaml-c-ns-flow-map-empty-key-entry n c)
+               (yaml-c-ns-flow-pair-json-key-entry n c))))
+
+(defun yaml-c-flow-indicator ()
+  "Documentation string."
+  (yaml--frame "c-flow-indicator"
+    (yaml--any (yaml--chr ?\,)
+               (yaml--chr ?\[)
+               (yaml--chr ?\])
+               (yaml--chr ?\{)
+               (yaml--chr ?\}))))
+
+(defun yaml-ns-flow-pair-yaml-key-entry (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-pair-yaml-key-entry"
+    (yaml--all (yaml-ns-s-implicit-yaml-key (yaml-flow-key))
+               (yaml-c-ns-flow-map-separate-value n c))))
+
+(defun yaml-e-scalar ()
+  "Documentation string."
+  (yaml--frame "e-scalar"
+    (yaml--empty)))
+
+(defun yaml-s-indent-lt (n)
+  "Documentation string."
+  (yaml--frame "s-indent-lt"
+    (yaml--may (yaml--all (yaml--rep2 0 nil (lambda () (yaml-s-space)))
+                          (< (length (yaml--match)) n)))))
+
+(defun yaml-nb-single-one-line ()
+  "Documentation string."
+  (yaml--frame "nb-single-one-line"
+    (yaml--rep2 0 nil (lambda () (yaml-nb-single-char)))))
+
+(defun yaml-c-collect-entry ()
+  "Documentation string."
+  (yaml--frame "c-collect-entry" (yaml--chr ?\,)))
+
+(defun yaml-ns-l-compact-sequence (n)
+  "Documentation string."
+  (yaml--frame "ns-l-compact-sequence"
+    (yaml--all (yaml-c-l-block-seq-entry n)
+               (yaml--rep2 0 nil (lambda () (yaml--all (yaml-s-indent n)
+                                                       
(yaml-c-l-block-seq-entry n)))))))
+
+(defun yaml-c-comment ()
+  "Documentation string."
+  (yaml--frame "c-comment" (yaml--chr ?\#)))
+
+(defun yaml-s-line-prefix (n c)
+  "Documentation string."
+  (yaml--frame "s-line-prefix"
+    (cond ((equal c "block-in") (yaml-s-block-line-prefix n))
+          ((equal c "block-out") (yaml-s-block-line-prefix n))
+          ((equal c "flow-in") (yaml-s-flow-line-prefix n))
+          ((equal c "flow-out") (yaml-s-flow-line-prefix n)))))
+
+(defun yaml-s-tab ()
+  "Documentation string."
+  (yaml--frame "s-tab" (yaml--chr ?\x09)))
+
+(defun yaml-c-directive ()
+  "Documentation string."
+  (yaml--frame "c-directive" (yaml--chr ?\%)))
+
+(defun yaml-ns-flow-pair (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-pair"
+    (yaml--any (yaml--all (yaml--chr ?\?)
+                          (yaml-s-separate n c)
+                          (yaml-ns-flow-map-explicit-entry n c))
+               (yaml-ns-flow-pair-entry n c))))
+
+(defun yaml-s-l+block-indented (n c)
+  "Documentation string."
+  (yaml--frame "s-l+block-indented"
+    (yaml--any (yaml--all (yaml-s-indent (yaml--state-m))
+                          (yaml--any (yaml-ns-l-compact-sequence (+ n (+ 1 
(yaml--state-m))))
+                                     (yaml-ns-l-compact-mapping (+ n (+ 1 
(yaml--state-m))))))
+               (yaml-s-l+block-node n c)
+               (yaml--all (yaml-e-node)
+                          (yaml-s-l-comments)))))
+
+(defun yaml-c-single-quote ()
+  "Documentation string."
+  (yaml--frame "c-single-quote"
+    (yaml--chr ?\')))
+
+(defun yaml-s-flow-line-prefix (n)
+  "Documentation string."
+  (yaml--frame "s-flow-line-prefix"
+    (yaml--all (yaml-s-indent n)
+               (yaml--rep 0 1 (lambda () (yaml-s-separate-in-line))))))
+
+(defun yaml-nb-double-char ()
+  "Documentation string."
+  (yaml--frame "nb-double-char"
+    (yaml--any (yaml-c-ns-esc-char)
+               (yaml--but (lambda () (yaml-nb-json))
+                          (lambda () (yaml--chr ?\\))
+                          (lambda () (yaml--chr ?\"))))))
+
+(defun yaml-l-comment ()
+  "Documentation string."
+  (yaml--frame "l-comment"
+    (yaml--all (yaml-s-separate-in-line)
+               (yaml--rep 0 1 (lambda () (yaml-c-nb-comment-text)))
+               (yaml-b-comment))))
+
+(defun yaml-ns-hex-digit ()
+  "Documentation string."
+  (yaml--frame "ns-hex-digit"
+    (yaml--any (yaml-ns-dec-digit)
+               (yaml--chr-range ?\x41 ?\x46)
+               (yaml--chr-range ?\x61 ?\x66))))
+
+(defun yaml-s-l+flow-in-block (n)
+  "Documentation string."
+  (yaml--frame "s-l+flow-in-block"
+    (yaml--all (yaml-s-separate (+ n 1) "flow-out")
+               (yaml-ns-flow-node (+ n 1) "flow-out")
+               (yaml-s-l-comments))))
+
+(defun yaml-s-l+flow-in-block (n)
+  "Documentation string."
+  (yaml--frame "s-l+flow-in-block"
+    (yaml--all (yaml-s-separate (+ n 1) "flow-out")
+               (yaml-ns-flow-node (+ n 1) "flow-out")
+               (yaml-s-l-comments))))
+
+(defun yaml-c-flow-json-node (n c)
+  "Documentation string."
+  (yaml--frame "c-flow-json-node"
+    (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml-c-ns-properties n c) 
(yaml-s-separate n c))))
+               (yaml-c-flow-json-content n c))))
+
+(defun yaml-c-b-block-header (m t)
+  "Documentation string."
+  (yaml--frame "c-b-block-header"
+    (yaml--all (yaml--any (yaml--all (yaml-c-indentation-indicator 
(yaml--state-m))
+                                     (yaml-c-chomping-indicator 
(yaml--state-t)))
+                          (yaml--all (yaml-c-chomping-indicator 
(yaml--state-t))
+                                     (yaml-c-indentation-indicator 
(yaml--state-m))))
+               (yaml-s-b-comment))))
+
+(defun yaml-ns-esc-8-bit ()
+  "Documentation string."
+  (yaml--frame "ns-esc-8-bit"
+    (yaml--all (yaml--chr ?x)
+               (yaml--rep 2 2 #'yaml-ns-hex-digit))))
+
+(defun yaml-ns-anchor-name ()
+  "Documentation string."
+  (yaml--frame "ns-anchor-name"
+    (yaml--rep 1 nil (lambda () (yaml-ns-anchor-char)))))
+
+(defun yaml-ns-esc-slash ()
+  "Documentation string."
+  (yaml--frame "ns-esc-slash" (yaml--chr ?\/)))
+
+(defun yaml-s-nb-folded-text (n)
+  "Documentation string."
+  (yaml--frame "s-nb-folded-text"
+    (yaml--all (yaml-s-indent n)
+               (yaml-ns-char)
+               (yaml--rep2 0 nil (lambda () (yaml-nb-char))))))
+
+(defun yaml-ns-word-char ()
+  "Documentation string."
+  (yaml--frame "ns-word-char"
+    (yaml--any (yaml-ns-dec-digit)
+               (yaml-ns-ascii-letter)
+               (yaml--chr ?\-))))
+
+(defun yaml-ns-esc-form-feed ()
+  "Documentation string."
+  (yaml--frame "ns-esc-form-feed" (yaml--chr ?\f)))
+
+(defun yaml-ns-s-block-map-implicit-key ()
+  "Documentation string."
+  (yaml--frame "ns-s-block-map-implicit-key"
+    (yaml--any (yaml-c-s-implicit-json-key "block-key")
+               (yaml-ns-s-implicit-yaml-key "block-key"))))
+
+(defun yaml-ns-esc-null ()
+  "Documentation string."
+  (yaml--frame "ns-esc-null" (yaml--chr ?0)))
+
+(defun yaml-c-ns-tag-property ()
+  "Documentation string."
+  (yaml--frame "c-ns-tag-property"
+    (yaml--any (yaml-c-verbatim-tag)
+               (yaml-c-ns-shorthand-tag)
+               (yaml-c-non-specific-tag))))
+
+(defun yaml-c-ns-local-tag-prefix ()
+  "Documentation string."
+  (yaml--frame "c-ns-local-tag-prefix"
+    (yaml--all
+     (yaml--chr ?\!)
+     (yaml--rep2 0 nil (lambda () (yaml-ns-uri-char))))))
+
+(defun yaml-ns-tag-directive ()
+  "Documentation string."
+  (yaml--frame "ns-tag-directive"
+    (yaml--all (yaml--chr ?T)
+               (yaml--chr ?A)
+               (yaml--chr ?G)
+               (yaml-s-separate-in-line)
+               (yaml-c-tag-handle)
+               (yaml-s-separate-in-line)
+               (yaml-ns-tag-prefix))))
+
+(defun yaml-c-flow-mapping (n c)
+  "Documentation string."
+  (yaml--frame "c-flow-mapping"
+    (yaml--all (yaml--chr ?\{)
+               (yaml--rep 0 1 (lambda () (yaml-s-separate n c)))
+               (yaml--rep 0 1 (lambda () (yaml-ns-s-flow-map-entries n 
(yaml-in-flow c))))
+               (yaml--chr ?\}))))
+
+(defun yaml-ns-double-char ()
+  "Documentation string."
+  (yaml--frame "ns-double-char"
+    (yaml--but (lambda () (yaml-nb-double-char))
+               (lambda () (yaml-s-white)))))
+
+(defun yaml-ns-ascii-letter ()
+  "Documentation string."
+  (yaml--frame "ns-ascii-letter"
+    (yaml--any (yaml--chr-range ?\x41 ?\x5A)
+               (yaml--chr-range ?\x61 ?\x7A))))
+
+(defun yaml-b-break ()
+  "Documentation string."
+  (yaml--frame "b-break"
+    (yaml--any
+     (yaml--all (yaml-b-carriage-return)
+                (yaml-b-line-feed))
+     (yaml-b-carriage-return)
+     (yaml-b-line-feed))))
+
+(defun yaml-nb-ns-double-in-line ()
+  "Documentation string."
+  (yaml--frame "nb-ns-double-in-line"
+    (yaml--rep2 0 nil (lambda () (yaml--all (yaml--rep2 0 nil (lambda () 
(yaml-s-white)))
+                                            (yaml-ns-double-char))))))
+
+(defun yaml-s-l+block-node (n c)
+  "Documentation string."
+  (yaml--frame "s-l+block-node"
+    (yaml--any (yaml-s-l+block-in-block n c)
+               (yaml-s-l+flow-in-block n))))
+
+(defun yaml-ns-esc-bell ()
+  "Documentation string."
+  (yaml--frame "ns-esc-bell" (yaml--chr ?a)))
+
+(defun yaml-c-named-tag-handle ()
+  "Documentation string."
+  (yaml--frame "c-named-tag-handle"
+    (yaml--all (yaml--chr ?\!)
+               (yaml--rep 1 nil (lambda () (yaml-ns-word-char)))
+               (yaml--chr ?\!))))
+
+(defun yaml-s-separate-lines (n)
+  "Documentation string."
+  (yaml--frame "s-separate-lines"
+    (yaml--any (yaml--all (yaml-s-l-comments)
+                          (yaml-s-flow-line-prefix n))
+               (yaml-s-separate-in-line))))
+
+(defun yaml-l-directive ()
+  "Documentation string."
+  (yaml--frame "l-directive"
+    (yaml--all (yaml--chr ?\%)
+               (yaml--any (yaml-ns-yaml-directive)
+                          (yaml-ns-tag-directive)
+                          (yaml-ns-reserved-directive))
+               (yaml-s-l-comments))))
+
+(defun yaml-ns-esc-escape ()
+  "Documentation string."
+  (yaml--frame "ns-esc-escape"
+    (yaml--chr ?e)))
+
+(defun yaml-b-nb-literal-next (n)
+  "Documentation string."
+  (yaml--frame "b-nb-literal-next"
+    (yaml--all (yaml-b-as-line-feed)
+               (yaml-l-nb-literal-text n))))
+
+(defun yaml-ns-s-flow-map-entries (n c)
+  "Documentation string."
+  (yaml--frame "ns-s-flow-map-entries"
+    (yaml--all (yaml-ns-flow-map-entry n c)
+               (yaml--rep 0 1 (lambda () (yaml-s-separate n c)))
+               (yaml--rep 0 1 (lambda () (yaml--all (yaml--chr ?\,)
+                                                    (yaml--rep 0 1 (lambda () 
(yaml-s-separate n c)))
+                                                    (yaml--rep 0 1 (lambda () 
(yaml-ns-s-flow-map-entries n c)))))))))
+
+(defun yaml-c-nb-comment-text ()
+  "Documentation string."
+  (yaml--frame "c-nb-comment-text"
+    (yaml--all (yaml--chr ?\#)
+               (yaml--rep2 0 nil (lambda () (yaml-nb-char))))))
+
+(defun yaml-ns-dec-digit ()
+  "Documentation string."
+  (yaml--frame "ns-dec-digit"
+    (yaml--chr-range ?\x30 ?\x39)))
+
+(defun yaml-ns-yaml-directive ()
+  "Documentation string."
+  (yaml--frame "ns-yaml-directive"
+    (yaml--all (yaml--chr ?Y)
+               (yaml--chr ?A)
+               (yaml--chr ?M)
+               (yaml--chr ?L)
+               (yaml-s-separate-in-line)
+               (yaml-ns-yaml-version))))
+
+(defun yaml-c-mapping-key ()
+  "Documentation string."
+  (yaml--frame "c-mapping-key"
+    (yaml--chr ?\?)))
+
+(defun yaml-b-as-line-feed ()
+  "Documentation string."
+  (yaml--frame "b-as-line-feed"
+    (yaml-b-break)))
+
+(defun yaml-s-l+block-in-block (n c)
+  "Documentation string."
+  (yaml--frame "s-l+block-in-block"
+    (yaml--any (yaml-s-l+block-scalar n c)
+               (yaml-s-l+block-collection n c))))
+
+(defun yaml-ns-esc-paragraph-separator ()
+  "Documentation string."
+  (yaml--frame "ns-esc-paragraph-separator"
+    (yaml--chr ?\P)))
+
+(defun yaml-c-double-quoted (n c)
+  "Documentation string."
+  (yaml--frame "c-double-quoted"
+    (yaml--all (yaml--chr ?\")
+               (yaml-nb-double-text n c)
+               (yaml--chr ?\"))))
+
+(defun yaml-b-line-feed ()
+  "Documentation string."
+  (yaml--frame "b-line-feed"
+    (yaml--chr ?\x0A)))
+
+(defun yaml-ns-esc-horizontal-tab ()
+  "Documentation string."
+  (yaml--frame "ns-esc-horizontal-tab"
+    (yaml--any (yaml--chr ?t)
+               (yaml--chr ?\x09))))
+
+(defun yaml-c-ns-flow-map-empty-key-entry (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-map-empty-key-entry"
+    (yaml--all (yaml-e-node)
+               (yaml-c-ns-flow-map-separate-value n c))))
+
+(defun yaml-l-any-document ()
+  "Documentation string."
+  (yaml--frame "l-any-document"
+    (yaml--any (yaml-l-directive-document)
+               (yaml-l-explicit-document)
+               (yaml-l-bare-document))))
+
+(defun yaml-c-tag ()
+  "Documentation string."
+  (yaml--frame "c-tag"
+    (yaml--chr ?\!)))
+
+(defun yaml-c-escape ()
+  "Documentation string."
+  (yaml--frame "c-escape"
+    (yaml--chr ?\\)))
+
+(defun yaml-c-sequence-end ()
+  "Documentation string."
+  (yaml--frame "c-sequence-end"
+    (yaml--chr ?\])))
+
+(defun yaml-l+block-mapping (n)
+  "Documentation string."
+  (yaml--frame "l+block-mapping"
+    (yaml--all (yaml--set m (yaml--auto-detect-indent n))
+               (yaml--rep 1 nil (lambda () (yaml--all (yaml-s-indent (+ n 
(yaml--state-m)))
+                                                      
(yaml-ns-l-block-map-entry (+ n (yaml--state-m)))))))))
+
+(defun yaml-c-ns-flow-map-adjacent-value (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-map-adjacent-value"
+    (yaml--all (yaml--chr ?\:)
+               (yaml--any (yaml--all (yaml--rep 0 1 (lambda () 
(yaml-s-separate n c)))
+                                     (yaml-ns-flow-node n c))
+                          (yaml-e-node)))))
+
+(defun yaml-s-single-next-line (n)
+  "Documentation string."
+  (yaml--frame "s-single-next-line"
+    (yaml--all (yaml-s-flow-folded n)
+               (yaml--rep 0 1 (lambda () (yaml--all (yaml-ns-single-char)
+                                                    (yaml-nb-ns-single-in-line)
+                                                    (yaml--any 
(yaml-s-single-next-line n)
+                                                               (yaml--rep2 0 
nil (lambda () (yaml-s-white))))))))))
+
+(defun yaml-s-separate-in-line ()
+  "Documentation string."
+  (yaml--frame "s-separate-in-line"
+    (yaml--any (yaml--rep 1 nil (lambda () (yaml-s-white)))
+               (yaml--start-of-line))))
+
+(defun yaml-b-comment ()
+  "Documentation string."
+  (yaml--frame "b-comment"
+    (yaml--any (yaml-b-non-content)
+               (yaml--end-of-stream))))
+
+(defun yaml-ns-esc-backslash ()
+  "Documentation string."
+  (yaml--frame "ns-esc-backslash"
+    (yaml--chr ?\\)))
+
+(defun yaml-c-ns-anchor-property ()
+  "Documentation string."
+  (yaml--frame "c-ns-anchor-property"
+    (yaml--all (yaml--chr ?\&)
+               (yaml-ns-anchor-name))))
+
+(defun yaml-ns-plain-safe (c)
+  "Documentation string."
+  (yaml--frame "ns-plain-safe"
+    (cond ((equal c "block-key") (yaml-ns-plain-safe-out))
+          ((equal c "flow-in") (yaml-ns-plain-safe-in))
+          ((equal c "flow-key") (yaml-ns-plain-safe-in))
+          ((equal c "flow-out") (yaml-ns-plain-safe-out)))))
+
+(defun yaml-ns-flow-content (n c)
+  "Documentation string."
+  (yaml--frame "ns-flow-content"
+    (yaml--any (yaml-ns-flow-yaml-content n c)
+               (yaml-c-flow-json-content n c))))
+
+
+(defun yaml-c-ns-flow-map-separate-value (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-map-separate-value"
+    (yaml--all (yaml--chr ?\:)
+               (yaml--chk "!" ((yaml-ns-plain-safe) c))
+               (yaml--any (yaml--all (yaml-s-separate n c) (yaml-ns-flow-node 
n c)) (yaml-e-node)))))
+
+(defun yaml-c-ns-flow-map-separate-value
+    (n c)
+  "Documentation string."
+  (yaml--frame "c-ns-flow-map-separate-value"
+    (yaml--all (yaml--chr ?\:)
+               (yaml--chk "!" (yaml-ns-plain-safe c))
+               (yaml--any (yaml--all (yaml-s-separate n c)
+                                     (yaml-ns-flow-node n c))
+                          (yaml-e-node)))))
+
+(defun yaml-in-flow (c)
+  "Documentation string."
+  (yaml--frame "in-flow"
+    (cond ((equal c "block-key") "flow-key")
+          ((equal c "flow-in") "flow-in")
+          ((equal c "flow-key") "flow-key")
+          ((equal c "flow-out") "flow-in"))))
+
+(defun yaml-c-verbatim-tag ()
+  "Documentation string."
+  (yaml--frame "c-verbatim-tag"
+    (yaml--all (yaml--chr ?\!)
+               (yaml--chr ?\<)
+               (yaml--rep 1 nil (lambda () (yaml-ns-uri-char)))
+               (yaml--chr ?\>))))
+
+(defun yaml-c-literal ()
+  "Documentation string."
+  (yaml--frame "c-literal" (yaml--chr ?\|)))
+
+(defun yaml-ns-esc-line-feed ()
+  "Documentation string."
+  (yaml--frame "ns-esc-line-feed"
+    (yaml--chr ?n)))
+
+(defun yaml-nb-double-multi-line (n)
+  "Documentation string."
+  (yaml--frame "nb-double-multi-line"
+    (yaml--all (yaml-nb-ns-double-in-line)
+               (yaml--any (yaml-s-double-next-line n)
+                          (yaml--rep2 0 nil (lambda () (yaml-s-white)))))))
+
+(defun yaml-b-l-spaced (n)
+  "Documentation string."
+  (yaml--frame "b-l-spaced"
+    (yaml--all (yaml-b-as-line-feed)
+               (yaml--rep2 0 nil (lambda () (yaml-l-empty n "block-in"))))))
 
 (provide 'yaml)
 

Reply via email to