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