branch: externals/yaml
commit 73a9f5356284716a123952ce194c14ad9d183444
Merge: cd3edfc02c 706518f5f4
Author: Zachary Romero <zacrom...@posteo.net>
Commit: GitHub <nore...@github.com>

    Merge pull request #59 from zkry/speed-up-byte-compilation
    
    Speed up byte compilation by removing macro usage
---
 .github/workflows/test.yml |    8 +-
 yaml.el                    | 3147 ++++++++++++++++++++++----------------------
 2 files changed, 1574 insertions(+), 1581 deletions(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 87feac739d..e920f2fec3 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -7,14 +7,8 @@ jobs:
     steps:
     - uses: purcell/setup-emacs@master
       with:
-        version: 26.3
+        version: 27.2
     - uses: actions/checkout@v2
     - name: Run tests
       run: |
         emacs -Q --batch -L . -l *-tests.el -f ert-run-tests-batch-and-exit
-    - uses: purcell/setup-emacs@master
-      with:
-        version: 25.1
-    - name: Run tests
-      run: |
-        emacs -Q --batch -L . -l *-tests.el -f ert-run-tests-batch-and-exit
diff --git a/yaml.el b/yaml.el
index 12d8618a87..2b830b9464 100644
--- a/yaml.el
+++ b/yaml.el
@@ -3,7 +3,7 @@
 ;; Copyright © 2021-2024  Free Software Foundation, Inc.
 
 ;; Author: Zachary Romero <z...@posteo.org>
-;; Version: 1.0.0
+;; Version: 1.1.0
 ;; Homepage: https://github.com/zkry/yaml.el
 ;; Package-Requires: ((emacs "25.1"))
 ;; Keywords: tools
@@ -719,65 +719,6 @@ repeat for each character in a text.")
       (yaml--walk-events (car tree))
       (yaml--walk-events (cdr tree)))))
 
