@define webpage
$(IDENT)=[a-zA-Z0-9-]+
doctype{Doctype}:
  from <!DOCTYPE to >
comment:
  from <!-- to -->
@include webpage.include
entity{Entity}:
  match /&[A-Za-z]+;/
  match /&#[0-9]+;/
markup.css{Markup}:
  limit
  from /<style/ to //?>/
  @include webpage.markup
  ...contents{Markup}:
    between here and </style> with _css_webpage
markup.script{Markup}:
  limit
  from /<script/ to //?>/
  @include webpage.markup
  ...contents{Markup}:
    between here and </script> with _javascript_webpage
markup.limit{Markup}:
  limit
  from /<(head|body)/ to //?>/
  @include webpage.markup
markup{Markup}:
  from /<$(IDENT)/ to //?>/
  @include webpage.markup
markup.close{Markup}:
  match /</$(IDENT)\s*>/
