[up] [log] [?]
[first]  [entry] [exit]  [last]

(meg/match ~{:close-tag (drop (* "</" (cmt (* (backref :tag-name) (capture :w+)) "<function =>") ">")) :main (* :tagged -1) :open-tag (* (constant :tag) "<" (capture :w+ :tag-name) ">") :tagged (unref (replace (* :open-tag :value :close-tag) "<cfunction struct>")) :untagged (capture (some (if-not "<" 1))) :value (* (constant :value) (group (any (+ :tagged :untagged))))}
           "<p><em>Hello</em> <strong>world</strong>!</p>")

captures and tags
captures: @[:tag "p" :value @[{:tag "em" :value @["Hello"]} " " {:tag "strong" :value @["world"]} "!"] true]
tagged-captures:
  tags: @[nil :tag-name nil nil nil nil :tag-name nil nil]
  values: @[:tag "p" :value " " "!" @[{:tag "em" :value @["Hello"]} " " {:tag "strong" :value @["world"]} "!"] "p" "p" true]

current frame
status: entered frame 283
peg: ">"
text: <p><em>Hello</em> <strong>world</strong>!</p>
index: 44

frames call stack
283 ">"
271 (* "</" (cmt (* (backref :tag-name) (capture :w+)) "<function =>") ">")
270 (drop (* "</" (cmt (* (backref :tag-name) (capture :w+)) "<function =>") ">"))
269 :close-tag
4 (* :open-tag :value :close-tag)
3 (replace (* :open-tag :value :close-tag) "<cfunction struct>")
2 (unref (replace (* :open-tag :value :close-tag) "<cfunction struct>"))
1 :tagged
0 (* :tagged -1)