-(defmacro yaml--frame (name rule)
-  "Add a new state frame of NAME for RULE."
-  (declare (indent defun))
-  (let ((res-symbol (make-symbol "res")))
-    `(let ((beg yaml--parsing-position)
-           (_ (when (and yaml--parse-debug
-                         (not (member ,name yaml--tracing-ignore)))
-                (message "|%s>%s %40s args=%s '%s'"
-                         (make-string (length yaml--states) ?-)
-                         (make-string (- 70 (length yaml--states)) ?\s)
-                         ,name
-                         args
-                         (replace-regexp-in-string
-                          "\n"
-                          "↓"
-                          (yaml--slice yaml--parsing-position)))))
-           (_ (yaml--push-state ,name))
-           (,res-symbol ,rule))
-       (when (and yaml--parse-debug
-                  ,res-symbol
-                  (not (member ,name yaml--tracing-ignore)))
-         (message "<%s|%s %40s = '%s'"
-                  (make-string (length yaml--states) ?-)
-                  (make-string (- 70 (length yaml--states)) ?\s)
-                  ,name
-                  (replace-regexp-in-string
-                   "\n"
-                   "↓"
-                   (substring yaml--parsing-input beg 
yaml--parsing-position))))
-       (yaml--pop-state)
-       (if (not ,res-symbol)
-           nil
-         (let ((res-type (cdr (assoc ,name yaml--grammar-resolution-rules)))
-               (,res-symbol (if (member ,name yaml--terminal-rules)
-                                ;; Ignore children if at-rule is
-                                ;; indicated to be terminal.
-                                t
-                              ,res-symbol)))
-           (cond
-            ((or (assoc ,name yaml--grammar-events-in)
-                 (assoc ,name yaml--grammar-events-out))
-             (let ((str (substring yaml--parsing-input beg 
yaml--parsing-position)))
-               (when yaml--parsing-store-position
-                 (setq str (propertize str 'yaml-position
-                                       (cons (1+ beg)
-                                             (1+ yaml--parsing-position)))))
-               (when (member ,name '("c-l+folded" "c-l+literal"))
-                 (setq str (propertize str 'yaml-n (max 0 n))))
-               (list ,name
-                     (if yaml--parsing-store-position
-                         (propertize str 'yaml-position (cons (1+ beg)
-                                                              (1+ 
yaml--parsing-position)))
-                       str)
-                     ,res-symbol)))
-            ((equal res-type 'list) (list ,name ,res-symbol))
-            ((equal res-type 'literal)
-             (substring yaml--parsing-input beg yaml--parsing-position))
-            (t ,res-symbol)))))))
-
 (defun yaml--end-of-stream ()
   "Return non-nil if the current position is after the end of the document."
   (>= yaml--parsing-position (length yaml--parsing-input)))
@@ -1154,1608 +1095,1666 @@ changes in the future."
   "Parse YAML grammar for given STATE and ARGS.
 
 Rules for this function are defined by the yaml-spec JSON file."
-  (pcase state
-    ('c-flow-sequence
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "c-flow-sequence"
-         (yaml--all
-          (yaml--chr ?\[)
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate n c)))
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--parse-from-grammar
-               'ns-s-flow-seq-entries n
-               (yaml--parse-from-grammar 'in-flow c))))
-          (yaml--chr ?\])))))
-
-    ('c-indentation-indicator
-     (let ((m (nth 0 args)))
-       (yaml--frame "c-indentation-indicator"
-         (yaml--any (when (yaml--parse-from-grammar 'ns-dec-digit)
-                      (yaml--set m (yaml--ord (lambda () (yaml--match)))) t)
-                    (when (yaml--empty)
-                      (let ((new-m (yaml--auto-detect m)))
-                        (yaml--set m new-m))
-                      t)))))
-
-    ('ns-reserved-directive
-     (yaml--frame "ns-reserved-directive"
-       (yaml--all (yaml--parse-from-grammar 'ns-directive-name)
-                  (yaml--rep2 0 nil
-                    (lambda ()
-                      (yaml--all
-                       (yaml--parse-from-grammar 's-separate-in-line)
-                       (yaml--parse-from-grammar 'ns-directive-parameter)))))))
-
-    ('ns-flow-map-implicit-entry
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "ns-flow-map-implicit-entry"
-         ;; NOTE: I ran into a bug with the order of these rules. It seems
-         ;; sometimes ns-flow-map-yaml-key-entry succeeds with an empty
-         ;; when the correct answer should be
-         ;; c-ns-flow-map-json-key-entry.  Changing the order seemed to
-         ;; have fix this but this seems like a bandage fix.
-         (yaml--any
-          (yaml--parse-from-grammar 'c-ns-flow-map-json-key-entry n c)
-          (yaml--parse-from-grammar 'ns-flow-map-yaml-key-entry n c)
-          (yaml--parse-from-grammar 'c-ns-flow-map-empty-key-entry n c)))))
-
-    ('ns-esc-double-quote
-     (yaml--frame "ns-esc-double-quote"
-       (yaml--chr ?\")))
-
-    ('c-mapping-start
-     (yaml--frame "c-mapping-start" (yaml--chr ?\{)))
-
-    ('ns-flow-seq-entry
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "ns-flow-seq-entry"
-         (yaml--any (yaml--parse-from-grammar 'ns-flow-pair n c)
-                    (yaml--parse-from-grammar 'ns-flow-node n c)))))
-
-    ('l-empty
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "l-empty"
-         (yaml--all (yaml--any (yaml--parse-from-grammar 's-line-prefix n c)
-                               (yaml--parse-from-grammar 's-indent-lt n))
-                    (yaml--parse-from-grammar 'b-as-line-feed)))))
-
-    ('c-primary-tag-handle
-     (yaml--frame "c-primary-tag-handle" (yaml--chr ?\!)))
-
-    ('ns-plain-safe-out
-     (yaml--frame "ns-plain-safe-out"
-       (yaml--parse-from-grammar 'ns-char)))
-
-    ('c-ns-shorthand-tag
-     (yaml--frame "c-ns-shorthand-tag"
-       (yaml--all
-        (yaml--parse-from-grammar 'c-tag-handle)
-        (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 
'ns-tag-char))))))
-
-    ('nb-ns-single-in-line
-     (yaml--frame "nb-ns-single-in-line"
-       (yaml--rep2 0 nil
-         (lambda ()
-           (yaml--all (yaml--rep2 0 nil
-                        (lambda () (yaml--parse-from-grammar 's-white)))
-                      (yaml--parse-from-grammar 'ns-single-char))))))
-
-    ('l-strip-empty
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-strip-empty"
-         (yaml--all
-          (yaml--rep2 0 nil
-            (lambda () (yaml--all
-                        (yaml--parse-from-grammar 's-indent-le n)
-                        (yaml--parse-from-grammar 'b-non-content))))
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 'l-trail-comments n)))))))
-
-    ('c-indicator
-     (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 ?\`))))
-
-    ('c-l+literal
-     (let ((n (nth 0 args)))
-       (yaml--frame "c-l+literal"
-         (progn
+  (let ((name (symbol-name state))
+         (beg yaml--parsing-position)
+         (_ (when (and yaml--parse-debug
+                       (not (member (symbol-name state) yaml--tracing-ignore)))
+              (message "|%s>%s %40s args=%s '%s'"
+                       (make-string (length yaml--states) ?-)
+                       (make-string (- 70 (length yaml--states)) ?\s)
+                       (symbol-name state)
+                       args
+                       (replace-regexp-in-string
+                        "\n"
+                        "↓"
+                        (yaml--slice yaml--parsing-position)))))
+         (_ (yaml--push-state (symbol-name state)))
+         (yaml-n)
+         (res))
+    (pcase state
+      ('c-flow-sequence
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
            (yaml--all
-            (yaml--chr ?\|)
-            (yaml--parse-from-grammar 'c-b-block-header n (yaml--state-curr-t))
-            (yaml--parse-from-grammar 'l-literal-content
-                                      (max (+ n (yaml--state-curr-m)) 1)
-                                      (yaml--state-curr-t)))))))
-
-    ('c-single-quoted
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "c-single-quoted"
-         (yaml--all (yaml--chr ?\')
-                    (yaml--parse-from-grammar 'nb-single-text n c)
-                    (yaml--chr ?\')))))
-
-    ('c-forbidden
-     (yaml--frame "c-forbidden"
-       (yaml--all (yaml--start-of-line)
-                  (yaml--any
-                   (yaml--parse-from-grammar 'c-directives-end)
-                   (yaml--parse-from-grammar 'c-document-end))
-                  (yaml--any
-                   (yaml--parse-from-grammar 'b-char)
-                   (yaml--parse-from-grammar 's-white)
-                   (yaml--end-of-stream)))))
-
-    ('c-ns-alias-node
-     (yaml--frame "c-ns-alias-node"
-       (yaml--all (yaml--chr ?\*)
-                  (yaml--parse-from-grammar 'ns-anchor-name))))
-
-    ('c-secondary-tag-handle
-     (yaml--frame "c-secondary-tag-handle"
-       (yaml--all (yaml--chr ?\!) (yaml--chr ?\!))))
-
-    ('ns-esc-next-line
-     (yaml--frame "ns-esc-next-line" (yaml--chr ?N)))
-
-    ('l-nb-same-lines
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-nb-same-lines"
-         (yaml--all
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
-          (yaml--any (yaml--parse-from-grammar 'l-nb-folded-lines n)
-                     (yaml--parse-from-grammar 'l-nb-spaced-lines n))))))
-
-    ('c-alias
-     (yaml--frame "c-alias" (yaml--chr ?\*)))
-
-    ('ns-single-char
-     (yaml--frame "ns-single-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'nb-single-char))
-                  (lambda () (yaml--parse-from-grammar 's-white)))))
-
-    ('c-l-block-map-implicit-value
-     (let ((n (nth 0 args)))
-       (yaml--frame "c-l-block-map-implicit-value"
-         (yaml--all (yaml--chr ?\:)
-                    (yaml--any
-                     (yaml--parse-from-grammar 's-l+block-node n "block-out")
-                     (yaml--all (yaml--parse-from-grammar 'e-node)
-                                (yaml--parse-from-grammar 's-l-comments)))))))
-
-    ('ns-uri-char
-     (yaml--frame "ns-uri-char"
-       (yaml--any (yaml--all (yaml--chr ?\%)
-                             (yaml--parse-from-grammar 'ns-hex-digit)
-                             (yaml--parse-from-grammar 'ns-hex-digit))
-                  (yaml--parse-from-grammar '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 ?\]))))
-
-    ('ns-esc-16-bit
-     (yaml--frame "ns-esc-16-bit"
-       (yaml--all (yaml--chr ?u)
-                  (yaml--rep 4 4
-                    (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))
-
-    ('l-nb-spaced-lines
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-nb-spaced-lines"
-         (yaml--all
-          (yaml--parse-from-grammar 's-nb-spaced-text n)
-          (yaml--rep2 0 nil
-            (lambda () (yaml--all
-                        (yaml--parse-from-grammar 'b-l-spaced n)
-                        (yaml--parse-from-grammar 's-nb-spaced-text n))))))))
-
-    ('ns-plain
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "ns-plain"
-         (pcase c
-           ("block-key" (yaml--parse-from-grammar 'ns-plain-one-line c))
-           ("flow-in" (yaml--parse-from-grammar 'ns-plain-multi-line n c))
-           ("flow-key" (yaml--parse-from-grammar 'ns-plain-one-line c))
-           ("flow-out" (yaml--parse-from-grammar 'ns-plain-multi-line n c))))))
-
-    ('c-printable
-     (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))))
-
-    ('c-mapping-value
-     (yaml--frame "c-mapping-value" (yaml--chr ?\:)))
-
-    ('l-nb-literal-text
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-nb-literal-text"
-         (yaml--all
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
-          (yaml--parse-from-grammar 's-indent n)
-          (yaml--rep 1 nil
-            (lambda () (yaml--parse-from-grammar 'nb-char)))))))
-
-    ('ns-plain-char
-     (let ((c (nth 0 args)))
-       (yaml--frame "ns-plain-char"
-         (yaml--any
-          (yaml--but
-           (lambda () (yaml--parse-from-grammar 'ns-plain-safe c))
-           (lambda () (yaml--chr ?\:)) (lambda () (yaml--chr ?\#)))
-          (yaml--all
-           (yaml--chk "<=" (yaml--parse-from-grammar 'ns-char))
-           (yaml--chr ?\#))
-          (yaml--all
-           (yaml--chr ?\:)
-           (yaml--chk "=" (yaml--parse-from-grammar 'ns-plain-safe c)))))))
-
-    ('ns-anchor-char
-     (yaml--frame "ns-anchor-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
-                  (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
-
-    ('s-l+block-scalar
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "s-l+block-scalar"
-         (yaml--all (yaml--parse-from-grammar 's-separate (+ n 1) c)
-                    (yaml--rep 0 1
+            (yaml--chr ?\[)
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 's-separate n c)))
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--parse-from-grammar
+                 'ns-s-flow-seq-entries n
+                 (yaml--parse-from-grammar 'in-flow c))))
+            (yaml--chr ?\])))))
+
+      ('c-indentation-indicator
+       (let ((m (nth 0 args)))
+         (setq res
+           (yaml--any (when (yaml--parse-from-grammar 'ns-dec-digit)
+                        (yaml--set m (yaml--ord (lambda () (yaml--match)))) t)
+                      (when (yaml--empty)
+                        (let ((new-m (yaml--auto-detect m)))
+                          (yaml--set m new-m))
+                        t)))))
+
+      ('ns-reserved-directive
+       (setq res
+         (yaml--all (yaml--parse-from-grammar 'ns-directive-name)
+                    (yaml--rep2 0 nil
                       (lambda ()
                         (yaml--all
-                         (yaml--parse-from-grammar 'c-ns-properties (+ n 1) c)
-                         (yaml--parse-from-grammar 's-separate (+ n 1) c))))
-                    (yaml--any (yaml--parse-from-grammar 'c-l+literal n)
-                               (yaml--parse-from-grammar 'c-l+folded n))))))
-
-    ('ns-plain-safe-in
-     (yaml--frame "ns-plain-safe-in"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
-                  (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
-
-    ('nb-single-text
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "nb-single-text"
-         (pcase c
-           ("block-key" (yaml--parse-from-grammar 'nb-single-one-line))
-           ("flow-in" (yaml--parse-from-grammar 'nb-single-multi-line n))
-           ("flow-key" (yaml--parse-from-grammar 'nb-single-one-line))
-           ("flow-out" (yaml--parse-from-grammar 'nb-single-multi-line n))))))
-
-    ('s-indent-le
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-indent-le"
-         (yaml--all (yaml--rep2 0 nil
-                      (lambda () (yaml--parse-from-grammar 's-space)))
-                    (<= (length (yaml--match)) n)))))
-
-    ('ns-esc-carriage-return
-     (yaml--frame "ns-esc-carriage-return" (yaml--chr ?r)))
-
-    ('l-chomped-empty
-     (let ((n (nth 0 args))
-           (tt (nth 1 args)))
-       (yaml--frame "l-chomped-empty"
-         (pcase tt
-           ("clip" (yaml--parse-from-grammar 'l-strip-empty n))
-           ("keep" (yaml--parse-from-grammar 'l-keep-empty n))
-           ("strip" (yaml--parse-from-grammar 'l-strip-empty n))))))
-
-    ('c-s-implicit-json-key
-     (let ((c (nth 0 args)))
-       (yaml--frame "c-s-implicit-json-key"
+                         (yaml--parse-from-grammar 's-separate-in-line)
+                         (yaml--parse-from-grammar 
'ns-directive-parameter)))))))
+
+      ('ns-flow-map-implicit-entry
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           ;; NOTE: I ran into a bug with the order of these rules. It seems
+           ;; sometimes ns-flow-map-yaml-key-entry succeeds with an empty
+           ;; when the correct answer should be
+           ;; c-ns-flow-map-json-key-entry.  Changing the order seemed to
+           ;; have fix this but this seems like a bandage fix.
+           (yaml--any
+            (yaml--parse-from-grammar 'c-ns-flow-map-json-key-entry n c)
+            (yaml--parse-from-grammar 'ns-flow-map-yaml-key-entry n c)
+            (yaml--parse-from-grammar 'c-ns-flow-map-empty-key-entry n c)))))
+
+      ('ns-esc-double-quote
+       (setq res
+         (yaml--chr ?\")))
+
+      ('c-mapping-start
+       (setq res (yaml--chr ?\{)))
+
+      ('ns-flow-seq-entry
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           (yaml--any (yaml--parse-from-grammar 'ns-flow-pair n c)
+                      (yaml--parse-from-grammar 'ns-flow-node n c)))))
+
+      ('l-empty
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           (yaml--all (yaml--any (yaml--parse-from-grammar 's-line-prefix n c)
+                                 (yaml--parse-from-grammar 's-indent-lt n))
+                      (yaml--parse-from-grammar 'b-as-line-feed)))))
+
+      ('c-primary-tag-handle
+       (setq res (yaml--chr ?\!)))
+
+      ('ns-plain-safe-out
+       (setq res
+         (yaml--parse-from-grammar 'ns-char)))
+
+      ('c-ns-shorthand-tag
+       (setq res
          (yaml--all
-          (yaml--max 1024)
-          (yaml--parse-from-grammar 'c-flow-json-node nil c)
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
+          (yaml--parse-from-grammar 'c-tag-handle)
+          (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 
'ns-tag-char))))))
 
-    ('b-as-space
-     (yaml--frame "b-as-space"
-       (yaml--parse-from-grammar 'b-break)))
+      ('nb-ns-single-in-line
+       (setq res
+         (yaml--rep2 0 nil
+           (lambda ()
+             (yaml--all (yaml--rep2 0 nil
+                          (lambda () (yaml--parse-from-grammar 's-white)))
+                        (yaml--parse-from-grammar 'ns-single-char))))))
+
+      ('l-strip-empty
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--all
+                          (yaml--parse-from-grammar 's-indent-le n)
+                          (yaml--parse-from-grammar 'b-non-content))))
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 'l-trail-comments n)))))))
+
+      ('c-indicator
+       (setq res
+         (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 ?\`))))
+
+      ('c-l+literal
+       (let ((n (nth 0 args)))
+         (setq yaml-n n)
+         (setq res
+           (progn
+             (yaml--all
+              (yaml--chr ?\|)
+              (yaml--parse-from-grammar 'c-b-block-header n 
(yaml--state-curr-t))
+              (yaml--parse-from-grammar 'l-literal-content
+                                        (max (+ n (yaml--state-curr-m)) 1)
+                                        (yaml--state-curr-t)))))))
+
+      ('c-single-quoted
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           (yaml--all (yaml--chr ?\')
+                      (yaml--parse-from-grammar 'nb-single-text n c)
+                      (yaml--chr ?\')))))
+
+      ('c-forbidden
+       (setq res
+         (yaml--all (yaml--start-of-line)
+                    (yaml--any
+                     (yaml--parse-from-grammar 'c-directives-end)
+                     (yaml--parse-from-grammar 'c-document-end))
+                    (yaml--any
+                     (yaml--parse-from-grammar 'b-char)
+                     (yaml--parse-from-grammar 's-white)
+                     (yaml--end-of-stream)))))
 
-    ('ns-s-flow-seq-entries
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-s-flow-seq-entries"
-         (yaml--all
-          (yaml--parse-from-grammar 'ns-flow-seq-entry n c)
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate n c)))
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--all
-               (yaml--chr ?\,)
-               (yaml--rep 0 1
-                 (lambda () (yaml--parse-from-grammar 's-separate n c)))
-               (yaml--rep 0 1
-                 (lambda ()
-                   (yaml--parse-from-grammar 'ns-s-flow-seq-entries
-                                             n
-                                             c))))))))))
-
-    ('l-block-map-explicit-value
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-block-map-explicit-value"
-         (yaml--all
-          (yaml--parse-from-grammar 's-indent n)
-          (yaml--chr ?\:)
-          (yaml--parse-from-grammar 's-l+block-indented n "block-out")))))
+      ('c-ns-alias-node
+       (setq res
+         (yaml--all (yaml--chr ?\*)
+                    (yaml--parse-from-grammar 'ns-anchor-name))))
 
-    ('c-ns-flow-map-json-key-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-flow-map-json-key-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'c-flow-json-node n c)
-          (yaml--any
+      ('c-secondary-tag-handle
+       (setq res
+         (yaml--all (yaml--chr ?\!) (yaml--chr ?\!))))
+
+      ('ns-esc-next-line
+       (setq res (yaml--chr ?N)))
+
+      ('l-nb-same-lines
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
+            (yaml--any (yaml--parse-from-grammar 'l-nb-folded-lines n)
+                       (yaml--parse-from-grammar 'l-nb-spaced-lines n))))))
+
+      ('c-alias
+       (setq res (yaml--chr ?\*)))
+
+      ('ns-single-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'nb-single-char))
+                    (lambda () (yaml--parse-from-grammar 's-white)))))
+
+      ('c-l-block-map-implicit-value
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--chr ?\:)
+                      (yaml--any
+                       (yaml--parse-from-grammar 's-l+block-node n "block-out")
+                       (yaml--all (yaml--parse-from-grammar 'e-node)
+                                  (yaml--parse-from-grammar 
's-l-comments)))))))
+
+      ('ns-uri-char
+       (setq res
+         (yaml--any (yaml--all (yaml--chr ?\%)
+                               (yaml--parse-from-grammar 'ns-hex-digit)
+                               (yaml--parse-from-grammar 'ns-hex-digit))
+                    (yaml--parse-from-grammar '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 ?\]))))
+
+      ('ns-esc-16-bit
+       (setq res
+         (yaml--all (yaml--chr ?u)
+                    (yaml--rep 4 4
+                      (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))
+
+      ('l-nb-spaced-lines
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 's-nb-spaced-text n)
+            (yaml--rep2 0 nil
+              (lambda () (yaml--all
+                          (yaml--parse-from-grammar 'b-l-spaced n)
+                          (yaml--parse-from-grammar 's-nb-spaced-text n))))))))
+
+      ('ns-plain
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-key" (yaml--parse-from-grammar 'ns-plain-one-line c))
+             ("flow-in" (yaml--parse-from-grammar 'ns-plain-multi-line n c))
+             ("flow-key" (yaml--parse-from-grammar 'ns-plain-one-line c))
+             ("flow-out" (yaml--parse-from-grammar 'ns-plain-multi-line n 
c))))))
+
+      ('c-printable
+       (setq res
+         (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))))
+
+      ('c-mapping-value
+       (setq res (yaml--chr ?\:)))
+
+      ('l-nb-literal-text
+       (let ((n (nth 0 args)))
+         (setq res
            (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
+            (yaml--parse-from-grammar 's-indent n)
+            (yaml--rep 1 nil
+              (lambda () (yaml--parse-from-grammar 'nb-char)))))))
+
+      ('ns-plain-char
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--any
+            (yaml--but
+             (lambda () (yaml--parse-from-grammar 'ns-plain-safe c))
+             (lambda () (yaml--chr ?\:)) (lambda () (yaml--chr ?\#)))
+            (yaml--all
+             (yaml--chk "<=" (yaml--parse-from-grammar 'ns-char))
+             (yaml--chr ?\#))
+            (yaml--all
+             (yaml--chr ?\:)
+             (yaml--chk "=" (yaml--parse-from-grammar 'ns-plain-safe c)))))))
+
+      ('ns-anchor-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
+                    (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
+
+      ('s-l+block-scalar
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 's-separate (+ n 1) c)
+                      (yaml--rep 0 1
+                        (lambda ()
+                          (yaml--all
+                           (yaml--parse-from-grammar 'c-ns-properties (+ n 1) 
c)
+                           (yaml--parse-from-grammar 's-separate (+ n 1) c))))
+                      (yaml--any (yaml--parse-from-grammar 'c-l+literal n)
+                                 (yaml--parse-from-grammar 'c-l+folded n))))))
+
+      ('ns-plain-safe-in
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
+                    (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
+
+      ('nb-single-text
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-key" (yaml--parse-from-grammar 'nb-single-one-line))
+             ("flow-in" (yaml--parse-from-grammar 'nb-single-multi-line n))
+             ("flow-key" (yaml--parse-from-grammar 'nb-single-one-line))
+             ("flow-out" (yaml--parse-from-grammar 'nb-single-multi-line 
n))))))
+
+      ('s-indent-le
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--rep2 0 nil
+                        (lambda () (yaml--parse-from-grammar 's-space)))
+                      (<= (length (yaml--match)) n)))))
+
+      ('ns-esc-carriage-return
+       (setq res (yaml--chr ?r)))
+
+      ('l-chomped-empty
+       (let ((n (nth 0 args))
+             (tt (nth 1 args)))
+         (setq res
+           (pcase tt
+             ("clip" (yaml--parse-from-grammar 'l-strip-empty n))
+             ("keep" (yaml--parse-from-grammar 'l-keep-empty n))
+             ("strip" (yaml--parse-from-grammar 'l-strip-empty n))))))
+
+      ('c-s-implicit-json-key
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--max 1024)
+            (yaml--parse-from-grammar 'c-flow-json-node nil c)
             (yaml--rep 0 1
-              (lambda () (yaml--parse-from-grammar 's-separate n c)))
-            (yaml--parse-from-grammar 'c-ns-flow-map-adjacent-value n c))
-           (yaml--parse-from-grammar 'e-node))))))
-
-    ('c-sequence-entry
-     (yaml--frame "c-sequence-entry" (yaml--chr ?\-)))
-
-    ('l-bare-document
-     (yaml--frame "l-bare-document"
-       (yaml--all (yaml--exclude "c-forbidden")
-                  (yaml--parse-from-grammar 's-l+block-node -1 "block-in"))))
-
-    ;; TODO: don't use the symbol t as a variable.
-    ('b-chomped-last
-     (let ((tt (nth 0 args)))
-       (yaml--frame "b-chomped-last"
-         (pcase tt
-           ("clip"
-            ;; TODO: Fix this
-            (yaml--any (yaml--parse-from-grammar 'b-as-line-feed)
-                       (yaml--end-of-stream)))
-           ("keep"
-            (yaml--any (yaml--parse-from-grammar 'b-as-line-feed)
-                       (yaml--end-of-stream)))
-           ("strip"
-            (yaml--any (yaml--parse-from-grammar 'b-non-content)
-                       (yaml--end-of-stream)))))))
-
-    ('l-trail-comments
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-trail-comments"
-         (yaml--all (yaml--parse-from-grammar 's-indent-lt n)
-                    (yaml--parse-from-grammar 'c-nb-comment-text)
-                    (yaml--parse-from-grammar 'b-comment)
-                    (yaml--rep2 0 nil
-                      (lambda () (yaml--parse-from-grammar 'l-comment)))))))
+              (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
 
-    ('ns-flow-map-yaml-key-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-map-yaml-key-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'ns-flow-yaml-node n c)
-          (yaml--any
+      ('b-as-space
+       (setq res
+         (yaml--parse-from-grammar 'b-break)))
+
+      ('ns-s-flow-seq-entries
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
            (yaml--all
+            (yaml--parse-from-grammar 'ns-flow-seq-entry n c)
             (yaml--rep 0 1
               (lambda () (yaml--parse-from-grammar 's-separate n c)))
-            (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c))
-           (yaml--parse-from-grammar 'e-node))))))
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all
+                 (yaml--chr ?\,)
+                 (yaml--rep 0 1
+                   (lambda () (yaml--parse-from-grammar 's-separate n c)))
+                 (yaml--rep 0 1
+                   (lambda ()
+                     (yaml--parse-from-grammar 'ns-s-flow-seq-entries
+                                               n
+                                               c))))))))))
+
+      ('l-block-map-explicit-value
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 's-indent n)
+            (yaml--chr ?\:)
+            (yaml--parse-from-grammar 's-l+block-indented n "block-out")))))
 
-    ('s-indent
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-indent"
-         (yaml--rep n n (lambda () (yaml--parse-from-grammar 's-space))))))
+      ('c-ns-flow-map-json-key-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'c-flow-json-node n c)
+            (yaml--any
+             (yaml--all
+              (yaml--rep 0 1
+                (lambda () (yaml--parse-from-grammar 's-separate n c)))
+              (yaml--parse-from-grammar 'c-ns-flow-map-adjacent-value n c))
+             (yaml--parse-from-grammar 'e-node))))))
+
+      ('c-sequence-entry
+       (setq res (yaml--chr ?\-)))
+
+      ('l-bare-document
+       (setq res
+         (yaml--all (yaml--exclude "c-forbidden")
+                    (yaml--parse-from-grammar 's-l+block-node -1 "block-in"))))
+
+      ;; TODO: don't use the symbol t as a variable.
+      ('b-chomped-last
+       (let ((tt (nth 0 args)))
+         (setq res
+           (pcase tt
+             ("clip"
+              ;; TODO: Fix this
+              (yaml--any (yaml--parse-from-grammar 'b-as-line-feed)
+                         (yaml--end-of-stream)))
+             ("keep"
+              (yaml--any (yaml--parse-from-grammar 'b-as-line-feed)
+                         (yaml--end-of-stream)))
+             ("strip"
+              (yaml--any (yaml--parse-from-grammar 'b-non-content)
+                         (yaml--end-of-stream)))))))
+
+      ('l-trail-comments
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 's-indent-lt n)
+                      (yaml--parse-from-grammar 'c-nb-comment-text)
+                      (yaml--parse-from-grammar 'b-comment)
+                      (yaml--rep2 0 nil
+                        (lambda () (yaml--parse-from-grammar 'l-comment)))))))
+
+      ('ns-flow-map-yaml-key-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'ns-flow-yaml-node n c)
+            (yaml--any
+             (yaml--all
+              (yaml--rep 0 1
+                (lambda () (yaml--parse-from-grammar 's-separate n c)))
+              (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c))
+             (yaml--parse-from-grammar 'e-node))))))
 
-    ('ns-esc-line-separator
-     (yaml--frame "ns-esc-line-separator" (yaml--chr ?L)))
+      ('s-indent
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--rep n n (lambda () (yaml--parse-from-grammar 's-space))))))
 
-    ('ns-flow-yaml-node
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-yaml-node"
-         (yaml--any
-          (yaml--parse-from-grammar 'c-ns-alias-node)
-          (yaml--parse-from-grammar 'ns-flow-yaml-content n c)
-          (yaml--all
-           (yaml--parse-from-grammar 'c-ns-properties n c)
+      ('ns-esc-line-separator
+       (setq res (yaml--chr ?L)))
+
+      ('ns-flow-yaml-node
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
            (yaml--any
+            (yaml--parse-from-grammar 'c-ns-alias-node)
+            (yaml--parse-from-grammar 'ns-flow-yaml-content n c)
             (yaml--all
-             (yaml--parse-from-grammar 's-separate n c)
-             (yaml--parse-from-grammar 'ns-flow-yaml-content n c))
-            (yaml--parse-from-grammar 'e-scalar)))))))
-
-    ('ns-yaml-version
-     (yaml--frame "ns-yaml-version"
-       (yaml--all (yaml--rep 1 nil
-                    (lambda () (yaml--parse-from-grammar 'ns-dec-digit)))
-                  (yaml--chr ?\.)
-                  (yaml--rep 1 nil
-                    (lambda () (yaml--parse-from-grammar 'ns-dec-digit))))))
-
-    ('c-folded
-     (yaml--frame "c-folded" (yaml--chr ?\>)))
-
-    ('c-directives-end
-     (yaml--frame "c-directives-end"
-       (yaml--all (yaml--chr ?\-) (yaml--chr ?\-) (yaml--chr ?\-))))
-
-    ('s-double-break
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-double-break"
-         (yaml--any (yaml--parse-from-grammar 's-double-escaped n)
-                    (yaml--parse-from-grammar 's-flow-folded n)))))
-
-    ('s-nb-spaced-text
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-nb-spaced-text"
-         (yaml--all (yaml--parse-from-grammar 's-indent n)
-                    (yaml--parse-from-grammar 's-white)
-                    (yaml--rep2 0 nil
-                      (lambda () (yaml--parse-from-grammar 'nb-char)))))))
+             (yaml--parse-from-grammar 'c-ns-properties n c)
+             (yaml--any
+              (yaml--all
+               (yaml--parse-from-grammar 's-separate n c)
+               (yaml--parse-from-grammar 'ns-flow-yaml-content n c))
+              (yaml--parse-from-grammar 'e-scalar)))))))
+
+      ('ns-yaml-version
+       (setq res
+         (yaml--all (yaml--rep 1 nil
+                      (lambda () (yaml--parse-from-grammar 'ns-dec-digit)))
+                    (yaml--chr ?\.)
+                    (yaml--rep 1 nil
+                      (lambda () (yaml--parse-from-grammar 'ns-dec-digit))))))
+
+      ('c-folded
+       (setq res (yaml--chr ?\>)))
+
+      ('c-directives-end
+       (setq res
+         (yaml--all (yaml--chr ?\-) (yaml--chr ?\-) (yaml--chr ?\-))))
+
+      ('s-double-break
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--any (yaml--parse-from-grammar 's-double-escaped n)
+                      (yaml--parse-from-grammar 's-flow-folded n)))))
+
+      ('s-nb-spaced-text
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 's-indent n)
+                      (yaml--parse-from-grammar 's-white)
+                      (yaml--rep2 0 nil
+                        (lambda () (yaml--parse-from-grammar 'nb-char)))))))
+
+      ('l-folded-content
+       (let ((n (nth 0 args))
+             (tt (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all (yaml--parse-from-grammar 'l-nb-diff-lines n)
+                           (yaml--parse-from-grammar 'b-chomped-last tt))))
+            (yaml--parse-from-grammar 'l-chomped-empty n tt)))))
 
-    ('l-folded-content
-     (let ((n (nth 0 args))
-           (tt (nth 1 args)))
-       (yaml--frame "l-folded-content"
+      ('nb-ns-plain-in-line
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--rep2 0 nil
+             (lambda () (yaml--all
+                         (yaml--rep2 0 nil
+                           (lambda () (yaml--parse-from-grammar 's-white)))
+                         (yaml--parse-from-grammar 'ns-plain-char c)))))))
+
+      ('nb-single-multi-line
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'nb-ns-single-in-line)
+            (yaml--any
+             (yaml--parse-from-grammar 's-single-next-line n)
+             (yaml--rep2 0 nil
+               (lambda () (yaml--parse-from-grammar 's-white))))))))
+
+      ('l-document-suffix
+       (setq res
+         (yaml--all (yaml--parse-from-grammar 'c-document-end)
+                    (yaml--parse-from-grammar 's-l-comments))))
+
+      ('c-sequence-start
+       (setq res
+         (yaml--chr ?\[)))
+
+      ('ns-l-block-map-entry
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 'c-l-block-map-explicit-entry
+                                    (nth 0 args))
+          (yaml--parse-from-grammar 'ns-l-block-map-implicit-entry
+                                    (nth 0 args)))))
+
+      ('ns-l-compact-mapping
+       (setq res
          (yaml--all
-          (yaml--rep 0 1
+          (yaml--parse-from-grammar 'ns-l-block-map-entry (nth 0 args))
+          (yaml--rep2 0 nil
             (lambda ()
-              (yaml--all (yaml--parse-from-grammar 'l-nb-diff-lines n)
-                         (yaml--parse-from-grammar 'b-chomped-last tt))))
-          (yaml--parse-from-grammar 'l-chomped-empty n tt)))))
+              (yaml--all
+               (yaml--parse-from-grammar 's-indent (nth 0 args))
+               (yaml--parse-from-grammar 'ns-l-block-map-entry (nth 0 
args))))))))
 
-    ('nb-ns-plain-in-line
-     (let ((c (nth 0 args)))
-       (yaml--frame "nb-ns-plain-in-line"
-         (yaml--rep2 0 nil
-           (lambda () (yaml--all
-                       (yaml--rep2 0 nil
-                         (lambda () (yaml--parse-from-grammar 's-white)))
-                       (yaml--parse-from-grammar 'ns-plain-char c)))))))
+      ('ns-esc-space
+       (setq res (yaml--chr ?\x20)))
+      ('ns-esc-vertical-tab
+       (setq res (yaml--chr ?v)))
 
-    ('nb-single-multi-line
-     (let ((n (nth 0 args)))
-       (yaml--frame "nb-single-multi-line"
-         (yaml--all
-          (yaml--parse-from-grammar 'nb-ns-single-in-line)
-          (yaml--any
-           (yaml--parse-from-grammar 's-single-next-line n)
-           (yaml--rep2 0 nil
-             (lambda () (yaml--parse-from-grammar 's-white))))))))
-
-    ('l-document-suffix
-     (yaml--frame "l-document-suffix"
-       (yaml--all (yaml--parse-from-grammar 'c-document-end)
-                  (yaml--parse-from-grammar 's-l-comments))))
-
-    ('c-sequence-start
-     (yaml--frame "c-sequence-start"
-       (yaml--chr ?\[)))
-
-    ('ns-l-block-map-entry
-     (yaml--frame "ns-l-block-map-entry"
-       (yaml--any
-        (yaml--parse-from-grammar 'c-l-block-map-explicit-entry
-                                  (nth 0 args))
-        (yaml--parse-from-grammar 'ns-l-block-map-implicit-entry
-                                  (nth 0 args)))))
-
-    ('ns-l-compact-mapping
-     (yaml--frame "ns-l-compact-mapping"
-       (yaml--all
-        (yaml--parse-from-grammar 'ns-l-block-map-entry (nth 0 args))
-        (yaml--rep2 0 nil
-          (lambda ()
-            (yaml--all
-             (yaml--parse-from-grammar 's-indent (nth 0 args))
-             (yaml--parse-from-grammar 'ns-l-block-map-entry (nth 0 
args))))))))
+      ('ns-s-implicit-yaml-key
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--max 1024)
+            (yaml--parse-from-grammar 'ns-flow-yaml-node nil c)
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
 
-    ('ns-esc-space
-     (yaml--frame "ns-esc-space" (yaml--chr ?\x20)))
-    ('ns-esc-vertical-tab
-     (yaml--frame "ns-esc-vertical-tab" (yaml--chr ?v)))
+      ('b-l-folded
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any (yaml--parse-from-grammar 'b-l-trimmed n c)
+                      (yaml--parse-from-grammar 'b-as-space)))))
 
-    ('ns-s-implicit-yaml-key
-     (let ((c (nth 0 args)))
-       (yaml--frame "ns-s-implicit-yaml-key"
+      ('s-l+block-collection
+       (setq res
          (yaml--all
-          (yaml--max 1024)
-          (yaml--parse-from-grammar 'ns-flow-yaml-node nil c)
           (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
-
-    ('b-l-folded
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "b-l-folded"
-         (yaml--any (yaml--parse-from-grammar 'b-l-trimmed n c)
-                    (yaml--parse-from-grammar 'b-as-space)))))
-
-    ('s-l+block-collection
-     (yaml--frame "s-l+block-collection"
-       (yaml--all
-        (yaml--rep 0 1
-          (lambda ()
-            (yaml--all
-             (yaml--parse-from-grammar
-              's-separate
-              (+ (nth 0 args) 1)
-              (nth 1 args))
-             (yaml--parse-from-grammar
-              'c-ns-properties
-              (+ (nth 0 args) 1)
-              (nth 1 args)))))
-        (yaml--parse-from-grammar 's-l-comments)
-        (yaml--any
-         (yaml--parse-from-grammar
-          'l+block-sequence
-          (yaml--parse-from-grammar 'seq-spaces (nth 0 args) (nth 1 args)))
-         (yaml--parse-from-grammar 'l+block-mapping (nth 0 args))))))
-
-    ('c-quoted-quote
-     (yaml--frame "c-quoted-quote" (yaml--all (yaml--chr ?\') (yaml--chr 
?\'))))
-
-    ('l+block-sequence
-     (yaml--frame "l+block-sequence"
-       ;; NOTE: deviated from the spec example here by making new-m at least 1.
-       ;; The wording and examples lead me to believe this is how it's done.
-       ;; ie /* For some fixed auto-detected m > 0 */
-       (let ((new-m (max (yaml--auto-detect-indent (nth 0 args)) 1)))
-         (yaml--all
-          (yaml--set m new-m)
-          (yaml--rep 1 nil
             (lambda ()
               (yaml--all
                (yaml--parse-from-grammar
-                's-indent
-                (+ (nth 0 args) new-m))
+                's-separate
+                (+ (nth 0 args) 1)
+                (nth 1 args))
                (yaml--parse-from-grammar
-                'c-l-block-seq-entry
-                (+ (nth 0 args) new-m)))))))))
-
-    ('c-double-quote
-     (yaml--frame "c-double-quote"
-       (yaml--chr ?\")))
-
-    ('ns-esc-backspace
-     (yaml--frame "ns-esc-backspace"
-       (yaml--chr ?b)))
-
-    ('c-flow-json-content
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-flow-json-content"
-         (yaml--any (yaml--parse-from-grammar 'c-flow-sequence n c)
-                    (yaml--parse-from-grammar 'c-flow-mapping n c)
-                    (yaml--parse-from-grammar 'c-single-quoted n c)
-                    (yaml--parse-from-grammar 'c-double-quoted n c)))))
-
-    ('c-mapping-end
-     (yaml--frame "c-mapping-end" (yaml--chr ?\})))
-
-    ('nb-single-char
-     (yaml--frame "nb-single-char"
-       (yaml--any (yaml--parse-from-grammar 'c-quoted-quote)
-                  (yaml--but (lambda () (yaml--parse-from-grammar 'nb-json))
-                             (lambda () (yaml--chr ?\'))))))
-
-    ('ns-flow-node
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-node"
-         (yaml--any
-          (yaml--parse-from-grammar 'c-ns-alias-node)
-          (yaml--parse-from-grammar 'ns-flow-content n c)
-          (yaml--all
-           (yaml--parse-from-grammar 'c-ns-properties n c)
+                'c-ns-properties
+                (+ (nth 0 args) 1)
+                (nth 1 args)))))
+          (yaml--parse-from-grammar 's-l-comments)
+          (yaml--any
+           (yaml--parse-from-grammar
+            'l+block-sequence
+            (yaml--parse-from-grammar 'seq-spaces (nth 0 args) (nth 1 args)))
+           (yaml--parse-from-grammar 'l+block-mapping (nth 0 args))))))
+
+      ('c-quoted-quote
+       (setq res (yaml--all (yaml--chr ?\') (yaml--chr ?\'))))
+
+      ('l+block-sequence
+       (setq res
+         ;; NOTE: deviated from the spec example here by making new-m at least 
1.
+         ;; The wording and examples lead me to believe this is how it's done.
+         ;; ie /* For some fixed auto-detected m > 0 */
+         (let ((new-m (max (yaml--auto-detect-indent (nth 0 args)) 1)))
+           (yaml--all
+            (yaml--set m new-m)
+            (yaml--rep 1 nil
+              (lambda ()
+                (yaml--all
+                 (yaml--parse-from-grammar
+                  's-indent
+                  (+ (nth 0 args) new-m))
+                 (yaml--parse-from-grammar
+                  'c-l-block-seq-entry
+                  (+ (nth 0 args) new-m)))))))))
+
+      ('c-double-quote
+       (setq res
+         (yaml--chr ?\")))
+
+      ('ns-esc-backspace
+       (setq res
+         (yaml--chr ?b)))
+
+      ('c-flow-json-content
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any (yaml--parse-from-grammar 'c-flow-sequence n c)
+                      (yaml--parse-from-grammar 'c-flow-mapping n c)
+                      (yaml--parse-from-grammar 'c-single-quoted n c)
+                      (yaml--parse-from-grammar 'c-double-quoted n c)))))
+
+      ('c-mapping-end
+       (setq res (yaml--chr ?\})))
+
+      ('nb-single-char
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'c-quoted-quote)
+                    (yaml--but (lambda () (yaml--parse-from-grammar 'nb-json))
+                               (lambda () (yaml--chr ?\'))))))
+
+      ('ns-flow-node
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
            (yaml--any
-            (yaml--all (yaml--parse-from-grammar 's-separate n c)
-                       (yaml--parse-from-grammar 'ns-flow-content n c))
-            (yaml--parse-from-grammar 'e-scalar)))))))
-
-    ('c-non-specific-tag
-     (yaml--frame "c-non-specific-tag" (yaml--chr ?\!)))
-
-    ('l-directive-document
-     (yaml--frame "l-directive-document"
-       (yaml--all (yaml--rep 1 nil
-                    (lambda () (yaml--parse-from-grammar 'l-directive)))
-                  (yaml--parse-from-grammar 'l-explicit-document))))
-
-    ('c-l-block-map-explicit-entry
-     (let ((n (nth 0 args)))
-       (yaml--frame "c-l-block-map-explicit-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'c-l-block-map-explicit-key n)
-          (yaml--any (yaml--parse-from-grammar 'l-block-map-explicit-value n)
-                     (yaml--parse-from-grammar 'e-node))))))
-
-    ('e-node
-     (yaml--frame "e-node"
-       (yaml--parse-from-grammar 'e-scalar)))
-
-    ('seq-spaces
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "seq-spaces"
-         (pcase c
-           ("block-in" n)
-           ("block-out" (yaml--sub n 1))))))
-
-    ('l-yaml-stream
-     (yaml--frame "l-yaml-stream"
-       (yaml--all
-        (yaml--rep2 0 nil
-          (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
-        (yaml--rep 0 1
-          (lambda () (yaml--parse-from-grammar 'l-any-document)))
-        (yaml--rep2 0 nil
-          (lambda ()
-            (yaml--any
-             (yaml--all
-              (yaml--rep 1 nil
-                (lambda () (yaml--parse-from-grammar 'l-document-suffix)))
-              (yaml--rep2 0 nil
-                (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
-              (yaml--rep 0 1
-                (lambda () (yaml--parse-from-grammar 'l-any-document))))
-             (yaml--all
-              (yaml--rep2 0 nil
-                (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
-              (yaml--rep 0 1
-                (lambda ()
-                  (yaml--parse-from-grammar 'l-explicit-document))))))))))
-
-    ('nb-double-one-line
-     (yaml--frame "nb-double-one-line"
-       (yaml--rep2 0 nil
-         (lambda () (yaml--parse-from-grammar 'nb-double-char)))))
-
-    ('s-l-comments
-     (yaml--frame "s-l-comments"
-       (yaml--all (yaml--any
-                   (yaml--parse-from-grammar 's-b-comment)
-                   (yaml--start-of-line))
-                  (yaml--rep2 0 nil
-                    (lambda () (yaml--parse-from-grammar 'l-comment))))))
-
-    ('nb-char
-     (yaml--frame "nb-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'c-printable))
-                  (lambda () (yaml--parse-from-grammar 'b-char))
-                  (lambda () (yaml--parse-from-grammar 'c-byte-order-mark)))))
-
-    ('ns-plain-first
-     (let ((c (nth 0 args)))
-       (yaml--frame "ns-plain-first"
-         (yaml--any
-          (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
-                     (lambda () (yaml--parse-from-grammar 'c-indicator)))
-          (yaml--all
-           (yaml--any (yaml--chr ?\?)
-                      (yaml--chr ?\:)
-                      (yaml--chr ?\-))
-           (yaml--chk "=" (yaml--parse-from-grammar 'ns-plain-safe c)))))))
-
-    ('c-ns-esc-char
-     (yaml--frame "c-ns-esc-char"
-       (yaml--all
-        (yaml--chr ?\\)
-        (yaml--any (yaml--parse-from-grammar 'ns-esc-null)
-                   (yaml--parse-from-grammar 'ns-esc-bell)
-                   (yaml--parse-from-grammar 'ns-esc-backspace)
-                   (yaml--parse-from-grammar 'ns-esc-horizontal-tab)
-                   (yaml--parse-from-grammar 'ns-esc-line-feed)
-                   (yaml--parse-from-grammar 'ns-esc-vertical-tab)
-                   (yaml--parse-from-grammar 'ns-esc-form-feed)
-                   (yaml--parse-from-grammar 'ns-esc-carriage-return)
-                   (yaml--parse-from-grammar 'ns-esc-escape)
-                   (yaml--parse-from-grammar 'ns-esc-space)
-                   (yaml--parse-from-grammar 'ns-esc-double-quote)
-                   (yaml--parse-from-grammar 'ns-esc-slash)
-                   (yaml--parse-from-grammar 'ns-esc-backslash)
-                   (yaml--parse-from-grammar 'ns-esc-next-line)
-                   (yaml--parse-from-grammar 'ns-esc-non-breaking-space)
-                   (yaml--parse-from-grammar 'ns-esc-line-separator)
-                   (yaml--parse-from-grammar 'ns-esc-paragraph-separator)
-                   (yaml--parse-from-grammar 'ns-esc-8-bit)
-                   (yaml--parse-from-grammar 'ns-esc-16-bit)
-                   (yaml--parse-from-grammar 'ns-esc-32-bit)))))
-
-    ('ns-flow-map-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-map-entry"
-         (yaml--any
-          (yaml--all (yaml--chr ?\?)
-                     (yaml--parse-from-grammar 's-separate n c)
-                     (yaml--parse-from-grammar 'ns-flow-map-explicit-entry n 
c))
-          (yaml--parse-from-grammar 'ns-flow-map-implicit-entry n c)))))
-
-    ('l-explicit-document
-     (yaml--frame "l-explicit-document"
-       (yaml--all
-        (yaml--parse-from-grammar 'c-directives-end)
-        (yaml--any (yaml--parse-from-grammar 'l-bare-document)
-                   (yaml--all (yaml--parse-from-grammar 'e-node)
-                              (yaml--parse-from-grammar 's-l-comments))))))
-
-    ('s-white
-     (yaml--frame "s-white"
-       (yaml--any (yaml--parse-from-grammar 's-space)
-                  (yaml--parse-from-grammar 's-tab))))
-
-    ('l-keep-empty
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-keep-empty"
+            (yaml--parse-from-grammar 'c-ns-alias-node)
+            (yaml--parse-from-grammar 'ns-flow-content n c)
+            (yaml--all
+             (yaml--parse-from-grammar 'c-ns-properties n c)
+             (yaml--any
+              (yaml--all (yaml--parse-from-grammar 's-separate n c)
+                         (yaml--parse-from-grammar 'ns-flow-content n c))
+              (yaml--parse-from-grammar 'e-scalar)))))))
+
+      ('c-non-specific-tag
+       (setq res (yaml--chr ?\!)))
+
+      ('l-directive-document
+       (setq res
+         (yaml--all (yaml--rep 1 nil
+                      (lambda () (yaml--parse-from-grammar 'l-directive)))
+                    (yaml--parse-from-grammar 'l-explicit-document))))
+
+      ('c-l-block-map-explicit-entry
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'c-l-block-map-explicit-key n)
+            (yaml--any (yaml--parse-from-grammar 'l-block-map-explicit-value n)
+                       (yaml--parse-from-grammar 'e-node))))))
+
+      ('e-node
+       (setq res
+         (yaml--parse-from-grammar 'e-scalar)))
+
+      ('seq-spaces
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-in" n)
+             ("block-out" (yaml--sub n 1))))))
+
+      ('l-yaml-stream
+       (setq res
          (yaml--all
           (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
+            (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
           (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 'l-trail-comments n)))))))
-
-    ('ns-tag-prefix
-     (yaml--frame "ns-tag-prefix"
-       (yaml--any (yaml--parse-from-grammar 'c-ns-local-tag-prefix)
-                  (yaml--parse-from-grammar 'ns-global-tag-prefix))))
-
-    ('c-l+folded
-     (let ((n (nth 0 args)))
-       (yaml--frame "c-l+folded"
-         (yaml--all
-          (yaml--chr ?\>)
-          (yaml--parse-from-grammar 'c-b-block-header
-                                    n
-                                    (yaml--state-curr-t))
-          (yaml--parse-from-grammar 'l-folded-content
-                                    (max (+ n (yaml--state-curr-m)) 1)
-                                    (yaml--state-curr-t))))))
-
-    ('ns-directive-name
-     (yaml--frame "ns-directive-name"
-       (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-char)))))
-
-    ('b-char
-     (yaml--frame "b-char"
-       (yaml--any (yaml--parse-from-grammar 'b-line-feed)
-                  (yaml--parse-from-grammar 'b-carriage-return))))
-
-    ('ns-plain-multi-line
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-plain-multi-line"
-         (yaml--all
-          (yaml--parse-from-grammar 'ns-plain-one-line c)
+            (lambda () (yaml--parse-from-grammar 'l-any-document)))
           (yaml--rep2 0 nil
             (lambda ()
-              (yaml--parse-from-grammar 's-ns-plain-next-line n c)))))))
-
-    ('ns-char
-     (yaml--frame "ns-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'nb-char))
-                  (lambda () (yaml--parse-from-grammar 's-white)))))
-
-    ('s-space
-     (yaml--frame "s-space" (yaml--chr ?\x20)))
-
-    ('c-l-block-seq-entry
-     (yaml--frame "c-l-block-seq-entry"
-       (yaml--all (yaml--chr ?\-)
-                  (yaml--chk "!" (yaml--parse-from-grammar 'ns-char))
-                  (yaml--parse-from-grammar 's-l+block-indented
-                                            (nth 0 args)
-                                            "block-in"))))
-
-    ('c-ns-properties
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-properties"
-         (yaml--any
-          (yaml--all
-           (yaml--parse-from-grammar 'c-ns-tag-property)
-           (yaml--rep 0 1
-             (lambda ()
+              (yaml--any
                (yaml--all
-                (yaml--parse-from-grammar 's-separate n c)
-                (yaml--parse-from-grammar 'c-ns-anchor-property)))))
-          (yaml--all
-           (yaml--parse-from-grammar 'c-ns-anchor-property)
-           (yaml--rep 0 1
-             (lambda () (yaml--all
-                         (yaml--parse-from-grammar 's-separate n c)
-                         (yaml--parse-from-grammar 'c-ns-tag-property)))))))))
-
-    ('ns-directive-parameter
-     (yaml--frame "ns-directive-parameter"
-       (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-char)))))
-
-    ('c-chomping-indicator
-     (yaml--frame "c-chomping-indicator"
-       (yaml--any (when (yaml--chr ?\-) (yaml--set t "strip") t)
-                  (when (yaml--chr ?\+) (yaml--set t "keep") t)
-                  (when (yaml--empty) (yaml--set t "clip") t))))
-
-    ('ns-global-tag-prefix
-     (yaml--frame "ns-global-tag-prefix"
-       (yaml--all
-        (yaml--parse-from-grammar 'ns-tag-char)
-        (yaml--rep2 0 nil
-          (lambda () (yaml--parse-from-grammar 'ns-uri-char))))))
-
-    ('c-ns-flow-pair-json-key-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-flow-pair-json-key-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'c-s-implicit-json-key "flow-key")
-          (yaml--parse-from-grammar 'c-ns-flow-map-adjacent-value n c)))))
+                (yaml--rep 1 nil
+                  (lambda () (yaml--parse-from-grammar 'l-document-suffix)))
+                (yaml--rep2 0 nil
+                  (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
+                (yaml--rep 0 1
+                  (lambda () (yaml--parse-from-grammar 'l-any-document))))
+               (yaml--all
+                (yaml--rep2 0 nil
+                  (lambda () (yaml--parse-from-grammar 'l-document-prefix)))
+                (yaml--rep 0 1
+                  (lambda ()
+                    (yaml--parse-from-grammar 'l-explicit-document))))))))))
 
-    ('l-literal-content
-     (let ((n (nth 0 args))
-           (tt (nth 1 args)))
-       (yaml--frame "l-literal-content"
-         (yaml--all
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--all (yaml--parse-from-grammar 'l-nb-literal-text n)
-                         (yaml--rep2 0 nil
-                           (lambda ()
-                             (yaml--parse-from-grammar 'b-nb-literal-next n)))
-                         (yaml--parse-from-grammar 'b-chomped-last tt))))
-          (yaml--parse-from-grammar 'l-chomped-empty n tt)))))
-
-    ('c-document-end
-     (yaml--frame "c-document-end"
-       (yaml--all (yaml--chr ?\.)
-                  (yaml--chr ?\.)
-                  (yaml--chr ?\.))))
-
-    ('nb-double-text
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "nb-double-text"
-         (pcase c
-           ("block-key" (yaml--parse-from-grammar 'nb-double-one-line))
-           ("flow-in" (yaml--parse-from-grammar 'nb-double-multi-line n))
-           ("flow-key" (yaml--parse-from-grammar 'nb-double-one-line))
-           ("flow-out" (yaml--parse-from-grammar 'nb-double-multi-line n))))))
-
-    ('s-b-comment
-     (yaml--frame "s-b-comment"
-       (yaml--all
-        (yaml--rep 0 1
-          (lambda ()
+      ('nb-double-one-line
+       (setq res
+         (yaml--rep2 0 nil
+           (lambda () (yaml--parse-from-grammar 'nb-double-char)))))
+
+      ('s-l-comments
+       (setq res
+         (yaml--all (yaml--any
+                     (yaml--parse-from-grammar 's-b-comment)
+                     (yaml--start-of-line))
+                    (yaml--rep2 0 nil
+                      (lambda () (yaml--parse-from-grammar 'l-comment))))))
+
+      ('nb-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'c-printable))
+                    (lambda () (yaml--parse-from-grammar 'b-char))
+                    (lambda () (yaml--parse-from-grammar 
'c-byte-order-mark)))))
+
+      ('ns-plain-first
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--any
+            (yaml--but (lambda () (yaml--parse-from-grammar 'ns-char))
+                       (lambda () (yaml--parse-from-grammar 'c-indicator)))
             (yaml--all
-             (yaml--parse-from-grammar 's-separate-in-line)
-             (yaml--rep 0 1
-               (lambda () (yaml--parse-from-grammar 'c-nb-comment-text))))))
-        (yaml--parse-from-grammar 'b-comment))))
-
-    ('s-block-line-prefix
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-block-line-prefix"
-         (yaml--parse-from-grammar 's-indent n))))
-
-    ('c-tag-handle
-     (yaml--frame "c-tag-handle"
-       (yaml--any (yaml--parse-from-grammar 'c-named-tag-handle)
-                  (yaml--parse-from-grammar 'c-secondary-tag-handle)
-                  (yaml--parse-from-grammar 'c-primary-tag-handle))))
-
-    ('ns-plain-one-line
-     (let ((c (nth 0 args)))
-       (yaml--frame "ns-plain-one-line"
-         (yaml--all (yaml--parse-from-grammar 'ns-plain-first c)
-                    (yaml--parse-from-grammar 'nb-ns-plain-in-line c)))))
-
-    ('nb-json
-     (yaml--frame "nb-json"
-       (yaml--any (yaml--chr ?\x09)
-                  (yaml--chr-range ?\x20 ?\x10FFFF))))
-
-    ('s-ns-plain-next-line
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "s-ns-plain-next-line"
-         (yaml--all (yaml--parse-from-grammar 's-flow-folded n)
-                    (yaml--parse-from-grammar 'ns-plain-char c)
-                    (yaml--parse-from-grammar 'nb-ns-plain-in-line c)))))
-
-    ('c-reserved
-     (yaml--frame "c-reserved"
-       (yaml--any (yaml--chr ?\@) (yaml--chr ?\`))))
-
-    ('b-l-trimmed
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "b-l-trimmed"
-         (yaml--all
-          (yaml--parse-from-grammar 'b-non-content)
-          (yaml--rep 1 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n c)))))))
-
-    ('l-document-prefix
-     (yaml--frame "l-document-prefix"
-       (yaml--all
-        (yaml--rep 0 1
-          (lambda () (yaml--parse-from-grammar 'c-byte-order-mark)))
-        (yaml--rep2 0 nil
-          (lambda () (yaml--parse-from-grammar 'l-comment))))))
-
-    ('c-byte-order-mark
-     (yaml--frame "c-byte-order-mark" (yaml--chr ?\xFEFF)))
-
-    ('c-anchor
-     (yaml--frame "c-anchor" (yaml--chr ?\&)))
-
-    ('s-double-escaped
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-double-escaped"
+             (yaml--any (yaml--chr ?\?)
+                        (yaml--chr ?\:)
+                        (yaml--chr ?\-))
+             (yaml--chk "=" (yaml--parse-from-grammar 'ns-plain-safe c)))))))
+
+      ('c-ns-esc-char
+       (setq res
          (yaml--all
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 's-white)))
           (yaml--chr ?\\)
-          (yaml--parse-from-grammar 'b-non-content)
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n "flow-in")))
-          (yaml--parse-from-grammar 's-flow-line-prefix n)))))
+          (yaml--any (yaml--parse-from-grammar 'ns-esc-null)
+                     (yaml--parse-from-grammar 'ns-esc-bell)
+                     (yaml--parse-from-grammar 'ns-esc-backspace)
+                     (yaml--parse-from-grammar 'ns-esc-horizontal-tab)
+                     (yaml--parse-from-grammar 'ns-esc-line-feed)
+                     (yaml--parse-from-grammar 'ns-esc-vertical-tab)
+                     (yaml--parse-from-grammar 'ns-esc-form-feed)
+                     (yaml--parse-from-grammar 'ns-esc-carriage-return)
+                     (yaml--parse-from-grammar 'ns-esc-escape)
+                     (yaml--parse-from-grammar 'ns-esc-space)
+                     (yaml--parse-from-grammar 'ns-esc-double-quote)
+                     (yaml--parse-from-grammar 'ns-esc-slash)
+                     (yaml--parse-from-grammar 'ns-esc-backslash)
+                     (yaml--parse-from-grammar 'ns-esc-next-line)
+                     (yaml--parse-from-grammar 'ns-esc-non-breaking-space)
+                     (yaml--parse-from-grammar 'ns-esc-line-separator)
+                     (yaml--parse-from-grammar 'ns-esc-paragraph-separator)
+                     (yaml--parse-from-grammar 'ns-esc-8-bit)
+                     (yaml--parse-from-grammar 'ns-esc-16-bit)
+                     (yaml--parse-from-grammar 'ns-esc-32-bit)))))
+
+      ('ns-flow-map-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any
+            (yaml--all (yaml--chr ?\?)
+                       (yaml--parse-from-grammar 's-separate n c)
+                       (yaml--parse-from-grammar 'ns-flow-map-explicit-entry n 
c))
+            (yaml--parse-from-grammar 'ns-flow-map-implicit-entry n c)))))
 
-    ('ns-esc-32-bit
-     (yaml--frame "ns-esc-32-bit"
-       (yaml--all
-        (yaml--chr ?U)
-        (yaml--rep 8 8 (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))
+      ('l-explicit-document
+       (setq res
+         (yaml--all
+          (yaml--parse-from-grammar 'c-directives-end)
+          (yaml--any (yaml--parse-from-grammar 'l-bare-document)
+                     (yaml--all (yaml--parse-from-grammar 'e-node)
+                                (yaml--parse-from-grammar 's-l-comments))))))
 
+      ('s-white
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 's-space)
+                    (yaml--parse-from-grammar 's-tab))))
 
-    ('b-non-content
-     (yaml--frame "b-non-content" (yaml--parse-from-grammar 'b-break)))
+      ('l-keep-empty
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 'l-trail-comments n)))))))
 
-    ('ns-tag-char
-     (yaml--frame "ns-tag-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'ns-uri-char))
-                  (lambda () (yaml--chr ?\!))
-                  (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
+      ('ns-tag-prefix
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'c-ns-local-tag-prefix)
+                    (yaml--parse-from-grammar 'ns-global-tag-prefix))))
 
-    ('b-carriage-return
-     (yaml--frame "b-carriage-return" (yaml--chr ?\x0D)))
+      ('c-l+folded
+       (let ((n (nth 0 args)))
+         (setq yaml-n n)
+         (setq res
+           (yaml--all
+            (yaml--chr ?\>)
+            (yaml--parse-from-grammar 'c-b-block-header
+                                      n
+                                      (yaml--state-curr-t))
+            (yaml--parse-from-grammar 'l-folded-content
+                                      (max (+ n (yaml--state-curr-m)) 1)
+                                      (yaml--state-curr-t))))))
 
-    ('s-double-next-line
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-double-next-line"
-         (yaml--all
-          (yaml--parse-from-grammar 's-double-break n)
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--all
-               (yaml--parse-from-grammar 'ns-double-char)
-               (yaml--parse-from-grammar 'nb-ns-double-in-line)
-               (yaml--any
-                (yaml--parse-from-grammar 's-double-next-line n)
-                (yaml--rep2 0 nil
-                  (lambda () (yaml--parse-from-grammar 's-white)))))))))))
+      ('ns-directive-name
+       (setq res
+         (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-char)))))
 
-    ('ns-esc-non-breaking-space
-     (yaml--frame "ns-esc-non-breaking-space" (yaml--chr ?\_)))
+      ('b-char
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'b-line-feed)
+                    (yaml--parse-from-grammar 'b-carriage-return))))
 
-    ('l-nb-diff-lines
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-nb-diff-lines"
+      ('ns-plain-multi-line
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'ns-plain-one-line c)
+            (yaml--rep2 0 nil
+              (lambda ()
+                (yaml--parse-from-grammar 's-ns-plain-next-line n c)))))))
+
+      ('ns-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'nb-char))
+                    (lambda () (yaml--parse-from-grammar 's-white)))))
+
+      ('s-space
+       (setq res (yaml--chr ?\x20)))
+
+      ('c-l-block-seq-entry
+       (setq res
+         (yaml--all (yaml--chr ?\-)
+                    (yaml--chk "!" (yaml--parse-from-grammar 'ns-char))
+                    (yaml--parse-from-grammar 's-l+block-indented
+                                              (nth 0 args)
+                                              "block-in"))))
+
+      ('c-ns-properties
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any
+            (yaml--all
+             (yaml--parse-from-grammar 'c-ns-tag-property)
+             (yaml--rep 0 1
+               (lambda ()
+                 (yaml--all
+                  (yaml--parse-from-grammar 's-separate n c)
+                  (yaml--parse-from-grammar 'c-ns-anchor-property)))))
+            (yaml--all
+             (yaml--parse-from-grammar 'c-ns-anchor-property)
+             (yaml--rep 0 1
+               (lambda () (yaml--all
+                           (yaml--parse-from-grammar 's-separate n c)
+                           (yaml--parse-from-grammar 
'c-ns-tag-property)))))))))
+
+      ('ns-directive-parameter
+       (setq res
+         (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-char)))))
+
+      ('c-chomping-indicator
+       (setq res
+         (yaml--any (when (yaml--chr ?\-) (yaml--set t "strip") t)
+                    (when (yaml--chr ?\+) (yaml--set t "keep") t)
+                    (when (yaml--empty) (yaml--set t "clip") t))))
+
+      ('ns-global-tag-prefix
+       (setq res
          (yaml--all
-          (yaml--parse-from-grammar 'l-nb-same-lines n)
+          (yaml--parse-from-grammar 'ns-tag-char)
           (yaml--rep2 0 nil
-            (lambda ()
-              (yaml--all (yaml--parse-from-grammar 'b-as-line-feed)
-                         (yaml--parse-from-grammar 'l-nb-same-lines n))))))))
+            (lambda () (yaml--parse-from-grammar 'ns-uri-char))))))
 
-    ('s-flow-folded
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-flow-folded"
+      ('c-ns-flow-pair-json-key-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'c-s-implicit-json-key "flow-key")
+            (yaml--parse-from-grammar 'c-ns-flow-map-adjacent-value n c)))))
+
+      ('l-literal-content
+       (let ((n (nth 0 args))
+             (tt (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all (yaml--parse-from-grammar 'l-nb-literal-text n)
+                           (yaml--rep2 0 nil
+                             (lambda ()
+                               (yaml--parse-from-grammar 'b-nb-literal-next 
n)))
+                           (yaml--parse-from-grammar 'b-chomped-last tt))))
+            (yaml--parse-from-grammar 'l-chomped-empty n tt)))))
+
+      ('c-document-end
+       (setq res
+         (yaml--all (yaml--chr ?\.)
+                    (yaml--chr ?\.)
+                    (yaml--chr ?\.))))
+
+      ('nb-double-text
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-key" (yaml--parse-from-grammar 'nb-double-one-line))
+             ("flow-in" (yaml--parse-from-grammar 'nb-double-multi-line n))
+             ("flow-key" (yaml--parse-from-grammar 'nb-double-one-line))
+             ("flow-out" (yaml--parse-from-grammar 'nb-double-multi-line 
n))))))
+
+      ('s-b-comment
+       (setq res
          (yaml--all
           (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate-in-line)))
-          (yaml--parse-from-grammar 'b-l-folded n "flow-in")
-          (yaml--parse-from-grammar 's-flow-line-prefix n)))))
+            (lambda ()
+              (yaml--all
+               (yaml--parse-from-grammar 's-separate-in-line)
+               (yaml--rep 0 1
+                 (lambda () (yaml--parse-from-grammar 'c-nb-comment-text))))))
+          (yaml--parse-from-grammar 'b-comment))))
+
+      ('s-block-line-prefix
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--parse-from-grammar 's-indent n))))
+
+      ('c-tag-handle
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'c-named-tag-handle)
+                    (yaml--parse-from-grammar 'c-secondary-tag-handle)
+                    (yaml--parse-from-grammar 'c-primary-tag-handle))))
+
+      ('ns-plain-one-line
+       (let ((c (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 'ns-plain-first c)
+                      (yaml--parse-from-grammar 'nb-ns-plain-in-line c)))))
+
+      ('nb-json
+       (setq res
+         (yaml--any (yaml--chr ?\x09)
+                    (yaml--chr-range ?\x20 ?\x10FFFF))))
+
+      ('s-ns-plain-next-line
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 's-flow-folded n)
+                      (yaml--parse-from-grammar 'ns-plain-char c)
+                      (yaml--parse-from-grammar 'nb-ns-plain-in-line c)))))
+
+      ('c-reserved
+       (setq res
+         (yaml--any (yaml--chr ?\@) (yaml--chr ?\`))))
+
+      ('b-l-trimmed
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'b-non-content)
+            (yaml--rep 1 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n c)))))))
 
-    ('ns-flow-map-explicit-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-map-explicit-entry"
-         (yaml--any
-          (yaml--parse-from-grammar 'ns-flow-map-implicit-entry n c)
-          (yaml--all
-           (yaml--parse-from-grammar 'e-node)
-           (yaml--parse-from-grammar 'e-node))))))
-
-    ('ns-l-block-map-implicit-entry
-     (yaml--frame "ns-l-block-map-implicit-entry"
-       (yaml--all
-        (yaml--any (yaml--parse-from-grammar 'ns-s-block-map-implicit-key)
-                   (yaml--parse-from-grammar 'e-node))
-        (yaml--parse-from-grammar 'c-l-block-map-implicit-value (nth 0 
args)))))
-
-    ('l-nb-folded-lines
-     (let ((n (nth 0 args)))
-       (yaml--frame "l-nb-folded-lines"
+      ('l-document-prefix
+       (setq res
          (yaml--all
-          (yaml--parse-from-grammar 's-nb-folded-text n)
+          (yaml--rep 0 1
+            (lambda () (yaml--parse-from-grammar 'c-byte-order-mark)))
           (yaml--rep2 0 nil
-            (lambda ()
-              (yaml--all (yaml--parse-from-grammar 'b-l-folded n "block-in")
-                         (yaml--parse-from-grammar 's-nb-folded-text n))))))))
+            (lambda () (yaml--parse-from-grammar 'l-comment))))))
 
-    ('c-l-block-map-explicit-key
-     (let ((n (nth 0 args)))
-       (yaml--frame "c-l-block-map-explicit-key"
-         (yaml--all
-          (yaml--chr ?\?)
-          (yaml--parse-from-grammar 's-l+block-indented n "block-out")))))
-
-    ('s-separate
-     (let ((n (nth 0 args))
-           (c (nth 1 args)))
-       (yaml--frame "s-separate"
-         (pcase c
-           ("block-in" (yaml--parse-from-grammar 's-separate-lines n))
-           ("block-key" (yaml--parse-from-grammar 's-separate-in-line))
-           ("block-out" (yaml--parse-from-grammar 's-separate-lines n))
-           ("flow-in" (yaml--parse-from-grammar 's-separate-lines n))
-           ("flow-key" (yaml--parse-from-grammar 's-separate-in-line))
-           ("flow-out" (yaml--parse-from-grammar 's-separate-lines n))))))
-
-    ('ns-flow-pair-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-pair-entry"
-         (yaml--any
-          (yaml--parse-from-grammar 'ns-flow-pair-yaml-key-entry n c)
-          (yaml--parse-from-grammar 'c-ns-flow-map-empty-key-entry n c)
-          (yaml--parse-from-grammar 'c-ns-flow-pair-json-key-entry n c)))))
-
-    ('c-flow-indicator
-     (yaml--frame "c-flow-indicator"
-       (yaml--any (yaml--chr ?\,)
-                  (yaml--chr ?\[)
-                  (yaml--chr ?\])
-                  (yaml--chr ?\{)
-                  (yaml--chr ?\}))))
-
-    ('ns-flow-pair-yaml-key-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-pair-yaml-key-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'ns-s-implicit-yaml-key "flow-key")
-          (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c)))))
+      ('c-byte-order-mark
+       (setq res (yaml--chr ?\xFEFF)))
+
+      ('c-anchor
+       (setq res (yaml--chr ?\&)))
 
-    ('e-scalar
-     (yaml--frame "e-scalar" (yaml--empty)))
+      ('s-double-escaped
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 's-white)))
+            (yaml--chr ?\\)
+            (yaml--parse-from-grammar 'b-non-content)
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n "flow-in")))
+            (yaml--parse-from-grammar 's-flow-line-prefix n)))))
 
-    ('s-indent-lt
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-indent-lt"
+      ('ns-esc-32-bit
+       (setq res
          (yaml--all
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 's-space)))
-          (< (length (yaml--match)) n)))))
+          (yaml--chr ?U)
+          (yaml--rep 8 8 (lambda () (yaml--parse-from-grammar 
'ns-hex-digit))))))
 
-    ('nb-single-one-line
-     (yaml--frame "nb-single-one-line"
-       (yaml--rep2 0 nil
-         (lambda () (yaml--parse-from-grammar 'nb-single-char)))))
 
-    ('c-collect-entry
-     (yaml--frame "c-collect-entry" (yaml--chr ?\,)))
+      ('b-non-content
+       (setq res (yaml--parse-from-grammar 'b-break)))
 
-    ('ns-l-compact-sequence
-     (let ((n (nth 0 args)))
-       (yaml--frame "ns-l-compact-sequence"
-         (yaml--all
-          (yaml--parse-from-grammar 'c-l-block-seq-entry n)
-          (yaml--rep2 0 nil
-            (lambda ()
-              (yaml--all
-               (yaml--parse-from-grammar 's-indent n)
-               (yaml--parse-from-grammar 'c-l-block-seq-entry n))))))))
-
-    ('c-comment
-     (yaml--frame "c-comment" (yaml--chr ?\#)))
-
-    ('s-line-prefix
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "s-line-prefix"
-         (pcase c
-           ("block-in" (yaml--parse-from-grammar 's-block-line-prefix n))
-           ("block-out" (yaml--parse-from-grammar 's-block-line-prefix n))
-           ("flow-in" (yaml--parse-from-grammar 's-flow-line-prefix n))
-           ("flow-out" (yaml--parse-from-grammar 's-flow-line-prefix n))))))
-
-    ('s-tab
-     (yaml--frame "s-tab" (yaml--chr ?\x09)))
-
-    ('c-directive
-     (yaml--frame "c-directive" (yaml--chr ?\%)))
-
-    ('ns-flow-pair
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-pair"
-         (yaml--any
-          (yaml--all (yaml--chr ?\?)
-                     (yaml--parse-from-grammar 's-separate n c)
-                     (yaml--parse-from-grammar 'ns-flow-map-explicit-entry n 
c))
-          (yaml--parse-from-grammar 'ns-flow-pair-entry n c)))))
-
-    ('s-l+block-indented
-     (yaml--frame "s-l+block-indented"
-       (let ((m (yaml--auto-detect-indent (nth 0 args))))
-         (yaml--any
-          (yaml--all
-           (yaml--parse-from-grammar 's-indent m)
-           (yaml--any
-            (yaml--parse-from-grammar 'ns-l-compact-sequence
-                                      (+ (nth 0 args) (+ 1 m)))
-            (yaml--parse-from-grammar 'ns-l-compact-mapping
-                                      (+ (nth 0 args) (+ 1 m)))))
-          (yaml--parse-from-grammar 's-l+block-node (nth 0 args) (nth 1 args))
-          (yaml--all (yaml--parse-from-grammar 'e-node)
-                     (yaml--parse-from-grammar 's-l-comments))))))
-
-    ('c-single-quote
-     (yaml--frame "c-single-quote" (yaml--chr ?\')))
-
-    ('s-flow-line-prefix
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-flow-line-prefix"
-         (yaml--all
-          (yaml--parse-from-grammar 's-indent n)
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
-
-    ('nb-double-char
-     (yaml--frame "nb-double-char"
-       (yaml--any
-        (yaml--parse-from-grammar 'c-ns-esc-char)
-        (yaml--but (lambda () (yaml--parse-from-grammar 'nb-json))
-                   (lambda () (yaml--chr ?\\)) (lambda () (yaml--chr ?\"))))))
-
-    ('l-comment
-     (yaml--frame "l-comment"
-       (yaml--all
-        (yaml--parse-from-grammar 's-separate-in-line)
-        (yaml--rep 0 1
-          (lambda () (yaml--parse-from-grammar 'c-nb-comment-text)))
-        (yaml--parse-from-grammar 'b-comment))))
-
-    ('ns-hex-digit
-     (yaml--frame "ns-hex-digit"
-       (yaml--any
-        (yaml--parse-from-grammar 'ns-dec-digit)
-        (yaml--chr-range ?\x41 ?\x46)
-        (yaml--chr-range ?\x61 ?\x66))))
-
-    ('s-l+flow-in-block
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-l+flow-in-block"
-         (yaml--all
-          (yaml--parse-from-grammar 's-separate (+ n 1) "flow-out")
-          (yaml--parse-from-grammar 'ns-flow-node (+ n 1) "flow-out")
-          (yaml--parse-from-grammar 's-l-comments)))))
+      ('ns-tag-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'ns-uri-char))
+                    (lambda () (yaml--chr ?\!))
+                    (lambda () (yaml--parse-from-grammar 'c-flow-indicator)))))
 
-    ('c-flow-json-node
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-flow-json-node"
-         (yaml--all
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--all
-               (yaml--parse-from-grammar 'c-ns-properties n c)
-               (yaml--parse-from-grammar 's-separate n c))))
-          (yaml--parse-from-grammar 'c-flow-json-content n c)))))
-
-    ('c-b-block-header
-     (let ((m (nth 0 args))
-           (tt (nth 1 args)))
-       (yaml--frame "c-b-block-header"
-         (yaml--all
-          (yaml--any
-           (and (not (string-match "\\`[-+][0-9]"
-                                   (yaml--slice yaml--parsing-position)))
-                ;; hack to not match this case if there is a number.
+      ('b-carriage-return
+       (setq res (yaml--chr ?\x0D)))
+
+      ('s-double-next-line
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 's-double-break n)
+            (yaml--rep 0 1
+              (lambda ()
                 (yaml--all
-                 (yaml--parse-from-grammar 'c-indentation-indicator m)
-                 (yaml--parse-from-grammar 'c-chomping-indicator tt)))
+                 (yaml--parse-from-grammar 'ns-double-char)
+                 (yaml--parse-from-grammar 'nb-ns-double-in-line)
+                 (yaml--any
+                  (yaml--parse-from-grammar 's-double-next-line n)
+                  (yaml--rep2 0 nil
+                    (lambda () (yaml--parse-from-grammar 's-white)))))))))))
+
+      ('ns-esc-non-breaking-space
+       (setq res (yaml--chr ?\_)))
+
+      ('l-nb-diff-lines
+       (let ((n (nth 0 args)))
+         (setq res
            (yaml--all
-            (yaml--parse-from-grammar 'c-chomping-indicator tt)
-            (yaml--parse-from-grammar 'c-indentation-indicator m)))
-          (yaml--parse-from-grammar 's-b-comment)))))
-
-    ('ns-esc-8-bit
-     (yaml--frame "ns-esc-8-bit"
-       (yaml--all (yaml--chr ?x)
-                  (yaml--rep 2 2
-                    (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))
-
-    ('ns-anchor-name
-     (yaml--frame "ns-anchor-name"
-       (yaml--rep 1 nil
-         (lambda () (yaml--parse-from-grammar 'ns-anchor-char)))))
-
-    ('ns-esc-slash
-     (yaml--frame "ns-esc-slash" (yaml--chr ?\/)))
-
-    ('s-nb-folded-text
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-nb-folded-text"
-         (yaml--all (yaml--parse-from-grammar 's-indent n)
-                    (yaml--parse-from-grammar 'ns-char)
-                    (yaml--rep2 0 nil
-                      (lambda () (yaml--parse-from-grammar 'nb-char)))))))
-
-    ('ns-word-char
-     (yaml--frame "ns-word-char"
-       (yaml--any (yaml--parse-from-grammar 'ns-dec-digit)
-                  (yaml--parse-from-grammar 'ns-ascii-letter)
-                  (yaml--chr ?\-))))
-
-    ('ns-esc-form-feed
-     (yaml--frame "ns-esc-form-feed" (yaml--chr ?f)))
-
-    ('ns-s-block-map-implicit-key
-     (yaml--frame "ns-s-block-map-implicit-key"
-       (yaml--any
-        (yaml--parse-from-grammar 'c-s-implicit-json-key "block-key")
-        (yaml--parse-from-grammar 'ns-s-implicit-yaml-key "block-key"))))
-
-    ('ns-esc-null (yaml--frame "ns-esc-null" (yaml--chr ?\0)))
-
-    ('c-ns-tag-property
-     (yaml--frame "c-ns-tag-property"
-       (yaml--any (yaml--parse-from-grammar 'c-verbatim-tag)
-                  (yaml--parse-from-grammar 'c-ns-shorthand-tag)
-                  (yaml--parse-from-grammar 'c-non-specific-tag))))
-
-    ('c-ns-local-tag-prefix
-     (yaml--frame "c-ns-local-tag-prefix"
-       (yaml--all
-        (yaml--chr ?\!)
-        (yaml--rep2 0 nil
-          (lambda () (yaml--parse-from-grammar 'ns-uri-char))))))
-
-    ('ns-tag-directive
-     (yaml--frame "ns-tag-directive"
-       (yaml--all (yaml--chr ?T) (yaml--chr ?A) (yaml--chr ?G)
-                  (yaml--parse-from-grammar 's-separate-in-line)
-                  (yaml--parse-from-grammar 'c-tag-handle)
-                  (yaml--parse-from-grammar 's-separate-in-line)
-                  (yaml--parse-from-grammar 'ns-tag-prefix))))
-
-    ('c-flow-mapping
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-flow-mapping"
+            (yaml--parse-from-grammar 'l-nb-same-lines n)
+            (yaml--rep2 0 nil
+              (lambda ()
+                (yaml--all (yaml--parse-from-grammar 'b-as-line-feed)
+                           (yaml--parse-from-grammar 'l-nb-same-lines n))))))))
+
+      ('s-flow-folded
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 's-separate-in-line)))
+            (yaml--parse-from-grammar 'b-l-folded n "flow-in")
+            (yaml--parse-from-grammar 's-flow-line-prefix n)))))
+
+      ('ns-flow-map-explicit-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any
+            (yaml--parse-from-grammar 'ns-flow-map-implicit-entry n c)
+            (yaml--all
+             (yaml--parse-from-grammar 'e-node)
+             (yaml--parse-from-grammar 'e-node))))))
+
+      ('ns-l-block-map-implicit-entry
+       (setq res
          (yaml--all
-          (yaml--chr ?\{)
-          (yaml--rep 0 1
-            (lambda () (yaml--parse-from-grammar 's-separate n c)))
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--parse-from-grammar 'ns-s-flow-map-entries
-                                        n
-                                        (yaml--parse-from-grammar 'in-flow 
c))))
-          (yaml--chr ?\})))))
-
-    ('ns-double-char
-     (yaml--frame "ns-double-char"
-       (yaml--but (lambda () (yaml--parse-from-grammar 'nb-double-char))
-                  (lambda () (yaml--parse-from-grammar 's-white)))))
-
-    ('ns-ascii-letter
-     (yaml--frame "ns-ascii-letter"
-       (yaml--any (yaml--chr-range ?\x41 ?\x5A)
-                  (yaml--chr-range ?\x61 ?\x7A))))
-
-    ('b-break
-     (yaml--frame "b-break"
-       (yaml--any (yaml--all (yaml--parse-from-grammar 'b-carriage-return)
-                             (yaml--parse-from-grammar 'b-line-feed))
-                  (yaml--parse-from-grammar 'b-carriage-return)
-                  (yaml--parse-from-grammar 'b-line-feed))))
-
-    ('nb-ns-double-in-line
-     (yaml--frame "nb-ns-double-in-line"
-       (yaml--rep2 0 nil
-         (lambda ()
+          (yaml--any (yaml--parse-from-grammar 'ns-s-block-map-implicit-key)
+                     (yaml--parse-from-grammar 'e-node))
+          (yaml--parse-from-grammar 'c-l-block-map-implicit-value (nth 0 
args)))))
+
+      ('l-nb-folded-lines
+       (let ((n (nth 0 args)))
+         (setq res
            (yaml--all
+            (yaml--parse-from-grammar 's-nb-folded-text n)
             (yaml--rep2 0 nil
-              (lambda () (yaml--parse-from-grammar 's-white)))
-            (yaml--parse-from-grammar 'ns-double-char))))))
-
-    ('s-l+block-node
-     (yaml--frame "s-l+block-node"
-       (yaml--any
-        (yaml--parse-from-grammar 's-l+block-in-block (nth 0 args) (nth 1 
args))
-        (yaml--parse-from-grammar 's-l+flow-in-block (nth 0 args)))))
-
-    ('ns-esc-bell
-     (yaml--frame "ns-esc-bell" (yaml--chr ?a)))
-
-    ('c-named-tag-handle
-     (yaml--frame "c-named-tag-handle"
-       (yaml--all
-        (yaml--chr ?\!)
-        (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-word-char)))
-        (yaml--chr ?\!))))
-
-    ('s-separate-lines
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-separate-lines"
-         (yaml--any (yaml--all (yaml--parse-from-grammar 's-l-comments)
-                               (yaml--parse-from-grammar 's-flow-line-prefix 
n))
-                    (yaml--parse-from-grammar 's-separate-in-line)))))
-
-    ('l-directive
-     (yaml--frame "l-directive"
-       (yaml--all (yaml--chr ?\%)
-                  (yaml--any (yaml--parse-from-grammar 'ns-yaml-directive)
-                             (yaml--parse-from-grammar 'ns-tag-directive)
-                             (yaml--parse-from-grammar 'ns-reserved-directive))
-                  (yaml--parse-from-grammar 's-l-comments))))
-
-    ('ns-esc-escape
-     (yaml--frame "ns-esc-escape" (yaml--chr ?e)))
-
-    ('b-nb-literal-next
-     (let ((n (nth 0 args)))
-       (yaml--frame "b-nb-literal-next"
-         (yaml--all (yaml--parse-from-grammar 'b-as-line-feed)
-                    (yaml--parse-from-grammar 'l-nb-literal-text n)))))
-
-    ('ns-s-flow-map-entries
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-s-flow-map-entries"
-         (yaml--all
-          (yaml--parse-from-grammar 'ns-flow-map-entry n c)
-          (yaml--rep 0 1 (lambda () (yaml--parse-from-grammar 's-separate n 
c)))
-          (yaml--rep 0 1
-            (lambda ()
-              (yaml--all
-               (yaml--chr ?\,)
-               (yaml--rep 0 1
-                 (lambda () (yaml--parse-from-grammar 's-separate n c)))
-               (yaml--rep 0 1
-                 (lambda ()
-                   (yaml--parse-from-grammar 'ns-s-flow-map-entries
-                                             n
-                                             c))))))))))
-
-    ('c-nb-comment-text
-     (yaml--frame "c-nb-comment-text"
-       (yaml--all
-        (yaml--chr ?\#)
-        (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'nb-char))))))
-
-    ('ns-dec-digit
-     (yaml--frame "ns-dec-digit"
-       (yaml--chr-range ?\x30 ?\x39)))
-
-    ('ns-yaml-directive
-     (yaml--frame "ns-yaml-directive"
-       (yaml--all (yaml--chr ?Y) (yaml--chr ?A) (yaml--chr ?M) (yaml--chr ?L)
-                  (yaml--parse-from-grammar 's-separate-in-line)
-                  (yaml--parse-from-grammar 'ns-yaml-version))))
-
-    ('c-mapping-key
-     (yaml--frame "c-mapping-key" (yaml--chr ?\?)))
-
-    ('b-as-line-feed
-     (yaml--frame "b-as-line-feed"
-       (yaml--parse-from-grammar 'b-break)))
-
-    ('s-l+block-in-block
-     (yaml--frame "s-l+block-in-block"
-       (yaml--any
-        (yaml--parse-from-grammar 's-l+block-scalar
-                                  (nth 0 args)
-                                  (nth 1 args))
-        (yaml--parse-from-grammar 's-l+block-collection
-                                  (nth 0 args)
-                                  (nth 1 args)))))
-
-    ('ns-esc-paragraph-separator
-     (yaml--frame "ns-esc-paragraph-separator" (yaml--chr ?P)))
-
-    ('c-double-quoted
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-double-quoted"
-         (yaml--all (yaml--chr ?\")
-                    (yaml--parse-from-grammar 'nb-double-text n c)
-                    (yaml--chr ?\")))))
-
-    ('b-line-feed
-     (yaml--frame "b-line-feed" (yaml--chr ?\x0A)))
-
-    ('ns-esc-horizontal-tab
-     (yaml--frame "ns-esc-horizontal-tab"
-       (yaml--any (yaml--chr ?t) (yaml--chr ?\x09))))
-
-    ('c-ns-flow-map-empty-key-entry
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-flow-map-empty-key-entry"
-         (yaml--all
-          (yaml--parse-from-grammar 'e-node)
-          (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c)))))
+              (lambda ()
+                (yaml--all (yaml--parse-from-grammar 'b-l-folded n "block-in")
+                           (yaml--parse-from-grammar 's-nb-folded-text 
n))))))))
 
-    ('l-any-document
-     (yaml--frame "l-any-document"
-       (yaml--any (yaml--parse-from-grammar 'l-directive-document)
-                  (yaml--parse-from-grammar 'l-explicit-document)
-                  (yaml--parse-from-grammar 'l-bare-document))))
+      ('c-l-block-map-explicit-key
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--chr ?\?)
+            (yaml--parse-from-grammar 's-l+block-indented n "block-out")))))
+
+      ('s-separate
+       (let ((n (nth 0 args))
+             (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-in" (yaml--parse-from-grammar 's-separate-lines n))
+             ("block-key" (yaml--parse-from-grammar 's-separate-in-line))
+             ("block-out" (yaml--parse-from-grammar 's-separate-lines n))
+             ("flow-in" (yaml--parse-from-grammar 's-separate-lines n))
+             ("flow-key" (yaml--parse-from-grammar 's-separate-in-line))
+             ("flow-out" (yaml--parse-from-grammar 's-separate-lines n))))))
+
+      ('ns-flow-pair-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any
+            (yaml--parse-from-grammar 'ns-flow-pair-yaml-key-entry n c)
+            (yaml--parse-from-grammar 'c-ns-flow-map-empty-key-entry n c)
+            (yaml--parse-from-grammar 'c-ns-flow-pair-json-key-entry n c)))))
+
+      ('c-flow-indicator
+       (setq res
+         (yaml--any (yaml--chr ?\,)
+                    (yaml--chr ?\[)
+                    (yaml--chr ?\])
+                    (yaml--chr ?\{)
+                    (yaml--chr ?\}))))
+
+      ('ns-flow-pair-yaml-key-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'ns-s-implicit-yaml-key "flow-key")
+            (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c)))))
+
+      ('e-scalar
+       (setq res (yaml--empty)))
 
-    ('c-tag (yaml--frame "c-tag" (yaml--chr ?\!)))
+      ('s-indent-lt
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 's-space)))
+            (< (length (yaml--match)) n)))))
 
-    ('c-escape (yaml--frame "c-escape" (yaml--chr ?\\)))
+      ('nb-single-one-line
+       (setq res
+         (yaml--rep2 0 nil
+           (lambda () (yaml--parse-from-grammar 'nb-single-char)))))
 
-    ('c-sequence-end (yaml--frame "c-sequence-end" (yaml--chr ?\])))
+      ('c-collect-entry
+       (setq res (yaml--chr ?\,)))
 
-    ('l+block-mapping
-     (yaml--frame "l+block-mapping"
-       (let ((new-m (yaml--auto-detect-indent (nth 0 args))))
-         (if (= 0 new-m)
-             nil ;; For some fixed auto-detected m > 0 ;; Is this right???
+      ('ns-l-compact-sequence
+       (let ((n (nth 0 args)))
+         (setq res
            (yaml--all
-            (yaml--set m new-m)
-            (yaml--rep 1 nil
+            (yaml--parse-from-grammar 'c-l-block-seq-entry n)
+            (yaml--rep2 0 nil
               (lambda ()
                 (yaml--all
-                 (yaml--parse-from-grammar 's-indent
-                                           (+ (nth 0 args) new-m))
-                 (yaml--parse-from-grammar 'ns-l-block-map-entry
-                                           (+ (nth 0 args) new-m))))))))))
-
-    ('c-ns-flow-map-adjacent-value
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-flow-map-adjacent-value"
-         (yaml--all
-          (yaml--chr ?\:)
-          (yaml--any
+                 (yaml--parse-from-grammar 's-indent n)
+                 (yaml--parse-from-grammar 'c-l-block-seq-entry n))))))))
+
+      ('c-comment
+       (setq res (yaml--chr ?\#)))
+
+      ('s-line-prefix
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (pcase c
+             ("block-in" (yaml--parse-from-grammar 's-block-line-prefix n))
+             ("block-out" (yaml--parse-from-grammar 's-block-line-prefix n))
+             ("flow-in" (yaml--parse-from-grammar 's-flow-line-prefix n))
+             ("flow-out" (yaml--parse-from-grammar 's-flow-line-prefix n))))))
+
+      ('s-tab
+       (setq res (yaml--chr ?\x09)))
+
+      ('c-directive
+       (setq res (yaml--chr ?\%)))
+
+      ('ns-flow-pair
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any
+            (yaml--all (yaml--chr ?\?)
+                       (yaml--parse-from-grammar 's-separate n c)
+                       (yaml--parse-from-grammar 'ns-flow-map-explicit-entry n 
c))
+            (yaml--parse-from-grammar 'ns-flow-pair-entry n c)))))
+
+      ('s-l+block-indented
+       (setq res
+         (let ((m (yaml--auto-detect-indent (nth 0 args))))
+           (yaml--any
+            (yaml--all
+             (yaml--parse-from-grammar 's-indent m)
+             (yaml--any
+              (yaml--parse-from-grammar 'ns-l-compact-sequence
+                                        (+ (nth 0 args) (+ 1 m)))
+              (yaml--parse-from-grammar 'ns-l-compact-mapping
+                                        (+ (nth 0 args) (+ 1 m)))))
+            (yaml--parse-from-grammar 's-l+block-node (nth 0 args) (nth 1 
args))
+            (yaml--all (yaml--parse-from-grammar 'e-node)
+                       (yaml--parse-from-grammar 's-l-comments))))))
+
+      ('c-single-quote
+       (setq res (yaml--chr ?\')))
+
+      ('s-flow-line-prefix
+       (let ((n (nth 0 args)))
+         (setq res
            (yaml--all
+            (yaml--parse-from-grammar 's-indent n)
             (yaml--rep 0 1
-              (lambda () (yaml--parse-from-grammar 's-separate n c)))
-            (yaml--parse-from-grammar 'ns-flow-node n c))
-           (yaml--parse-from-grammar 'e-node))))))
+              (lambda () (yaml--parse-from-grammar 's-separate-in-line)))))))
 
-    ('s-single-next-line
-     (let ((n (nth 0 args)))
-       (yaml--frame "s-single-next-line"
+      ('nb-double-char
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 'c-ns-esc-char)
+          (yaml--but (lambda () (yaml--parse-from-grammar 'nb-json))
+                     (lambda () (yaml--chr ?\\)) (lambda () (yaml--chr 
?\"))))))
+
+      ('l-comment
+       (setq res
          (yaml--all
-          (yaml--parse-from-grammar 's-flow-folded n)
+          (yaml--parse-from-grammar 's-separate-in-line)
           (yaml--rep 0 1
-            (lambda ()
-              (yaml--all
-               (yaml--parse-from-grammar 'ns-single-char)
-               (yaml--parse-from-grammar 'nb-ns-single-in-line)
-               (yaml--any
-                (yaml--parse-from-grammar 's-single-next-line n)
-                (yaml--rep2 0 nil
-                  (lambda () (yaml--parse-from-grammar 's-white)))))))))))
-
-    ('s-separate-in-line
-     (yaml--frame "s-separate-in-line"
-       (yaml--any (yaml--rep 1 nil
-                    (lambda () (yaml--parse-from-grammar 's-white)))
-                  (yaml--start-of-line))))
-
-    ('b-comment
-     (yaml--frame "b-comment"
-       (yaml--any (yaml--parse-from-grammar 'b-non-content)
-                  (yaml--end-of-stream))))
-
-    ('ns-esc-backslash
-     (yaml--frame "ns-esc-backslash" (yaml--chr ?\\)))
-
-    ('c-ns-anchor-property
-     (yaml--frame "c-ns-anchor-property"
-       (yaml--all (yaml--chr ?\&)
-                  (yaml--parse-from-grammar 'ns-anchor-name))))
-
-    ('ns-plain-safe
-     (let ((c (nth 0 args)))
-       (yaml--frame "ns-plain-safe"
-         (pcase c
-           ("block-key" (yaml--parse-from-grammar 'ns-plain-safe-out))
-           ("flow-in" (yaml--parse-from-grammar 'ns-plain-safe-in))
-           ("flow-key" (yaml--parse-from-grammar 'ns-plain-safe-in))
-           ("flow-out" (yaml--parse-from-grammar 'ns-plain-safe-out))))))
-
-    ('ns-flow-content
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-content"
-         (yaml--any (yaml--parse-from-grammar 'ns-flow-yaml-content n c)
-                    (yaml--parse-from-grammar 'c-flow-json-content n c)))))
-
-    ('c-ns-flow-map-separate-value
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "c-ns-flow-map-separate-value"
+            (lambda () (yaml--parse-from-grammar 'c-nb-comment-text)))
+          (yaml--parse-from-grammar 'b-comment))))
+
+      ('ns-hex-digit
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 'ns-dec-digit)
+          (yaml--chr-range ?\x41 ?\x46)
+          (yaml--chr-range ?\x61 ?\x66))))
+
+      ('s-l+flow-in-block
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 's-separate (+ n 1) "flow-out")
+            (yaml--parse-from-grammar 'ns-flow-node (+ n 1) "flow-out")
+            (yaml--parse-from-grammar 's-l-comments)))))
+
+      ('c-flow-json-node
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all
+                 (yaml--parse-from-grammar 'c-ns-properties n c)
+                 (yaml--parse-from-grammar 's-separate n c))))
+            (yaml--parse-from-grammar 'c-flow-json-content n c)))))
+
+      ('c-b-block-header
+       (let ((m (nth 0 args))
+             (tt (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--any
+             (and (not (string-match "\\`[-+][0-9]"
+                                     (yaml--slice yaml--parsing-position)))
+                  ;; hack to not match this case if there is a number.
+                  (yaml--all
+                   (yaml--parse-from-grammar 'c-indentation-indicator m)
+                   (yaml--parse-from-grammar 'c-chomping-indicator tt)))
+             (yaml--all
+              (yaml--parse-from-grammar 'c-chomping-indicator tt)
+              (yaml--parse-from-grammar 'c-indentation-indicator m)))
+            (yaml--parse-from-grammar 's-b-comment)))))
+
+      ('ns-esc-8-bit
+       (setq res
+         (yaml--all (yaml--chr ?x)
+                    (yaml--rep 2 2
+                      (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))
+
+      ('ns-anchor-name
+       (setq res
+         (yaml--rep 1 nil
+           (lambda () (yaml--parse-from-grammar 'ns-anchor-char)))))
+
+      ('ns-esc-slash
+       (setq res (yaml--chr ?\/)))
+
+      ('s-nb-folded-text
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 's-indent n)
+                      (yaml--parse-from-grammar 'ns-char)
+                      (yaml--rep2 0 nil
+                        (lambda () (yaml--parse-from-grammar 'nb-char)))))))
+
+      ('ns-word-char
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'ns-dec-digit)
+                    (yaml--parse-from-grammar 'ns-ascii-letter)
+                    (yaml--chr ?\-))))
+
+      ('ns-esc-form-feed
+       (setq res (yaml--chr ?f)))
+
+      ('ns-s-block-map-implicit-key
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 'c-s-implicit-json-key "block-key")
+          (yaml--parse-from-grammar 'ns-s-implicit-yaml-key "block-key"))))
+
+      ('ns-esc-null (setq res (yaml--chr ?\0)))
+
+      ('c-ns-tag-property
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'c-verbatim-tag)
+                    (yaml--parse-from-grammar 'c-ns-shorthand-tag)
+                    (yaml--parse-from-grammar 'c-non-specific-tag))))
+
+      ('c-ns-local-tag-prefix
+       (setq res
          (yaml--all
-          (yaml--chr ?\:)
-          (yaml--chk "!" (yaml--parse-from-grammar 'ns-plain-safe c))
-          (yaml--any (yaml--all (yaml--parse-from-grammar 's-separate n c)
-                                (yaml--parse-from-grammar 'ns-flow-node n c))
-                     (yaml--parse-from-grammar 'e-node))))))
-
-    ('in-flow
-     (let ((c (nth 0 args)))
-       (yaml--frame "in-flow"
-         (pcase c
-           ("block-key" "flow-key")
-           ("flow-in" "flow-in")
-           ("flow-key" "flow-key")
-           ("flow-out" "flow-in")))))
-
-    ('c-verbatim-tag
-     (yaml--frame "c-verbatim-tag"
-       (yaml--all
-        (yaml--chr ?\!)
-        (yaml--chr ?\<)
-        (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-uri-char)))
-        (yaml--chr ?\>))))
-
-    ('c-literal
-     (yaml--frame "c-literal" (yaml--chr ?\|)))
-
-    ('ns-esc-line-feed
-     (yaml--frame "ns-esc-line-feed" (yaml--chr ?n)))
-
-    ('nb-double-multi-line
-     (let ((n (nth 0 args)))
-       (yaml--frame "nb-double-multi-line"
+          (yaml--chr ?\!)
+          (yaml--rep2 0 nil
+            (lambda () (yaml--parse-from-grammar 'ns-uri-char))))))
+
+      ('ns-tag-directive
+       (setq res
+         (yaml--all (yaml--chr ?T) (yaml--chr ?A) (yaml--chr ?G)
+                    (yaml--parse-from-grammar 's-separate-in-line)
+                    (yaml--parse-from-grammar 'c-tag-handle)
+                    (yaml--parse-from-grammar 's-separate-in-line)
+                    (yaml--parse-from-grammar 'ns-tag-prefix))))
+
+      ('c-flow-mapping
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--chr ?\{)
+            (yaml--rep 0 1
+              (lambda () (yaml--parse-from-grammar 's-separate n c)))
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--parse-from-grammar 'ns-s-flow-map-entries
+                                          n
+                                          (yaml--parse-from-grammar 'in-flow 
c))))
+            (yaml--chr ?\})))))
+
+      ('ns-double-char
+       (setq res
+         (yaml--but (lambda () (yaml--parse-from-grammar 'nb-double-char))
+                    (lambda () (yaml--parse-from-grammar 's-white)))))
+
+      ('ns-ascii-letter
+       (setq res
+         (yaml--any (yaml--chr-range ?\x41 ?\x5A)
+                    (yaml--chr-range ?\x61 ?\x7A))))
+
+      ('b-break
+       (setq res
+         (yaml--any (yaml--all (yaml--parse-from-grammar 'b-carriage-return)
+                               (yaml--parse-from-grammar 'b-line-feed))
+                    (yaml--parse-from-grammar 'b-carriage-return)
+                    (yaml--parse-from-grammar 'b-line-feed))))
+
+      ('nb-ns-double-in-line
+       (setq res
+         (yaml--rep2 0 nil
+           (lambda ()
+             (yaml--all
+              (yaml--rep2 0 nil
+                (lambda () (yaml--parse-from-grammar 's-white)))
+              (yaml--parse-from-grammar 'ns-double-char))))))
+
+      ('s-l+block-node
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 's-l+block-in-block (nth 0 args) (nth 1 
args))
+          (yaml--parse-from-grammar 's-l+flow-in-block (nth 0 args)))))
+
+      ('ns-esc-bell
+       (setq res (yaml--chr ?a)))
+
+      ('c-named-tag-handle
+       (setq res
          (yaml--all
-          (yaml--parse-from-grammar 'nb-ns-double-in-line)
-          (yaml--any (yaml--parse-from-grammar 's-double-next-line n)
-                     (yaml--rep2 0 nil
-                       (lambda () (yaml--parse-from-grammar 's-white))))))))
-
-    ('b-l-spaced
-     (let ((n (nth 0 args)))
-       (yaml--frame "b-l-spaced"
+          (yaml--chr ?\!)
+          (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 
'ns-word-char)))
+          (yaml--chr ?\!))))
+
+      ('s-separate-lines
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--any (yaml--all (yaml--parse-from-grammar 's-l-comments)
+                                 (yaml--parse-from-grammar 's-flow-line-prefix 
n))
+                      (yaml--parse-from-grammar 's-separate-in-line)))))
+
+      ('l-directive
+       (setq res
+         (yaml--all (yaml--chr ?\%)
+                    (yaml--any (yaml--parse-from-grammar 'ns-yaml-directive)
+                               (yaml--parse-from-grammar 'ns-tag-directive)
+                               (yaml--parse-from-grammar 
'ns-reserved-directive))
+                    (yaml--parse-from-grammar 's-l-comments))))
+
+      ('ns-esc-escape
+       (setq res (yaml--chr ?e)))
+
+      ('b-nb-literal-next
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all (yaml--parse-from-grammar 'b-as-line-feed)
+                      (yaml--parse-from-grammar 'l-nb-literal-text n)))))
+
+      ('ns-s-flow-map-entries
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'ns-flow-map-entry n c)
+            (yaml--rep 0 1 (lambda () (yaml--parse-from-grammar 's-separate n 
c)))
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all
+                 (yaml--chr ?\,)
+                 (yaml--rep 0 1
+                   (lambda () (yaml--parse-from-grammar 's-separate n c)))
+                 (yaml--rep 0 1
+                   (lambda ()
+                     (yaml--parse-from-grammar 'ns-s-flow-map-entries
+                                               n
+                                               c))))))))))
+
+      ('c-nb-comment-text
+       (setq res
          (yaml--all
-          (yaml--parse-from-grammar 'b-as-line-feed)
-          (yaml--rep2 0 nil
-            (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))))))
+          (yaml--chr ?\#)
+          (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'nb-char))))))
+
+      ('ns-dec-digit
+       (setq res
+         (yaml--chr-range ?\x30 ?\x39)))
+
+      ('ns-yaml-directive
+       (setq res
+         (yaml--all (yaml--chr ?Y) (yaml--chr ?A) (yaml--chr ?M) (yaml--chr ?L)
+                    (yaml--parse-from-grammar 's-separate-in-line)
+                    (yaml--parse-from-grammar 'ns-yaml-version))))
+
+      ('c-mapping-key
+       (setq res (yaml--chr ?\?)))
+
+      ('b-as-line-feed
+       (setq res
+         (yaml--parse-from-grammar 'b-break)))
 
-    ('ns-flow-yaml-content
-     (let ((n (nth 0 args)) (c (nth 1 args)))
-       (yaml--frame "ns-flow-yaml-content"
-         (yaml--parse-from-grammar 'ns-plain n c))))
-    (_ (error "Unknown parsing grammar state: %s %s" state args))))
+      ('s-l+block-in-block
+       (setq res
+         (yaml--any
+          (yaml--parse-from-grammar 's-l+block-scalar
+                                    (nth 0 args)
+                                    (nth 1 args))
+          (yaml--parse-from-grammar 's-l+block-collection
+                                    (nth 0 args)
+                                    (nth 1 args)))))
+
+      ('ns-esc-paragraph-separator
+       (setq res (yaml--chr ?P)))
+
+      ('c-double-quoted
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all (yaml--chr ?\")
+                      (yaml--parse-from-grammar 'nb-double-text n c)
+                      (yaml--chr ?\")))))
+
+      ('b-line-feed
+       (setq res (yaml--chr ?\x0A)))
+
+      ('ns-esc-horizontal-tab
+       (setq res
+         (yaml--any (yaml--chr ?t) (yaml--chr ?\x09))))
+
+      ('c-ns-flow-map-empty-key-entry
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'e-node)
+            (yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c)))))
+
+      ('l-any-document
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'l-directive-document)
+                    (yaml--parse-from-grammar 'l-explicit-document)
+                    (yaml--parse-from-grammar 'l-bare-document))))
+
+      ('c-tag (setq res (yaml--chr ?\!)))
+
+      ('c-escape (setq res (yaml--chr ?\\)))
+
+      ('c-sequence-end (setq res (yaml--chr ?\])))
+
+      ('l+block-mapping
+       (setq res
+         (let ((new-m (yaml--auto-detect-indent (nth 0 args))))
+           (if (= 0 new-m)
+               nil ;; For some fixed auto-detected m > 0 ;; Is this right???
+             (yaml--all
+              (yaml--set m new-m)
+              (yaml--rep 1 nil
+                (lambda ()
+                  (yaml--all
+                   (yaml--parse-from-grammar 's-indent
+                                             (+ (nth 0 args) new-m))
+                   (yaml--parse-from-grammar 'ns-l-block-map-entry
+                                             (+ (nth 0 args) new-m))))))))))
+
+      ('c-ns-flow-map-adjacent-value
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--chr ?\:)
+            (yaml--any
+             (yaml--all
+              (yaml--rep 0 1
+                (lambda () (yaml--parse-from-grammar 's-separate n c)))
+              (yaml--parse-from-grammar 'ns-flow-node n c))
+             (yaml--parse-from-grammar 'e-node))))))
+
+      ('s-single-next-line
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 's-flow-folded n)
+            (yaml--rep 0 1
+              (lambda ()
+                (yaml--all
+                 (yaml--parse-from-grammar 'ns-single-char)
+                 (yaml--parse-from-grammar 'nb-ns-single-in-line)
+                 (yaml--any
+                  (yaml--parse-from-grammar 's-single-next-line n)
+                  (yaml--rep2 0 nil
+                    (lambda () (yaml--parse-from-grammar 's-white)))))))))))
+
+      ('s-separate-in-line
+       (setq res
+         (yaml--any (yaml--rep 1 nil
+                      (lambda () (yaml--parse-from-grammar 's-white)))
+                    (yaml--start-of-line))))
+
+      ('b-comment
+       (setq res
+         (yaml--any (yaml--parse-from-grammar 'b-non-content)
+                    (yaml--end-of-stream))))
+
+      ('ns-esc-backslash
+       (setq res (yaml--chr ?\\)))
+
+      ('c-ns-anchor-property
+       (setq res
+         (yaml--all (yaml--chr ?\&)
+                    (yaml--parse-from-grammar 'ns-anchor-name))))
+
+      ('ns-plain-safe
+       (let ((c (nth 0 args)))
+         (setq res
+           (pcase c
+             ("block-key" (yaml--parse-from-grammar 'ns-plain-safe-out))
+             ("flow-in" (yaml--parse-from-grammar 'ns-plain-safe-in))
+             ("flow-key" (yaml--parse-from-grammar 'ns-plain-safe-in))
+             ("flow-out" (yaml--parse-from-grammar 'ns-plain-safe-out))))))
+
+      ('ns-flow-content
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--any (yaml--parse-from-grammar 'ns-flow-yaml-content n c)
+                      (yaml--parse-from-grammar 'c-flow-json-content n c)))))
+
+      ('c-ns-flow-map-separate-value
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--all
+            (yaml--chr ?\:)
+            (yaml--chk "!" (yaml--parse-from-grammar 'ns-plain-safe c))
+            (yaml--any (yaml--all (yaml--parse-from-grammar 's-separate n c)
+                                  (yaml--parse-from-grammar 'ns-flow-node n c))
+                       (yaml--parse-from-grammar 'e-node))))))
+
+      ('in-flow
+       (let ((c (nth 0 args)))
+         (setq res
+           (pcase c
+             ("block-key" "flow-key")
+             ("flow-in" "flow-in")
+             ("flow-key" "flow-key")
+             ("flow-out" "flow-in")))))
+
+      ('c-verbatim-tag
+       (setq res
+         (yaml--all
+          (yaml--chr ?\!)
+          (yaml--chr ?\<)
+          (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-uri-char)))
+          (yaml--chr ?\>))))
+
+      ('c-literal
+       (setq res (yaml--chr ?\|)))
+
+      ('ns-esc-line-feed
+       (setq res (yaml--chr ?n)))
+
+      ('nb-double-multi-line
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'nb-ns-double-in-line)
+            (yaml--any (yaml--parse-from-grammar 's-double-next-line n)
+                       (yaml--rep2 0 nil
+                         (lambda () (yaml--parse-from-grammar 's-white))))))))
+
+      ('b-l-spaced
+       (let ((n (nth 0 args)))
+         (setq res
+           (yaml--all
+            (yaml--parse-from-grammar 'b-as-line-feed)
+            (yaml--rep2 0 nil
+              (lambda () (yaml--parse-from-grammar 'l-empty n "block-in")))))))
+
+      ('ns-flow-yaml-content
+       (let ((n (nth 0 args)) (c (nth 1 args)))
+         (setq res
+           (yaml--parse-from-grammar 'ns-plain n c))))
+      (_ (error "Unknown parsing grammar state: %s %s" state args)))
+    (when (and yaml--parse-debug
+               res
+               (not (member name yaml--tracing-ignore)))
+      (message "<%s|%s %40s = '%s'"
+               (make-string (length yaml--states) ?-)
+               (make-string (- 70 (length yaml--states)) ?\s)
+               name
+               (replace-regexp-in-string
+                "\n"
+                "↓"
+                (substring yaml--parsing-input beg yaml--parsing-position))))
+    (yaml--pop-state)
+    (if (not res)
+           nil
+         (let ((res-type (cdr (assoc name yaml--grammar-resolution-rules)))
+               (res (if (member name yaml--terminal-rules)
+                                ;; Ignore children if at-rule is
+                                ;; indicated to be terminal.
+                                t
+                              res)))
+           (cond
+            ((or (assoc name yaml--grammar-events-in)
+                 (assoc name yaml--grammar-events-out))
+             (let ((str (substring yaml--parsing-input beg 
yaml--parsing-position)))
+               (when yaml--parsing-store-position
+                 (setq str (propertize str 'yaml-position
+                                       (cons (1+ beg)
+                                             (1+ yaml--parsing-position)))))
+               (when (member name '("c-l+folded" "c-l+literal"))
+                 (setq str (propertize str 'yaml-n (max 0 yaml-n))))
+               (list name
+                     (if yaml--parsing-store-position
+                         (propertize str 'yaml-position (cons (1+ beg)
+                                                              (1+ 
yaml--parsing-position)))
+                       str)
+                     res)))
+            ((equal res-type 'list) (list name res))
+            ((equal res-type 'literal)
+             (substring yaml--parsing-input beg yaml--parsing-position))
+            (t res))))))
 
 ;;; Encoding
 

Reply via email to