diff options
Diffstat (limited to 'grammars/html.bp')
| -rw-r--r-- | grammars/html.bp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/grammars/html.bp b/grammars/html.bp new file mode 100644 index 0000000..cea19c1 --- /dev/null +++ b/grammars/html.bp @@ -0,0 +1,26 @@ +# HTML grammar +HTML: __ [doctype __] *html-element%__ __ + +doctype: "<!DOCTYPE" ..`> + +html-element: ( + >(`<("area"/"base"/"br"/"col"/"embed"/"hr"/"img"/"input"/"link"/"meta"/"param"/"source"/"track"/"wbr")) void-element + / >(`<("script"/"style"/"textarea"/"title")) raw-element + / >(`<("template")) template-element + / normal-element) + +void-element: `< @tag=(id==match-tag) __attributes__ [`/] __ `> + +template-element: `< @tag=(id==match-tag) __`> __ >match-body @body=*(!`<$. / comment / html-element / !("</"tag__`>)$.) ("</"tag__`>) + +raw-element: `< @tag=(id==match-tag) __attributes__ `> >match-body @body=.. ("</"tag__`>) + +normal-element: `< @tag=(id==match-tag) __attributes__ `> >match-body @body=*(!`<$. / comment / html-element / !("</"tag__`>)$.) "</"tag__`> + +comment: "<!--" ..."-->" + +attributes: *attribute%__ +attribute: (+id%`:)__`=__ (id / `" ..`" / `' ..`') +attribute: (+id%`:)__`=__ (id / `" ..`" / `' ..`') +match-tag: id +match-body: '' |
