#!/usr/bin/python

import sys, re

definitions = {}
inpre = False
def_re = re.compile(r'(partial )?interface <(dfn|a) id=([^ >]*).*?>(.*)</\2>')
for line in sys.stdin.readlines():
  if '<pre class=idl>' in line: inpre = True
  if inpre:
    match = def_re.search(line)
    if match:
      partial, _, id, name = match.groups()
      if not name in definitions: definitions[name] = {}
      if partial:
        if not 'partial' in definitions[name]: definitions[name]['partial'] = []
        definitions[name]['partial'].append(id)
      else:
        if 'primary' in definitions[name]:
          print >> sys.stderr, "duplicate interface definitions for %s" % name
          sys.exit(1)
        definitions[name]['primary'] = id
  if '</pre>' in line: inpre = False

print "<ul>"
write = sys.stdout.write
for name in sorted(definitions.keys()):
  write(" <li><code>")
  if 'primary' in definitions[name]:
    write("<a href=#%s>%s</a>" % (definitions[name]['primary'], name))
  else:
    write(name)
  print "</code>",
  if 'partial' in definitions[name]:
    write(", <a href=#%s>partial" % definitions[name]['partial'][0])
    if len(definitions[name]['partial']) > 1: print " 1",
    write("</a>")
    for i in range(1, len(definitions[name]['partial'])):
      write(" <a href=#%s>%s</a>" % (definitions[name]['partial'][i], i))
  write("\n")
print "</ul>"
