]> granicus.if.org Git - re2c/commitdiff
Merge branch 'master' into simplified_codegen.
authorUlya Trofimovich <skvadrik@gmail.com>
Sat, 21 Nov 2015 20:03:10 +0000 (20:03 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Sat, 21 Nov 2015 20:03:10 +0000 (20:03 +0000)
* master:
  Updated version to 0.14.4.dev
  Release 0.14.3.
  Added simple test for yacc-style brackets (see patch #27)
  Fixed '#27 re2c crashes reading files containing %{ %}' (patch by Rui)
  Makefile.am: dropped distfiles for MSVC (they are broken anyway)
  Added full another test for bug #57.
  Updated version to 0.14.3.dev
  Release 0.14.2.
  Fixed bug #57: Wrong result only if another rule is present
  Updated version to 0.14.2.dev
  Release 0.14.1.
  Pad version with '0' instead of nulls

1  2 
re2c/bootstrap/doc/manual.html
re2c/bootstrap/doc/re2c.1
re2c/bootstrap/src/conf/parse_opts.cc
re2c/bootstrap/src/parse/lex.cc
re2c/bootstrap/src/parse/lex_conf.cc
re2c/src/conf/msg.cc
re2c/src/ir/regexp/regexp.cc
re2c/test/bug57.c
re2c/test/bug57_original.bi--case-insensitive.c
re2c/test/scanner_re2c_default.D.c
re2c/test/scanner_re2c_default.D.re

index c74e2fd6298de2e92e0e267a23682c922d3f498d,0000000000000000000000000000000000000000..124e8b06038e00166a83d63c3f6a5547b2ab2e52
mode 100644,000000..100644
--- /dev/null
@@@ -1,2473 -1,0 +1,2473 @@@
- <div class="paragraph"><p>This manpage describes <strong>re2c</strong>, version 0.14.1.dev, package date 28 Sep 2015.</p></div>\r
 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
 +    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 +<head>\r
 +<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
 +<meta name="generator" content="AsciiDoc 8.6.9" />\r
 +<title>RE2C (1)</title>\r
 +<style type="text/css">\r
 +/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
 +\r
 +/* Default font. */\r
 +body {\r
 +  font-family: Georgia,serif;\r
 +}\r
 +\r
 +/* Title font. */\r
 +h1, h2, h3, h4, h5, h6,\r
 +div.title, caption.title,\r
 +thead, p.table.header,\r
 +#toctitle,\r
 +#author, #revnumber, #revdate, #revremark,\r
 +#footer {\r
 +  font-family: Arial,Helvetica,sans-serif;\r
 +}\r
 +\r
 +body {\r
 +  margin: 1em 5% 1em 5%;\r
 +}\r
 +\r
 +a {\r
 +  color: blue;\r
 +  text-decoration: underline;\r
 +}\r
 +a:visited {\r
 +  color: fuchsia;\r
 +}\r
 +\r
 +em {\r
 +  font-style: italic;\r
 +  color: navy;\r
 +}\r
 +\r
 +strong {\r
 +  font-weight: bold;\r
 +  color: #083194;\r
 +}\r
 +\r
 +h1, h2, h3, h4, h5, h6 {\r
 +  color: #527bbd;\r
 +  margin-top: 1.2em;\r
 +  margin-bottom: 0.5em;\r
 +  line-height: 1.3;\r
 +}\r
 +\r
 +h1, h2, h3 {\r
 +  border-bottom: 2px solid silver;\r
 +}\r
 +h2 {\r
 +  padding-top: 0.5em;\r
 +}\r
 +h3 {\r
 +  float: left;\r
 +}\r
 +h3 + * {\r
 +  clear: left;\r
 +}\r
 +h5 {\r
 +  font-size: 1.0em;\r
 +}\r
 +\r
 +div.sectionbody {\r
 +  margin-left: 0;\r
 +}\r
 +\r
 +hr {\r
 +  border: 1px solid silver;\r
 +}\r
 +\r
 +p {\r
 +  margin-top: 0.5em;\r
 +  margin-bottom: 0.5em;\r
 +}\r
 +\r
 +ul, ol, li > p {\r
 +  margin-top: 0;\r
 +}\r
 +ul > li     { color: #aaa; }\r
 +ul > li > * { color: black; }\r
 +\r
 +.monospaced, code, pre {\r
 +  font-family: "Courier New", Courier, monospace;\r
 +  font-size: inherit;\r
 +  color: navy;\r
 +  padding: 0;\r
 +  margin: 0;\r
 +}\r
 +pre {\r
 +  white-space: pre-wrap;\r
 +}\r
 +\r
 +#author {\r
 +  color: #527bbd;\r
 +  font-weight: bold;\r
 +  font-size: 1.1em;\r
 +}\r
 +#email {\r
 +}\r
 +#revnumber, #revdate, #revremark {\r
 +}\r
 +\r
 +#footer {\r
 +  font-size: small;\r
 +  border-top: 2px solid silver;\r
 +  padding-top: 0.5em;\r
 +  margin-top: 4.0em;\r
 +}\r
 +#footer-text {\r
 +  float: left;\r
 +  padding-bottom: 0.5em;\r
 +}\r
 +#footer-badges {\r
 +  float: right;\r
 +  padding-bottom: 0.5em;\r
 +}\r
 +\r
 +#preamble {\r
 +  margin-top: 1.5em;\r
 +  margin-bottom: 1.5em;\r
 +}\r
 +div.imageblock, div.exampleblock, div.verseblock,\r
 +div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
 +div.admonitionblock {\r
 +  margin-top: 1.0em;\r
 +  margin-bottom: 1.5em;\r
 +}\r
 +div.admonitionblock {\r
 +  margin-top: 2.0em;\r
 +  margin-bottom: 2.0em;\r
 +  margin-right: 10%;\r
 +  color: #606060;\r
 +}\r
 +\r
 +div.content { /* Block element content. */\r
 +  padding: 0;\r
 +}\r
 +\r
 +/* Block element titles. */\r
 +div.title, caption.title {\r
 +  color: #527bbd;\r
 +  font-weight: bold;\r
 +  text-align: left;\r
 +  margin-top: 1.0em;\r
 +  margin-bottom: 0.5em;\r
 +}\r
 +div.title + * {\r
 +  margin-top: 0;\r
 +}\r
 +\r
 +td div.title:first-child {\r
 +  margin-top: 0.0em;\r
 +}\r
 +div.content div.title:first-child {\r
 +  margin-top: 0.0em;\r
 +}\r
 +div.content + div.title {\r
 +  margin-top: 0.0em;\r
 +}\r
 +\r
 +div.sidebarblock > div.content {\r
 +  background: #ffffee;\r
 +  border: 1px solid #dddddd;\r
 +  border-left: 4px solid #f0f0f0;\r
 +  padding: 0.5em;\r
 +}\r
 +\r
 +div.listingblock > div.content {\r
 +  border: 1px solid #dddddd;\r
 +  border-left: 5px solid #f0f0f0;\r
 +  background: #f8f8f8;\r
 +  padding: 0.5em;\r
 +}\r
 +\r
 +div.quoteblock, div.verseblock {\r
 +  padding-left: 1.0em;\r
 +  margin-left: 1.0em;\r
 +  margin-right: 10%;\r
 +  border-left: 5px solid #f0f0f0;\r
 +  color: #888;\r
 +}\r
 +\r
 +div.quoteblock > div.attribution {\r
 +  padding-top: 0.5em;\r
 +  text-align: right;\r
 +}\r
 +\r
 +div.verseblock > pre.content {\r
 +  font-family: inherit;\r
 +  font-size: inherit;\r
 +}\r
 +div.verseblock > div.attribution {\r
 +  padding-top: 0.75em;\r
 +  text-align: left;\r
 +}\r
 +/* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
 +div.verseblock + div.attribution {\r
 +  text-align: left;\r
 +}\r
 +\r
 +div.admonitionblock .icon {\r
 +  vertical-align: top;\r
 +  font-size: 1.1em;\r
 +  font-weight: bold;\r
 +  text-decoration: underline;\r
 +  color: #527bbd;\r
 +  padding-right: 0.5em;\r
 +}\r
 +div.admonitionblock td.content {\r
 +  padding-left: 0.5em;\r
 +  border-left: 3px solid #dddddd;\r
 +}\r
 +\r
 +div.exampleblock > div.content {\r
 +  border-left: 3px solid #dddddd;\r
 +  padding-left: 0.5em;\r
 +}\r
 +\r
 +div.imageblock div.content { padding-left: 0; }\r
 +span.image img { border-style: none; vertical-align: text-bottom; }\r
 +a.image:visited { color: white; }\r
 +\r
 +dl {\r
 +  margin-top: 0.8em;\r
 +  margin-bottom: 0.8em;\r
 +}\r
 +dt {\r
 +  margin-top: 0.5em;\r
 +  margin-bottom: 0;\r
 +  font-style: normal;\r
 +  color: navy;\r
 +}\r
 +dd > *:first-child {\r
 +  margin-top: 0.1em;\r
 +}\r
 +\r
 +ul, ol {\r
 +    list-style-position: outside;\r
 +}\r
 +ol.arabic {\r
 +  list-style-type: decimal;\r
 +}\r
 +ol.loweralpha {\r
 +  list-style-type: lower-alpha;\r
 +}\r
 +ol.upperalpha {\r
 +  list-style-type: upper-alpha;\r
 +}\r
 +ol.lowerroman {\r
 +  list-style-type: lower-roman;\r
 +}\r
 +ol.upperroman {\r
 +  list-style-type: upper-roman;\r
 +}\r
 +\r
 +div.compact ul, div.compact ol,\r
 +div.compact p, div.compact p,\r
 +div.compact div, div.compact div {\r
 +  margin-top: 0.1em;\r
 +  margin-bottom: 0.1em;\r
 +}\r
 +\r
 +tfoot {\r
 +  font-weight: bold;\r
 +}\r
 +td > div.verse {\r
 +  white-space: pre;\r
 +}\r
 +\r
 +div.hdlist {\r
 +  margin-top: 0.8em;\r
 +  margin-bottom: 0.8em;\r
 +}\r
 +div.hdlist tr {\r
 +  padding-bottom: 15px;\r
 +}\r
 +dt.hdlist1.strong, td.hdlist1.strong {\r
 +  font-weight: bold;\r
 +}\r
 +td.hdlist1 {\r
 +  vertical-align: top;\r
 +  font-style: normal;\r
 +  padding-right: 0.8em;\r
 +  color: navy;\r
 +}\r
 +td.hdlist2 {\r
 +  vertical-align: top;\r
 +}\r
 +div.hdlist.compact tr {\r
 +  margin: 0;\r
 +  padding-bottom: 0;\r
 +}\r
 +\r
 +.comment {\r
 +  background: yellow;\r
 +}\r
 +\r
 +.footnote, .footnoteref {\r
 +  font-size: 0.8em;\r
 +}\r
 +\r
 +span.footnote, span.footnoteref {\r
 +  vertical-align: super;\r
 +}\r
 +\r
 +#footnotes {\r
 +  margin: 20px 0 20px 0;\r
 +  padding: 7px 0 0 0;\r
 +}\r
 +\r
 +#footnotes div.footnote {\r
 +  margin: 0 0 5px 0;\r
 +}\r
 +\r
 +#footnotes hr {\r
 +  border: none;\r
 +  border-top: 1px solid silver;\r
 +  height: 1px;\r
 +  text-align: left;\r
 +  margin-left: 0;\r
 +  width: 20%;\r
 +  min-width: 100px;\r
 +}\r
 +\r
 +div.colist td {\r
 +  padding-right: 0.5em;\r
 +  padding-bottom: 0.3em;\r
 +  vertical-align: top;\r
 +}\r
 +div.colist td img {\r
 +  margin-top: 0.3em;\r
 +}\r
 +\r
 +@media print {\r
 +  #footer-badges { display: none; }\r
 +}\r
 +\r
 +#toc {\r
 +  margin-bottom: 2.5em;\r
 +}\r
 +\r
 +#toctitle {\r
 +  color: #527bbd;\r
 +  font-size: 1.1em;\r
 +  font-weight: bold;\r
 +  margin-top: 1.0em;\r
 +  margin-bottom: 0.1em;\r
 +}\r
 +\r
 +div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
 +  margin-top: 0;\r
 +  margin-bottom: 0;\r
 +}\r
 +div.toclevel2 {\r
 +  margin-left: 2em;\r
 +  font-size: 0.9em;\r
 +}\r
 +div.toclevel3 {\r
 +  margin-left: 4em;\r
 +  font-size: 0.9em;\r
 +}\r
 +div.toclevel4 {\r
 +  margin-left: 6em;\r
 +  font-size: 0.9em;\r
 +}\r
 +\r
 +span.aqua { color: aqua; }\r
 +span.black { color: black; }\r
 +span.blue { color: blue; }\r
 +span.fuchsia { color: fuchsia; }\r
 +span.gray { color: gray; }\r
 +span.green { color: green; }\r
 +span.lime { color: lime; }\r
 +span.maroon { color: maroon; }\r
 +span.navy { color: navy; }\r
 +span.olive { color: olive; }\r
 +span.purple { color: purple; }\r
 +span.red { color: red; }\r
 +span.silver { color: silver; }\r
 +span.teal { color: teal; }\r
 +span.white { color: white; }\r
 +span.yellow { color: yellow; }\r
 +\r
 +span.aqua-background { background: aqua; }\r
 +span.black-background { background: black; }\r
 +span.blue-background { background: blue; }\r
 +span.fuchsia-background { background: fuchsia; }\r
 +span.gray-background { background: gray; }\r
 +span.green-background { background: green; }\r
 +span.lime-background { background: lime; }\r
 +span.maroon-background { background: maroon; }\r
 +span.navy-background { background: navy; }\r
 +span.olive-background { background: olive; }\r
 +span.purple-background { background: purple; }\r
 +span.red-background { background: red; }\r
 +span.silver-background { background: silver; }\r
 +span.teal-background { background: teal; }\r
 +span.white-background { background: white; }\r
 +span.yellow-background { background: yellow; }\r
 +\r
 +span.big { font-size: 2em; }\r
 +span.small { font-size: 0.6em; }\r
 +\r
 +span.underline { text-decoration: underline; }\r
 +span.overline { text-decoration: overline; }\r
 +span.line-through { text-decoration: line-through; }\r
 +\r
 +div.unbreakable { page-break-inside: avoid; }\r
 +\r
 +\r
 +/*\r
 + * xhtml11 specific\r
 + *\r
 + * */\r
 +\r
 +div.tableblock {\r
 +  margin-top: 1.0em;\r
 +  margin-bottom: 1.5em;\r
 +}\r
 +div.tableblock > table {\r
 +  border: 3px solid #527bbd;\r
 +}\r
 +thead, p.table.header {\r
 +  font-weight: bold;\r
 +  color: #527bbd;\r
 +}\r
 +p.table {\r
 +  margin-top: 0;\r
 +}\r
 +/* Because the table frame attribute is overriden by CSS in most browsers. */\r
 +div.tableblock > table[frame="void"] {\r
 +  border-style: none;\r
 +}\r
 +div.tableblock > table[frame="hsides"] {\r
 +  border-left-style: none;\r
 +  border-right-style: none;\r
 +}\r
 +div.tableblock > table[frame="vsides"] {\r
 +  border-top-style: none;\r
 +  border-bottom-style: none;\r
 +}\r
 +\r
 +\r
 +/*\r
 + * html5 specific\r
 + *\r
 + * */\r
 +\r
 +table.tableblock {\r
 +  margin-top: 1.0em;\r
 +  margin-bottom: 1.5em;\r
 +}\r
 +thead, p.tableblock.header {\r
 +  font-weight: bold;\r
 +  color: #527bbd;\r
 +}\r
 +p.tableblock {\r
 +  margin-top: 0;\r
 +}\r
 +table.tableblock {\r
 +  border-width: 3px;\r
 +  border-spacing: 0px;\r
 +  border-style: solid;\r
 +  border-color: #527bbd;\r
 +  border-collapse: collapse;\r
 +}\r
 +th.tableblock, td.tableblock {\r
 +  border-width: 1px;\r
 +  padding: 4px;\r
 +  border-style: solid;\r
 +  border-color: #527bbd;\r
 +}\r
 +\r
 +table.tableblock.frame-topbot {\r
 +  border-left-style: hidden;\r
 +  border-right-style: hidden;\r
 +}\r
 +table.tableblock.frame-sides {\r
 +  border-top-style: hidden;\r
 +  border-bottom-style: hidden;\r
 +}\r
 +table.tableblock.frame-none {\r
 +  border-style: hidden;\r
 +}\r
 +\r
 +th.tableblock.halign-left, td.tableblock.halign-left {\r
 +  text-align: left;\r
 +}\r
 +th.tableblock.halign-center, td.tableblock.halign-center {\r
 +  text-align: center;\r
 +}\r
 +th.tableblock.halign-right, td.tableblock.halign-right {\r
 +  text-align: right;\r
 +}\r
 +\r
 +th.tableblock.valign-top, td.tableblock.valign-top {\r
 +  vertical-align: top;\r
 +}\r
 +th.tableblock.valign-middle, td.tableblock.valign-middle {\r
 +  vertical-align: middle;\r
 +}\r
 +th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
 +  vertical-align: bottom;\r
 +}\r
 +\r
 +\r
 +/*\r
 + * manpage specific\r
 + *\r
 + * */\r
 +\r
 +body.manpage h1 {\r
 +  padding-top: 0.5em;\r
 +  padding-bottom: 0.5em;\r
 +  border-top: 2px solid silver;\r
 +  border-bottom: 2px solid silver;\r
 +}\r
 +body.manpage h2 {\r
 +  border-style: none;\r
 +}\r
 +body.manpage div.sectionbody {\r
 +  margin-left: 3em;\r
 +}\r
 +\r
 +@media print {\r
 +  body.manpage div#toc { display: none; }\r
 +}\r
 +\r
 +\r
 +</style>\r
 +<script type="text/javascript">\r
 +/*<![CDATA[*/\r
 +var asciidoc = {  // Namespace.\r
 +\r
 +/////////////////////////////////////////////////////////////////////\r
 +// Table Of Contents generator\r
 +/////////////////////////////////////////////////////////////////////\r
 +\r
 +/* Author: Mihai Bazon, September 2002\r
 + * http://students.infoiasi.ro/~mishoo\r
 + *\r
 + * Table Of Content generator\r
 + * Version: 0.4\r
 + *\r
 + * Feel free to use this script under the terms of the GNU General Public\r
 + * License, as long as you do not remove or alter this notice.\r
 + */\r
 +\r
 + /* modified by Troy D. Hanson, September 2006. License: GPL */\r
 + /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
 +\r
 +// toclevels = 1..4.\r
 +toc: function (toclevels) {\r
 +\r
 +  function getText(el) {\r
 +    var text = "";\r
 +    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
 +      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
 +        text += i.data;\r
 +      else if (i.firstChild != null)\r
 +        text += getText(i);\r
 +    }\r
 +    return text;\r
 +  }\r
 +\r
 +  function TocEntry(el, text, toclevel) {\r
 +    this.element = el;\r
 +    this.text = text;\r
 +    this.toclevel = toclevel;\r
 +  }\r
 +\r
 +  function tocEntries(el, toclevels) {\r
 +    var result = new Array;\r
 +    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
 +    // Function that scans the DOM tree for header elements (the DOM2\r
 +    // nodeIterator API would be a better technique but not supported by all\r
 +    // browsers).\r
 +    var iterate = function (el) {\r
 +      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
 +        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
 +          var mo = re.exec(i.tagName);\r
 +          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
 +            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
 +          }\r
 +          iterate(i);\r
 +        }\r
 +      }\r
 +    }\r
 +    iterate(el);\r
 +    return result;\r
 +  }\r
 +\r
 +  var toc = document.getElementById("toc");\r
 +  if (!toc) {\r
 +    return;\r
 +  }\r
 +\r
 +  // Delete existing TOC entries in case we're reloading the TOC.\r
 +  var tocEntriesToRemove = [];\r
 +  var i;\r
 +  for (i = 0; i < toc.childNodes.length; i++) {\r
 +    var entry = toc.childNodes[i];\r
 +    if (entry.nodeName.toLowerCase() == 'div'\r
 +     && entry.getAttribute("class")\r
 +     && entry.getAttribute("class").match(/^toclevel/))\r
 +      tocEntriesToRemove.push(entry);\r
 +  }\r
 +  for (i = 0; i < tocEntriesToRemove.length; i++) {\r
 +    toc.removeChild(tocEntriesToRemove[i]);\r
 +  }\r
 +\r
 +  // Rebuild TOC entries.\r
 +  var entries = tocEntries(document.getElementById("content"), toclevels);\r
 +  for (var i = 0; i < entries.length; ++i) {\r
 +    var entry = entries[i];\r
 +    if (entry.element.id == "")\r
 +      entry.element.id = "_toc_" + i;\r
 +    var a = document.createElement("a");\r
 +    a.href = "#" + entry.element.id;\r
 +    a.appendChild(document.createTextNode(entry.text));\r
 +    var div = document.createElement("div");\r
 +    div.appendChild(a);\r
 +    div.className = "toclevel" + entry.toclevel;\r
 +    toc.appendChild(div);\r
 +  }\r
 +  if (entries.length == 0)\r
 +    toc.parentNode.removeChild(toc);\r
 +},\r
 +\r
 +\r
 +/////////////////////////////////////////////////////////////////////\r
 +// Footnotes generator\r
 +/////////////////////////////////////////////////////////////////////\r
 +\r
 +/* Based on footnote generation code from:\r
 + * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
 + */\r
 +\r
 +footnotes: function () {\r
 +  // Delete existing footnote entries in case we're reloading the footnodes.\r
 +  var i;\r
 +  var noteholder = document.getElementById("footnotes");\r
 +  if (!noteholder) {\r
 +    return;\r
 +  }\r
 +  var entriesToRemove = [];\r
 +  for (i = 0; i < noteholder.childNodes.length; i++) {\r
 +    var entry = noteholder.childNodes[i];\r
 +    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
 +      entriesToRemove.push(entry);\r
 +  }\r
 +  for (i = 0; i < entriesToRemove.length; i++) {\r
 +    noteholder.removeChild(entriesToRemove[i]);\r
 +  }\r
 +\r
 +  // Rebuild footnote entries.\r
 +  var cont = document.getElementById("content");\r
 +  var spans = cont.getElementsByTagName("span");\r
 +  var refs = {};\r
 +  var n = 0;\r
 +  for (i=0; i<spans.length; i++) {\r
 +    if (spans[i].className == "footnote") {\r
 +      n++;\r
 +      var note = spans[i].getAttribute("data-note");\r
 +      if (!note) {\r
 +        // Use [\s\S] in place of . so multi-line matches work.\r
 +        // Because JavaScript has no s (dotall) regex flag.\r
 +        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
 +        spans[i].innerHTML =\r
 +          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
 +          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
 +        spans[i].setAttribute("data-note", note);\r
 +      }\r
 +      noteholder.innerHTML +=\r
 +        "<div class='footnote' id='_footnote_" + n + "'>" +\r
 +        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
 +        n + "</a>. " + note + "</div>";\r
 +      var id =spans[i].getAttribute("id");\r
 +      if (id != null) refs["#"+id] = n;\r
 +    }\r
 +  }\r
 +  if (n == 0)\r
 +    noteholder.parentNode.removeChild(noteholder);\r
 +  else {\r
 +    // Process footnoterefs.\r
 +    for (i=0; i<spans.length; i++) {\r
 +      if (spans[i].className == "footnoteref") {\r
 +        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
 +        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
 +        n = refs[href];\r
 +        spans[i].innerHTML =\r
 +          "[<a href='#_footnote_" + n +\r
 +          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
 +      }\r
 +    }\r
 +  }\r
 +},\r
 +\r
 +install: function(toclevels) {\r
 +  var timerId;\r
 +\r
 +  function reinstall() {\r
 +    asciidoc.footnotes();\r
 +    if (toclevels) {\r
 +      asciidoc.toc(toclevels);\r
 +    }\r
 +  }\r
 +\r
 +  function reinstallAndRemoveTimer() {\r
 +    clearInterval(timerId);\r
 +    reinstall();\r
 +  }\r
 +\r
 +  timerId = setInterval(reinstall, 500);\r
 +  if (document.addEventListener)\r
 +    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
 +  else\r
 +    window.onload = reinstallAndRemoveTimer;\r
 +}\r
 +\r
 +}\r
 +asciidoc.install();\r
 +/*]]>*/\r
 +</script>\r
 +</head>\r
 +<body class="manpage">\r
 +<div id="header">\r
 +<h1>\r
 +RE2C (1) Manual Page\r
 +</h1>\r
 +<h2>NAME</h2>\r
 +<div class="sectionbody">\r
 +<p>re2c -\r
 +   convert regular expressions to C/C++\r
 +</p>\r
 +</div>\r
 +</div>\r
 +<div id="content">\r
 +<div class="sect1">\r
 +<h2 id="_synopsis">SYNOPSIS</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p><strong>re2c</strong> [<em>OPTIONS</em>] <em>FILE</em></p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_description">DESCRIPTION</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p><strong>re2c</strong> is a lexer generator for C/C++.\r
 +It finds regular expression specifications inside of C/C++ comments and replaces them with a hard-coded DFA.\r
 +The user must supply some interface code in order to control and customize the generated DFA.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_example">EXAMPLE</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>Given the following code:</p></div>\r
 +<div class="listingblock">\r
 +<div class="content"><!-- Generator: GNU source-highlight 3.1.7\r
 +by Lorenzo Bettini\r
 +http://www.lorenzobettini.it\r
 +http://www.gnu.org/software/src-highlite -->\r
 +<pre><tt><span style="color: #009900">unsigned</span> <span style="color: #009900">int</span> <span style="font-weight: bold"><span style="color: #000000">stou</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">const</span></span> <span style="color: #009900">char</span> <span style="color: #990000">*</span> s<span style="color: #990000">)</span>\r
 +<span style="color: #FF0000">{</span>\r
 +<span style="font-weight: bold"><span style="color: #000080">#   define</span></span> YYCTYPE <span style="color: #009900">char</span>\r
 +    <span style="font-weight: bold"><span style="color: #0000FF">const</span></span> YYCTYPE <span style="color: #990000">*</span> YYCURSOR <span style="color: #990000">=</span> s<span style="color: #990000">;</span>\r
 +    <span style="color: #009900">unsigned</span> <span style="color: #009900">int</span> result <span style="color: #990000">=</span> <span style="color: #993399">0</span><span style="color: #990000">;</span>\r
 +\r
 +    <span style="font-weight: bold"><span style="color: #0000FF">for</span></span> <span style="color: #990000">(;;)</span>\r
 +    <span style="color: #FF0000">{</span>\r
 +        <span style="font-style: italic"><span style="color: #9A1900">/*!re2c</span></span>\r
 +<span style="font-style: italic"><span style="color: #9A1900">            re2c:yyfill:enable = 0;</span></span>\r
 +\r
 +<span style="font-style: italic"><span style="color: #9A1900">            "\x00" { return result; }</span></span>\r
 +<span style="font-style: italic"><span style="color: #9A1900">            [0-9]  { result = result * 10 + c; continue; }</span></span>\r
 +<span style="font-style: italic"><span style="color: #9A1900">        */</span></span>\r
 +    <span style="color: #FF0000">}</span>\r
 +<span style="color: #FF0000">}</span></tt></pre></div></div>\r
 +<div class="paragraph"><p><code>re2c -is</code> will generate:</p></div>\r
 +<div class="listingblock">\r
 +<div class="content"><!-- Generator: GNU source-highlight 3.1.7\r
 +by Lorenzo Bettini\r
 +http://www.lorenzobettini.it\r
 +http://www.gnu.org/software/src-highlite -->\r
 +<pre><tt><span style="font-style: italic"><span style="color: #9A1900">/* Generated by re2c 0.13.7.dev on Mon Jul 14 13:37:46 2014 */</span></span>\r
 +<span style="color: #009900">unsigned</span> <span style="color: #009900">int</span> <span style="font-weight: bold"><span style="color: #000000">stou</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">const</span></span> <span style="color: #009900">char</span> <span style="color: #990000">*</span> s<span style="color: #990000">)</span>\r
 +<span style="color: #FF0000">{</span>\r
 +<span style="font-weight: bold"><span style="color: #000080">#   define</span></span> YYCTYPE <span style="color: #009900">char</span>\r
 +    <span style="font-weight: bold"><span style="color: #0000FF">const</span></span> YYCTYPE <span style="color: #990000">*</span> YYCURSOR <span style="color: #990000">=</span> s<span style="color: #990000">;</span>\r
 +    <span style="color: #009900">unsigned</span> <span style="color: #009900">int</span> result <span style="color: #990000">=</span> <span style="color: #993399">0</span><span style="color: #990000">;</span>\r
 +\r
 +    <span style="font-weight: bold"><span style="color: #0000FF">for</span></span> <span style="color: #990000">(;;)</span>\r
 +    <span style="color: #FF0000">{</span>\r
 +\r
 +<span style="color: #FF0000">{</span>\r
 +        <span style="color: #008080">YYCTYPE</span> yych<span style="color: #990000">;</span>\r
 +\r
 +        yych <span style="color: #990000">=</span> <span style="color: #990000">*</span>YYCURSOR<span style="color: #990000">;</span>\r
 +        <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span>yych <span style="color: #990000">&lt;=</span> <span style="color: #993399">0x00</span><span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">goto</span></span> yy3<span style="color: #990000">;</span>\r
 +        <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span>yych <span style="color: #990000">&lt;=</span> <span style="color: #FF0000">'/'</span><span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">goto</span></span> yy2<span style="color: #990000">;</span>\r
 +        <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span>yych <span style="color: #990000">&lt;=</span> <span style="color: #FF0000">'9'</span><span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">goto</span></span> yy5<span style="color: #990000">;</span>\r
 +<span style="font-weight: bold"><span style="color: #008080">yy2:</span></span>\r
 +<span style="font-weight: bold"><span style="color: #008080">yy3:</span></span>\r
 +        <span style="color: #990000">++</span>YYCURSOR<span style="color: #990000">;</span>\r
 +        <span style="color: #FF0000">{</span> <span style="font-weight: bold"><span style="color: #0000FF">return</span></span> result<span style="color: #990000">;</span> <span style="color: #FF0000">}</span>\r
 +<span style="font-weight: bold"><span style="color: #008080">yy5:</span></span>\r
 +        <span style="color: #990000">++</span>YYCURSOR<span style="color: #990000">;</span>\r
 +        <span style="color: #FF0000">{</span> result <span style="color: #990000">=</span> result <span style="color: #990000">*</span> <span style="color: #993399">10</span> <span style="color: #990000">+</span> c<span style="color: #990000">;</span> <span style="font-weight: bold"><span style="color: #0000FF">continue</span></span><span style="color: #990000">;</span> <span style="color: #FF0000">}</span>\r
 +<span style="color: #FF0000">}</span>\r
 +\r
 +    <span style="color: #FF0000">}</span>\r
 +<span style="color: #FF0000">}</span></tt></pre></div></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_options">OPTIONS</h2>\r
 +<div class="sectionbody">\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +<strong>-?</strong> <strong>-h</strong> <strong>--help</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Invoke a short help.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-b</strong> <strong>--bit-vectors</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Implies <strong>-s</strong>.  Use bit vectors as well in the attempt to coax better\r
 +    code out of the compiler.  Most useful for specifications with more than a\r
 +    few keywords (e.g. for most programming languages).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-c</strong> <strong>--conditions</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Used to support (f)lex-like condition support.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-d</strong> <strong>--debug-output</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Creates a parser that dumps information about the current position and in\r
 +    which state the parser is while parsing the input. This is useful to debug\r
 +    parser issues and states. If you use this switch you need to define a macro\r
 +    <strong>YYDEBUG</strong> that is called like a function with two parameters:\r
 +    <strong>void YYDEBUG (int state, char current)</strong>. The first parameter receives the\r
 +    state or -1 and the second parameter receives the input at the current cursor.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-D</strong> <strong>--emit-dot</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Emit Graphviz dot data. It can then be processed with e.g.\r
 +    <code>dot -Tpng input.dot &gt; output.png</code>. Please note that scanners with many states\r
 +    may crash dot.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-e</strong> <strong>--ecb</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a parser that supports EBCDIC. The generated code can deal with any\r
 +    character up to 0xFF. In this mode <strong>re2c</strong> assumes that input character size is\r
 +    1 byte. This switch is incompatible with <strong>-w</strong>, <strong>-x</strong>, <strong>-u</strong> and <strong>-8</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-f</strong> <strong>--storable-state</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a scanner with support for storable state.\r
 +    For details see below at <strong>SCANNER WITH STORABLE STATES</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-F</strong> <strong>--flex-syntax</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Partial support for flex syntax. When this flag is active then named\r
 +    definitions must be surrounded by curly braces and can be defined without an\r
 +    equal sign and the terminating semi colon. Instead names are treated as direct\r
 +    double quoted strings.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-g</strong> <strong>--computed-gotos</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a scanner that utilizes GCC&#8217;s computed goto feature. That is <strong>re2c</strong>\r
 +    generates jump tables whenever a decision is of a certain complexity (e.g. a\r
 +    lot of if conditions are otherwise necessary). This is only useable with GCC\r
 +    and produces output that cannot be compiled with any other compiler. Note that\r
 +    this implies <strong>-b</strong> and that the complexity threshold can be configured using the\r
 +    inplace configuration <strong>cgoto:threshold</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-i</strong> <strong>--no-debug-info</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Do not output <strong>#line</strong> information. This is usefull when you want use a CMS tool\r
 +    with the <strong>re2c</strong> output which you might want if you do not require your users to\r
 +    have <strong>re2c</strong> themselves when building from your source.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-o OUTPUT</strong> <strong>--output=OUTPUT</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Specify the <strong>OUTPUT</strong> file.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-r</strong> <strong>--reusable</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Allows reuse of scanner definitions with <strong>/*!use:re2c</strong> after\r
 +    <strong>/*!rules:re2c</strong>. In this mode no <strong>/*!re2c</strong> block and exactly one\r
 +    <strong>/*!rules:re2c</strong> must be present. The rules are being saved and used by\r
 +    every <strong>/*!use:re2c</strong> block that follows. These blocks can contain\r
 +    inplace configurations, especially <strong>re2c:flags:e</strong>, <strong>re2c:flags:w</strong>,\r
 +    <strong>re2c:flags:x</strong>, <strong>re2c:flags:u</strong> and <strong>re2c:flags:8</strong>.\r
 +    That way it is possible to create the same scanner multiple times for different\r
 +    character types, different input mechanisms or different output mechanisms.\r
 +    The <strong>/*!use:re2c</strong> blocks can also contain additional rules that will be\r
 +    appended to the set of rules in <strong>/*!rules:re2c</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-s</strong> <strong>--nested-ifs</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate nested ifs for some switches.  Many compilers need this\r
 +    assist to generate better code.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-t HEADER</strong> <strong>--type-header=HEADER</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Create a <strong>HEADER</strong> file that contains types for the (f)lex-like condition support.\r
 +    This can only be activated when <strong>-c</strong> is in use.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-u</strong> <strong>--unicode</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a parser that supports UTF-32. The generated code can deal with any\r
 +    valid Unicode character up to 0x10FFFF. In this mode <strong>re2c</strong> assumes that input\r
 +    character size is 4 bytes. This switch is incompatible with <strong>-e</strong>, <strong>-w</strong>, <strong>-x</strong>\r
 +    and <strong>-8</strong>. This implies <strong>-s</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-v</strong> <strong>--version</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Show version information.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-V</strong> <strong>--vernum</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Show the version as a number XXYYZZ.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-w</strong> <strong>--wide-chars</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a parser that supports UCS-2. The generated code can deal with any\r
 +    valid Unicode character up to 0xFFFF. In this mode <strong>re2c</strong> assumes that input\r
 +    character size is 2 bytes. This switch is incompatible with <strong>-e</strong>, <strong>-x</strong>, <strong>-u</strong>\r
 +    and <strong>-8</strong>. This implies <strong>-s</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-x</strong> <strong>--utf-16</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a parser that supports UTF-16. The generated code can deal with any\r
 +    valid Unicode character up to 0x10FFFF. In this mode <strong>re2c</strong> assumes that input\r
 +    character size is 2 bytes. This switch is incompatible with <strong>-e</strong>, <strong>-w</strong>, <strong>-u</strong>\r
 +    and <strong>-8</strong>. This implies <strong>-s</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-8</strong> <strong>--utf-8</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Generate a parser that supports UTF-8. The generated code can deal with any\r
 +    valid Unicode character up to 0x10FFFF. In this mode <strong>re2c</strong> assumes that input\r
 +    character size is 1 byte. This switch is incompatible with <strong>-e</strong>, <strong>-w</strong>, <strong>-x</strong>\r
 +    and <strong>-u</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--case-insensitive</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    All strings are case insensitive, so all "-expressions are treated\r
 +    in the same way '-expressions are.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--case-inverted</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Invert the meaning of single and double quoted strings.\r
 +    With this switch single quotes are case sensitive and\r
 +    double quotes are case insensitive.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--no-generation-date</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Suppress date output in the generated output so that it only shows the re2c\r
 +    version.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--encoding-policy POLICY</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Specify how <strong>re2c</strong> must treat Unicode surrogates. <strong>POLICY</strong> can be one of the following:\r
 +    <strong>fail</strong> (abort with error when surrogate encountered),\r
 +    <strong>substitute</strong> (silently substitute surrogate with error code point 0xFFFD),\r
 +    <strong>ignore</strong> (treat surrogates as normal code points).\r
 +    By default <strong>re2c</strong> ignores surrogates (for backward compatibility).\r
 +    Unicode standard says that standalone surrogates are invalid code points,\r
 +    but different libraries and programs treat them differently.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--input INPUT</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Specify re2c input API. <strong>INPUT</strong> can be one of the following: <strong>default</strong>, <strong>custom</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--skeleton</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Instead of embedding re2c-generated code into C/C++ source,\r
 +    generate a self-contained program for the same DFA.\r
 +    Most useful for correctness and performance testing.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>--empty-class POLICY</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    What to do if user inputs empty character class. <strong>POLICY</strong> can be\r
 +    one of the following: <strong>match-empty</strong> (match empty input: pretty illogical,\r
 +    but this is the default for backwards compatibility reason),\r
 +    <strong>match-none</strong> (fail to match on any input), <strong>error</strong> (compilation\r
 +    error). Note that there are various ways to construct empty class,\r
 +    e.g: [], [^\x00-\xFF], [\x00-\xFF]\[\x00-\xFF].\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-1</strong> <strong>--single-pass</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Deprecated and does nothing (single pass is by default now).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-W</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Turn on all warnings.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Werror</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Turn warnings into errors. Note that this option along doesn&#8217;t\r
 +    turn on any warnings, it only affects those warnings that have\r
 +    been turned on so far or will be turned on later.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-W&lt;warning&gt;</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Turn on individual warning.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wno-&lt;warning&gt;</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Turn off individual warning.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Werror-&lt;warning&gt;</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Turn on individual warning and treat it as error (this implies\r
 +    <strong>-W&lt;warning&gt;</strong>).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wno-error-&lt;warning&gt;</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Don&#8217;t treat this particular warning as error. This doesn&#8217;t turn\r
 +    off the warning itself.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_warnings">WARNINGS</h2>\r
 +<div class="sectionbody">\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +<strong>-Wcondition-order</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if the generated program makes implicit assumptions about\r
 +    condition numbering. One should use either <strong>-t, --type-header</strong>\r
 +    option or <strong>/*!types:re2c*/</strong> directive to generate mapping of\r
 +    condition names to numbers and use autogenerated condition names.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wempty-character-class</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if regular expression contains empty character class. From\r
 +    the rational point of view trying to match empty character class\r
 +    makes no sense: it should always fail. However, for backwards\r
 +    compatibility reasons <strong>re2c</strong> allows empty character class and treats\r
 +    it as empty string. Use <strong>--empty-class</strong> option to change default\r
 +    behaviour.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wmatch-empty-string</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if regular expression in a rule is nullable (matches empty\r
 +    string). If DFA runs in a loop and empty match is unintentional\r
 +    (input position in not advanced manually), lexer may get stuck\r
 +    in eternal loop.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wswapped-range</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if range lower bound is greater that upper bound. Default\r
 +    <strong>re2c</strong> behaviour is to silently swap range bounds.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wundefined-control-flow</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if some input strings cause undefined control flow in lexer\r
 +    (the faulty patterns are reported). This is the most dangerous\r
 +    and common mistake. It can be easily fixed by adding default rule\r
 +    <strong>*</strong> (this rule has the lowest priority, matches any code unit\r
 +    and consumes exactly one code unit).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>-Wuseless-escape</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Warn if a symbol is escaped when it shouldn&#8217;t be. By default re2c\r
 +    silently ignores escape, but this may as well indicate a typo\r
 +    or an error in escape sequence.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_interface_code">INTERFACE CODE</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>The user must supply interface code either in the form of C/C++ code\r
 +(macros, functions, variables, etc.) or in the form of <em>inplace configurations</em>.\r
 +Which symbols must be defined and which are optional depends on a particular use case.</p></div>\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +<strong>YYCONDTYPE</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    In <strong>-c</strong> mode you can use <strong>-t</strong> to generate a file that contains the\r
 +    enumeration used as conditions. Each of the values refers to a condition of\r
 +    a rule set.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYCTXMARKER</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    l-value of type <strong>* YYCTYPE</strong>.\r
 +    The generated code saves trailing context backtracking information in <strong>YYCTXMARKER</strong>.\r
 +    The user only needs to define this macro if a scanner specification uses trailing\r
 +    context in one or more of its regular expressions.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYCTYPE</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Type used to hold an input symbol (code unit).\r
 +    Usually <strong>char</strong> or <strong>unsigned char</strong> for ASCII, EBCDIC and UTF-8, <strong>unsigned short</strong> for UTF-16 or UCS-2 and <strong>unsigned int</strong> for UTF-32.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYCURSOR</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    l-value of type <strong>* YYCTYPE</strong> that points to the current input symbol.\r
 +    The generated code advances <strong>YYCURSOR</strong> as symbols are matched.\r
 +    On entry, <strong>YYCURSOR</strong> is assumed to point to the first character of the\r
 +    current token.  On exit, <strong>YYCURSOR</strong> will point to the first character of\r
 +    the following token.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYDEBUG (state, current)</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    This is only needed if the <strong>-d</strong> flag was specified. It allows to easily debug\r
 +    the generated parser by calling a user defined function for every state. The function\r
 +    should have the following signature: <strong>void YYDEBUG (int state, char current)</strong>.\r
 +    The first parameter receives the state or -1 and the second parameter receives the\r
 +    input at the current cursor.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYFILL (n)</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    The generated code &#8220;calls&#8221; <strong>YYFILL (n)</strong> when the buffer needs\r
 +    (re)filling: at least <strong>n</strong> additional characters should\r
 +    be provided. <strong>YYFILL (n)</strong> should adjust <strong>YYCURSOR</strong>, <strong>YYLIMIT</strong>,\r
 +    <strong>YYMARKER</strong> and <strong>YYCTXMARKER</strong> as needed.  Note that for typical\r
 +    programming languages <strong>n</strong> will be the length of the longest keyword plus one.\r
 +    The user can place a comment of the form <strong>/*!max:re2c*/</strong> once to insert\r
 +    a <strong>YYMAXFILL (n)</strong> definition that is set to the maximum length value. If -1\r
 +    switch is used then <strong>YYMAXFILL</strong> can be triggered only once after the\r
 +    last <strong>/*!re2c ... */</strong> block.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYGETCONDITION ()</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    This define is used to get the condition prior to entering the scanner code\r
 +    when using <strong>-c</strong> switch. The value must be initialized with a value from\r
 +    the enumeration <strong>YYCONDTYPE</strong> type.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYGETSTATE ()</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    The user only needs to define this macro if the <strong>-f</strong> flag was specified.\r
 +    In that case, the generated code &#8220;calls&#8221; <strong>YYGETSTATE ()</strong> at the very beginning\r
 +    of the scanner in order to obtain the saved state. <strong>YYGETSTATE ()</strong> must return a signed\r
 +    integer. The value must be either -1, indicating that the scanner is entered for the\r
 +    first time, or a value previously saved by <strong>YYSETSTATE (s)</strong>.  In the second case, the\r
 +    scanner will resume operations right after where the last <strong>YYFILL (n)</strong> was called.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYLIMIT</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    Expression of type <strong>* YYCTYPE</strong> that marks the end of the buffer\r
 +    (<strong>YYLIMIT[-1]</strong> is the last character in the buffer).\r
 +    The generated code repeatedly compares <strong>YYCURSOR</strong> to <strong>YYLIMIT</strong>\r
 +    to determine when the buffer needs (re)filling.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYMARKER</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    l-value of type <strong>* YYCTYPE</strong>.\r
 +    The generated code saves backtracking information in <strong>YYMARKER</strong>. Some easy\r
 +    scanners might not use this.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYMAXFILL</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    This will be automatically defined by <strong>/*!max:re2c*/</strong> blocks as explained above.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYSETCONDITION (c)</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    This define is used to set the condition in transition rules.  This is only\r
 +    being used when <strong>-c</strong> is active and transition rules are being used.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>YYSETSTATE (s)</strong>\r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    The user only needs to define this macro if the <strong>-f</strong> flag was specified.\r
 +    In that case, the generated code &#8220;calls&#8221; <strong>YYSETSTATE</strong> just before calling\r
 +    <strong>YYFILL (n)</strong>.  The parameter to <strong>YYSETSTATE</strong> is a signed integer that uniquely\r
 +    identifies the specific instance of <strong>YYFILL (n)</strong> that is about to be called.\r
 +    Should the user wish to save the state of the scanner and have <strong>YYFILL (n)</strong> return\r
 +    to the caller, all he has to do is store that unique identifer in a variable.\r
 +    Later, when the scannered is called again, it will call <strong>YYGETSTATE ()</strong> and\r
 +    resume execution right where it left off. The generated code will contain\r
 +    both <strong>YYSETSTATE (s)</strong> and <strong>YYGETSTATE</strong> even if <strong>YYFILL (n)</strong> is being disabled.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_syntax">SYNTAX</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>Code for <strong>re2c</strong> consists of a set of <em>rules</em>, <em>named definitions</em> and <em>inplace configurations</em>.</p></div>\r
 +<div class="paragraph"><p><em>rules</em> consist of a <em>regular-expressions</em> along with a block of <em>C/C++ code</em> that\r
 +is to be executed when the associated <em>regular-expression</em> is matched. You can either\r
 +start the code with an opening curly brace or the sequence <strong>:=</strong>. When\r
 +the code with a curly brace then <strong>re2c</strong> counts the brace depth and stops looking\r
 +for code automatically. Otherwise curly braces are not allowed and <strong>re2c</strong> stops\r
 +looking for code at the first line that does not begin with whitespace. If two\r
 +or more rules overlap, the first rule is preferred.</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p><em>regular-expression</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p><em>regular-expression</em> := <em>C/C++ code</em></p></div>\r
 +</div></div>\r
 +<div class="paragraph"><p>There is one special rule: default rule <strong>*</strong>:</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p>* { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>* := <em>C/C++ code</em></p></div>\r
 +</div></div>\r
 +<div class="admonitionblock">\r
 +<table><tr>\r
 +<td class="icon">\r
 +<div class="title">Note</div>\r
 +</td>\r
 +<td class="content">\r
 +<div class="paragraph"><p><strong>[^]</strong> differs from <strong>*</strong>:\r
 +<strong>*</strong> has the lowest priority, matches any code unit (either valid or invalid) and always consumes one character;\r
 +<strong>[^]</strong> matches any valid code point (not code unit) and can consume multiple characters.\r
 +In fact, when variable-length encoding is used, <strong>*</strong> is the only possible way to match invalid input character.</p></div>\r
 +</td>\r
 +</tr></table>\r
 +</div>\r
 +<div class="paragraph"><p>If <strong>-c</strong> is active then each <em>regular-expression</em> is preceeded by a list of\r
 +comma separated condition names. Besides normal naming rules there are two\r
 +special cases. A rule may contain the single condition name <strong>*</strong> and no contition\r
 +name at all. In the latter case the rule cannot have a <em>regular-expression</em>. Non\r
 +empty rules may further more specify the new condition. In that case <strong>re2c</strong> will\r
 +generated the necessary code to change the condition automatically. Just as above\r
 +code can be started with a curly brace of the sequence <strong>:=</strong>. Further more\r
 +rules can use <strong>:=&gt;</strong> as a shortcut to automatically generate code that not only\r
 +sets the new condition state but also continues execution with the new state. A\r
 +shortcut rule should not be used in a loop where there is code between the start\r
 +of the loop and the <strong>re2c</strong> block unless <strong>re2c:cond:goto</strong> is changed\r
 +to <strong>continue</strong>. If code is necessary before all rule (though not simple\r
 +jumps) you can doso by using <strong>&lt;!</strong> pseudo-rules.</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; <em>regular-expression</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; <em>regular-expression</em> := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; * { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; * := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; <em>regular-expression</em> =&gt; <em>condition</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; <em>regular-expression</em> =&gt; <em>condition</em> := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;<em>condition-list</em>&gt; <em>regular-expression</em> :=&gt; <em>condition</em></p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; <em>regular-expression</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; <em>regular-expression</em> := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; * { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; * := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; <em>regular-expression</em> =&gt; <em>condition</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; <em>regular-expression</em> =&gt; <em>condition</em> := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;*&gt; <em>regular-expression</em> :=&gt; <em>condition</em></p></div>\r
 +<div class="paragraph"><p>&lt;&gt; { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;&gt; := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;&gt; =&gt; <em>condition</em> { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;&gt; =&gt; <em>condition</em> := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;&gt; :=&gt; <em>condition</em></p></div>\r
 +<div class="paragraph"><p>&lt;!<em>condition-list</em>&gt; { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;!<em>condition-list</em>&gt; := <em>C/C++ code</em></p></div>\r
 +<div class="paragraph"><p>&lt;!*&gt; { <em>C/C++ code</em> }</p></div>\r
 +<div class="paragraph"><p>&lt;!*&gt; := <em>C/C++ code</em></p></div>\r
 +</div></div>\r
 +<div class="paragraph"><p><em>named definitions</em> are of the form:</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p><em>name</em> = <em>regular-expression</em>;</p></div>\r
 +</div></div>\r
 +<div class="paragraph"><p>If <strong>-F</strong> is active, then named definitions are also of the form:</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p><em>name</em> <em>regular-expression</em></p></div>\r
 +</div></div>\r
 +<div class="paragraph"><p><em>inplace configurations</em> are of the form:</p></div>\r
 +<div class="sidebarblock">\r
 +<div class="content">\r
 +<div class="paragraph"><p>re2c:<em>name</em> = <em>value</em>;</p></div>\r
 +<div class="paragraph"><p>re2c:<em>name</em> = &#8220;_value_&#8221;;</p></div>\r
 +</div></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_regular_expressions">REGULAR EXPRESSIONS</h2>\r
 +<div class="sectionbody">\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +&#8220;foo&#8221; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    literal string &#8220;foo&#8221;. ANSI-C escape sequences can be used.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +&#8216;foo&#8217; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    literal string &#8220;foo&#8221; (characters [a-zA-Z] treated case-insensitive). ANSI-C escape sequences can be used.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +[xyz] \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    character class; in this case, <em>regular-expression</em> matches either &#8216;x&#8217;, &#8216;y&#8217;, or &#8216;z&#8217;.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +[abj-oZ] \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    character class with a range in it; matches &#8216;a&#8217;, &#8216;b&#8217;, any letter from &#8216;j&#8217; through &#8216;o&#8217; or &#8216;Z&#8217;.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +[^<em>class</em>] \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    inverted character class.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> \ <em>s</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    match any <em>r</em> which isn&#8217;t <em>s</em>. <em>r</em> and <em>s</em> must be <em>regular-expression</em>s which can be expressed as character classes.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> * \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    zero or more <em>r</em>'s, where <em>r</em> is any <em>regular-expression</em>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> + \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    one or more <em>r</em>'s.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> ? \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    zero or one <em>r</em>'s (that is, an optional <em>r</em>).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>name</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    the expansion of the <em>named definition</em>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +( <em>r</em> ) \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    <em>r</em>; parentheses are used to override precedence.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> <em>s</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    <em>r</em> followed by <em>s</em> (concatenation).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> | <em>s</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    either <em>r</em> or <em>s</em> (alternative).\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> / <em>s</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    <em>r</em> but only if it is followed by <em>s</em>. Note that <em>s</em> is not part of the matched text.\r
 +    This type of <em>regular-expression</em> is called &#8220;trailing context&#8221;.\r
 +    Trailing context can only be the end of a rule and not part of a named definition.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> { <em>n</em> } \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    matches <em>r</em> exactly <em>n</em> times.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> { <em>n</em> , } \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    matches <em>r</em> at least <em>n</em> times.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>r</em> { <em>n</em> , <em>m</em> } \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    matches <em>r</em> at least <em>n</em> times, but not more than <em>m</em> times.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +. \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    match any character except newline.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<em>def</em> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +    matches named definition as specified by <em>def</em> only if <strong>-F</strong> is off.\r
 +    If <strong>-F</strong> is active then this behaves like it was enclosed in double quotes and matches the string &#8220;def&#8221;.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +<div class="paragraph"><p>Character classes and string literals may contain octal or hexadecimal\r
 +character definitions and the following set of escape sequences:\r
 +<strong>\a</strong>, <strong>\b</strong>, <strong>\f</strong>, <strong>\n</strong>, <strong>\r</strong>, <strong>\t</strong>, <strong>\v</strong>, <strong>\\</strong>.\r
 +An octal character is defined by a backslash followed by its three octal digits (e.g. <strong>\377</strong>).\r
 +Hexadecimal characters from 0 to 0xFF are defined by backslash, a lower cased &#8216;x&#8217; and two hexadecimal digits (e.g. <strong>\x12</strong>).\r
 +Hexadecimal characters from 0x100 to 0xFFFF are defined by backslash, a lower cased &#8216;u&#8217; (or an upper cased &#8216;X&#8217;) and four hexadecimal digits (e.g. <strong>\u1234</strong>).\r
 +Hexadecimal characters from 0x10000 to 0xFFFFffff are defined by backslash, an upper cased &#8216;U&#8217; and eight hexadecimal digits (e.g. <strong>\U12345678</strong>).</p></div>\r
 +<div class="paragraph"><p>The only portable &#8220;any&#8221; rule is the default rule <strong>*</strong>.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_inplace_configurations">INPLACE CONFIGURATIONS</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>It is possible to configure code generation inside <strong>re2c</strong> blocks. The following lists the available configurations:</p></div>\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:condprefix</strong> = yyc_; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to specify the prefix used for condition labels. That is this text is\r
 +prepended to any condition label in the generated output file.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:condenumprefix</strong> = yyc; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to specify the prefix used for condition values. That is this text is\r
 +prepended to any condition enum value in the generated output file.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:cond:divider</strong> = &#8220;/* *********************************** */&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to customize the devider for condition blocks. You can use &#8216;@@&#8217; to\r
 +put the name of the condition or ustomize the placeholder\r
 +using <strong>re2c:cond:divider@cond</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:cond:divider@cond</strong> = @@; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Specifies the placeholder that will be replaced with the condition name\r
 +in <strong>re2c:cond:divider</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:cond:goto</strong> = &#8220;goto @@;&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to customize the condition goto statements used with <strong>:=&gt;</strong> style rules.\r
 +You can use &#8216;@@&#8217; to put the name of the condition or ustomize the placeholder\r
 +using <strong>re2c:cond:goto@cond</strong>. You can also change this to &#8216;continue;&#8217;,\r
 +which would allow you to continue with the next loop cycle including any code\r
 +between loop start and re2c block.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:cond:goto@cond</strong> = @@; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Spcifies the placeholder that will be replaced with the condition label\r
 +in <strong>re2c:cond:goto</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:indent:top</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Specifies the minimum number of indendation to use. Requires a numeric value\r
 +greater than or equal zero.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:indent:string</strong> = &#8220;\t&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Specifies the string to use for indendation. Requires a string that should\r
 +contain only whitespace unless you need this for external tools. The easiest\r
 +way to specify spaces is to enclude them in single or double quotes. If you do\r
 +not want any indendation at all you can simply set this to &#8220;&#8221;.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yych:conversion</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When this setting is non zero, then <strong>re2c</strong> automatically generates conversion\r
 +code whenever yych gets read. In this case the type must be defined using\r
 +<strong>re2c:define:YYCTYPE</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yych:emit</strong> = 1; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Generation of <strong>yych</strong> can be suppressed by setting this to 0.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yybm:hex</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +If set to zero then a decimal table is being used else a hexadecimal table\r
 +will be generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yyfill:enable</strong> = 1; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Set this to zero to suppress generation of <strong>YYFILL (n)</strong>. When using this be sure\r
 +to verify that the generated scanner does not read behind input. Allowing\r
 +this behavior might introduce sever security issues to you programs.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yyfill:check</strong> = 1; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +This can be set 0 to suppress output of the pre condition using <strong>YYCURSOR</strong> and\r
 +<strong>YYLIMIT</strong> which becomes usefull when <strong>YYLIMIT + max (YYFILL)</strong> is always accessible.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYFILL</strong> = &#8220;YYFILL&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Substitution for <strong>YYFILL</strong>.\r
 +Note that by default <strong>re2c</strong> generates argument in braces and semicolon after <strong>YYFILL</strong>.\r
 +If you need to make <strong>YYFILL</strong> an arbitrary statement rather than a call,\r
 +set <strong>re2c:define:YYFILL:naked</strong> to non-zero and use <strong>re2c:define:YYFILL@len</strong> to denote\r
 +formal parameter inside of <strong>YYFILL</strong> body.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYFILL@len</strong> = &#8220;@@&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Any occurence of this text inside of <strong>YYFILL</strong> will be replaced with the actual argument.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yyfill:parameter</strong> = 1; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls argument in braces after <strong>YYFILL</strong>.\r
 +If zero, agrument is omitted.\r
 +If non-zero, argument is generated unless <strong>re2c:define:YYFILL:naked</strong> is set to non-zero.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYFILL:naked</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls argument in braces and semicolon after <strong>YYFILL</strong>.\r
 +If zero, both agrument and semicolon are omitted.\r
 +If non-zero, argument is generated unless <strong>re2c:yyfill:parameter</strong> is set to zero\r
 +and semicolon is generated unconditionally.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:startlabel</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +If set to a non zero integer then the start label of the next scanner blocks\r
 +will be generated even if not used by the scanner itself. Otherwise the normal\r
 +<strong>yy0</strong> like start label is only being generated if needed. If set to a text\r
 +value then a label with that text will be generated regardless of whether the\r
 +normal start label is being used or not. This setting is being reset to <strong>0</strong>\r
 +after a start label has been generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:labelprefix</strong> = yy; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to change the prefix of numbered labels. The default is <strong>yy</strong> and\r
 +can be set any string that is a valid label.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:state:abort</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When not zero and switch <strong>-f</strong> is active then the <strong>YYGETSTATE</strong> block will\r
 +contain a default case that aborts and a -1 case is used for initialization.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:state:nextlabel</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Used when <strong>-f</strong> is active to control whether the <strong>YYGETSTATE</strong> block is\r
 +followed by a <strong>yyNext:</strong> label line. Instead of using <strong>yyNext</strong> you can\r
 +usually also use configuration <strong>startlabel</strong> to force a specific start label\r
 +or default to <strong>yy0</strong> as start label. Instead of using a dedicated label it\r
 +is often better to separate the <strong>YYGETSTATE</strong> code from the actual scanner code by\r
 +placing a <strong>/*!getstate:re2c*/</strong> comment.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:cgoto:threshold</strong> = 9; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When <strong>-g</strong> is active this value specifies the complexity threshold that triggers\r
 +generation of jump tables rather than using nested if&#8217;s and decision bitfields.\r
 +The threshold is compared against a calculated estimation of if-s needed where\r
 +every used bitmap divides the threshold by 2.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:yych:conversion</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When the input uses signed characters and <strong>-s</strong> or <strong>-b</strong> switches are\r
 +in effect re2c allows to automatically convert to the unsigned character type\r
 +that is then necessary for its internal single character. When this setting\r
 +is zero or an empty string the conversion is disabled. Using a non zero number\r
 +the conversion is taken from <strong>YYCTYPE</strong>. If that is given by an inplace\r
 +configuration that value is being used. Otherwise it will be <strong>(YYCTYPE)</strong>\r
 +and changes to that configuration are  no longer possible. When this setting is\r
 +a string the braces must be specified. Now assuming your input is a <strong>char *</strong>\r
 +buffer and you are using above mentioned switches you can set <strong>YYCTYPE</strong> to\r
 +<strong>unsigned char</strong> and this setting to either <strong>1</strong> or <strong>(unsigned char)</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYCONDTYPE</strong> = <strong>YYCONDTYPE</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Enumeration used for condition support with <strong>-c</strong> mode.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYCTXMARKER</strong> = <strong>YYCTXMARKER</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYCTXMARKER</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYCTYPE</strong> = <strong>YYCTYPE</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYCTYPE</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYCURSOR</strong> = <strong>YYCURSOR</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYCURSOR</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYDEBUG</strong> = <strong>YYDEBUG</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYDEBUG</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYGETCONDITION</strong> = &#8220;YYGETCONDITION&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Substitution for <strong>YYGETCONDITION</strong>.\r
 +Note that by default <strong>re2c</strong> generates braces after <strong>YYGETCONDITION</strong>.\r
 +Set <strong>re2c:define:YYGETCONDITION:naked</strong> to non-zero to omit braces.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYGETCONDITION:naked</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls braces after <strong>YYGETCONDITION</strong>.\r
 +If zero, braces are omitted.\r
 +If non-zero, braces are generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETCONDITION</strong> = &#8220;YYSETCONDITION&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Substitution for <strong>YYSETCONDITION</strong>.\r
 +Note that by default <strong>re2c</strong> generates argument in braces and semicolon after <strong>YYSETCONDITION</strong>.\r
 +If you need to make <strong>YYSETCONDITION</strong> an arbitrary statement rather than a call,\r
 +set <strong>re2c:define:YYSETCONDITION:naked</strong> to non-zero and use <strong>re2c:define:YYSETCONDITION@cond</strong> to denote\r
 +formal parameter inside of <strong>YYSETCONDITION</strong> body.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETCONDITION@cond</strong> = &#8220;@@&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Any occurence of this text inside of <strong>YYSETCONDITION</strong> will be replaced with the actual argument.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETCONDITION:naked</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls argument in braces and semicolon after <strong>YYSETCONDITION</strong>.\r
 +If zero, both agrument and semicolon are omitted.\r
 +If non-zero, both argument and semicolon are generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYGETSTATE</strong> = &#8220;YYGETSTATE&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Substitution for <strong>YYGETSTATE</strong>.\r
 +Note that by default <strong>re2c</strong> generates braces after <strong>YYGETSTATE</strong>.\r
 +Set <strong>re2c:define:YYGETSTATE:naked</strong> to non-zero to omit braces.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYGETSTATE:naked</strong> = 0; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls braces after <strong>YYGETSTATE</strong>.\r
 +If zero, braces are omitted.\r
 +If non-zero, braces are generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETSTATE</strong> = &#8220;YYSETSTATE&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Substitution for <strong>YYSETSTATE</strong>.\r
 +Note that by default <strong>re2c</strong> generates argument in braces and semicolon after <strong>YYSETSTATE</strong>.\r
 +If you need to make <strong>YYSETSTATE</strong> an arbitrary statement rather than a call,\r
 +set <strong>re2c:define:YYSETSTATE:naked</strong> to non-zero and use <strong>re2c:define:YYSETSTATE@cond</strong> to denote\r
 +formal parameter inside of <strong>YYSETSTATE</strong> body.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETSTATE@state</strong> = &#8220;@@&#8221;; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Any occurence of this text inside of <strong>YYSETSTATE</strong> will be replaced with the actual argument.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYSETSTATE:naked</strong> = <strong>0</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Controls argument in braces and semicolon after <strong>YYSETSTATE</strong>.\r
 +If zero, both agrument and semicolon are omitted.\r
 +If non-zero, both argument and semicolon are generated.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYLIMIT</strong> = <strong>YYLIMIT</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYLIMIT</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:define:YYMARKER</strong> = <strong>YYMARKER</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the define <strong>YYMARKER</strong> and thus avoiding it by setting the\r
 +value to the actual code needed.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:label:yyFillLabel</strong> = <strong>yyFillLabel</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the label <strong>yyFillLabel</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:label:yyNext</strong> = <strong>yyNext</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the label <strong>yyNext</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yyaccept</strong> = <strong>yyaccept</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the variable <strong>yyaccept</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yybm</strong> = <strong>yybm</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the variable <strong>yybm</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yych</strong> = <strong>yych</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the variable <strong>yych</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yyctable</strong> = <strong>yyctable</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When both <strong>-c</strong> and <strong>-g</strong> are active then <strong>re2c</strong> uses this variable to\r
 +generate a static jump table for <strong>YYGETCONDITION</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yystable</strong> = <strong>yystable</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +When both <strong>-f</strong> and <strong>-g</strong> are active then <strong>re2c</strong> uses this variable to\r
 +generate a static jump table for <strong>YYGETSTATE</strong>.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>re2c:variable:yytarget</strong> = <strong>yytarget</strong>; \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +Allows to overwrite the name of the variable <strong>yytarget</strong>.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_scanner_with_storable_states">SCANNER WITH STORABLE STATES</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>When the <strong>-f</strong> flag is specified, <strong>re2c</strong> generates a scanner that\r
 +can store its current state, return to the caller, and later resume\r
 +operations exactly where it left off.</p></div>\r
 +<div class="paragraph"><p>The default operation of <strong>re2c</strong> is a &#8220;pull&#8221; model, where the scanner asks\r
 +for extra input whenever it needs it. However, this mode of operation\r
 +assumes that the scanner is the &#8220;owner&#8221; the parsing loop, and that may\r
 +not always be convenient.</p></div>\r
 +<div class="paragraph"><p>Typically, if there is a preprocessor ahead of the scanner in the stream,\r
 +or for that matter any other procedural source of data, the scanner cannot\r
 +&#8220;ask&#8221; for more data unless both scanner and source live in a separate threads.</p></div>\r
 +<div class="paragraph"><p>The <strong>-f</strong> flag is useful for just this situation: it lets users design\r
 +scanners that work in a &#8220;push&#8221; model, i.e. where data is fed to the scanner\r
 +chunk by chunk. When the scanner runs out of data to consume, it just stores\r
 +its state, and return to the caller. When more input data is fed to the scanner,\r
 +it resumes operations exactly where it left off.</p></div>\r
 +<div class="paragraph"><p>Changes needed compared to the &#8220;pull&#8221; model:</p></div>\r
 +<div class="olist arabic"><ol class="arabic">\r
 +<li>\r
 +<p>\r
 +User has to supply macros <strong>YYSETSTATE ()</strong> and <strong>YYGETSTATE (state)</strong>.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +The <strong>-f</strong> option inhibits declaration of <strong>yych</strong> and\r
 +<strong>yyaccept</strong>. So the user has to declare these. Also the user has\r
 +to save and restore these. In the example <strong>examples/push_model/push.re</strong> these\r
 +are declared as fields of the (C\++) class of which the scanner is a\r
 +method, so they do not need to be saved/restored explicitly. For C\r
 +they could e.g. be made macros that select fields from a structure\r
 +passed in as parameter. Alternatively, they could be declared as local\r
 +variables, saved with <strong>YYFILL (n)</strong> when it decides to return and restored\r
 +at entry to the function. Also, it could be more efficient to save the\r
 +state from <strong>YYFILL (n)</strong> because <strong>YYSETSTATE (state)</strong> is called\r
 +unconditionally. <strong>YYFILL (n)</strong> however does not get <strong>state</strong> as\r
 +parameter, so we would have to store state in a local variable by\r
 +<strong>YYSETSTATE (state)</strong>.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Modify <strong>YYFILL (n)</strong> to return (from the function calling it) if more input is needed.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Modify caller to recognise &#8220;more input is needed&#8221; and respond appropriately.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +The generated code will contain a switch block that is used to restores\r
 +the last state by jumping behind the corrspoding <strong>YYFILL (n)</strong> call. This code is\r
 +automatically generated in the epilog of the first <strong>/*!re2c */</strong> block.\r
 +It is possible to trigger generation of the <strong>YYGETSTATE ()</strong> block earlier by\r
 +placing a <strong>/*!getstate:re2c*/</strong> comment. This is especially useful when\r
 +the scanner code should be wrapped inside a loop.\r
 +</p>\r
 +</li>\r
 +</ol></div>\r
 +<div class="paragraph"><p>Please see <strong>examples/push_model/push.re</strong> for push-model scanner. The generated code can be\r
 +tweaked using inplace configurations <strong>state:abort</strong> and <strong>state:nextlabel</strong>.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_scanner_with_condition_support">SCANNER WITH CONDITION SUPPORT</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>You can preceed regular expressions with a list of condition names when using the <strong>-c</strong>\r
 +switch. In this case <strong>re2c</strong> generates scanner blocks for each conditon. Where each of the\r
 +generated blocks has its own precondition. The precondition is given by the\r
 +interface define <strong>YYGETCONDITON()</strong> and must be of type <strong>YYCONDTYPE</strong>.</p></div>\r
 +<div class="paragraph"><p>There are two special rule types. First, the rules of the condition <strong>*</strong> are\r
 +merged to all conditions (note that they have lower priority than other rules\r
 +of that condition). And second the empty condition list allows to\r
 +provide a code block that does not have a scanner part. Meaning it does not\r
 +allow any regular expression. The condition value referring to this special\r
 +block is always the one with the enumeration value 0. This way the code of this\r
 +special rule can be used to initialize a scanner. It is in no way necessary to\r
 +have these rules: but sometimes it is helpful to have a dedicated uninitialized\r
 +condition state.</p></div>\r
 +<div class="paragraph"><p>Non empty rules allow to specify the new condition, which makes them\r
 +transition rules. Besides generating calls for the define <strong>YYSETCONDTITION</strong>\r
 +no other special code is generated.</p></div>\r
 +<div class="paragraph"><p>There is another kind of special rules that allow to prepend code to any code\r
 +block of all rules of a certain set of conditions or to all code blocks to all\r
 +rules. This can be helpful when some operation is common among rules. For\r
 +instance this can be used to store the length of the scanned string. These\r
 +special setup rules start with an exclamation mark followed by either a list\r
 +of conditions <strong>&lt;! condition, ... &gt;</strong> or a star <strong>&lt;!*&gt;</strong>.\r
 +When <strong>re2c</strong> generates the code for a rule whose state does not have a\r
 +setup rule and a star&#8217;d setup rule is present, than that code will be used\r
 +as setup code.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_encodings">ENCODINGS</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p><strong>re2c</strong> supports the following encodings: ASCII (default), EBCDIC (<strong>-e</strong>), UCS-2 (<strong>-w</strong>),\r
 +UTF-16 (<strong>-x</strong>), UTF-32 (<strong>-u</strong>) and UTF-8 (<strong>-8</strong>). ASCII is default. You can\r
 +either pass cmd flag or use <em>inplace configuration</em> in the form <strong>re2c:flags</strong>.</p></div>\r
 +<div class="paragraph"><p>The following concepts should be clarified when talking about encoding. <em>Code point</em>\r
 +is an abstract number, which represents single encoding symbol. <em>Code unit</em> is the\r
 +smallest unit of memory, which is used in the encoded text (it corresponds to one\r
 +character in the input stream). One or more code units can be needed to represent\r
 +a single code point, depending on the encoding. In <em>fixed-length</em> encoding, each\r
 +code point is represented with equal number of code units. In <em>variable-length</em>\r
 +encoding, different code points can be represented with different number of code units.</p></div>\r
 +<div class="dlist"><dl>\r
 +<dt class="hdlist1">\r
 +<strong>ASCII</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a fixed-length encoding. Its code space includes 0x100 code points, from 0\r
 +to 0xFF (note that this is <strong>re2c</strong>-specific understanding of ASCII). One code point\r
 +is represented with exactly one 1-byte code unit, which has the same value as the\r
 +code point. Size of <strong>YYCTYPE</strong> must be 1 byte.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>EBCDIC</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a fixed-length encoding. Its code space includes 0x100 code points, from 0\r
 +to 0xFF. One code point is represented with exactly one 1-byte code unit, which has\r
 +the same value as the code point. Size of <strong>YYCTYPE</strong> must be 1 byte.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>UCS-2</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a fixed-length encoding. Its code space includes 0x10000 code points, from 0\r
 +to 0xFFFF. One code point is represented with exactly one 2-byte code unit, which has\r
 +the same value as the code point. Size of <strong>YYCTYPE</strong> must be 2 bytes.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>UTF-16</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a variable-length encoding. Its code space includes all Unicode code points,\r
 +from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with one or\r
 +two 2-byte code units. Size of <strong>YYCTYPE</strong> must be 2 bytes.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>UTF-32</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a fixed-length encoding. Its code space includes all Unicode code points,\r
 +from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with exactly\r
 +one 4-byte code unit. Size of <strong>YYCTYPE</strong> must be 4 bytes.\r
 +</p>\r
 +</dd>\r
 +<dt class="hdlist1">\r
 +<strong>UTF-8</strong> \r
 +</dt>\r
 +<dd>\r
 +<p>\r
 +is a variable-length encoding. Its code space includes all\r
 +Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point\r
 +is represented with sequence of one, two, three or four 1-byte code units. Size of\r
 +<strong>YYCTYPE</strong> must be 1 bytes.\r
 +</p>\r
 +</dd>\r
 +</dl></div>\r
 +<div class="paragraph"><p>In Unicode, values from range 0xD800 to 0xDFFF (surrogates) are not valid Unicode\r
 +code points, any encoded sequence of code units, that would map to Unicode code points\r
 +in the range 0xD800-0xDFFF, is ill-formed.\r
 +The user can control how <strong>re2c</strong> treats such ill-formed sequences with <strong>--encoding-policy</strong> <em>policy</em>\r
 +flag (see <strong>OPTIONS</strong> section for full explanation).</p></div>\r
 +<div class="paragraph"><p>For some encodings, there are code units, that never occur in valid encoded stream\r
 +(e.g. 0xFF byte in UTF-8). If the generated scanner must check for invalid input,\r
 +the only true way to do so is to use default rule <strong>*</strong>.\r
 +Note, that full range rule <strong>[^]</strong> won&#8217;t catch invalid code units when variable-length encoding is used\r
 +(<strong>[^]</strong> means &#8220;all valid code points&#8221;, while default rule <strong>*</strong> means &#8220;all possible code units&#8221;:\r
 +see <strong>Note</strong> about default rule in <strong>SYNTAX</strong> section).</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_generic_input_api">GENERIC INPUT API</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p><strong>re2c</strong> usually operates on input using pointer-like primitives <strong>YYCURSOR</strong>, <strong>YYMARKER</strong>, <strong>YYCTXMARKER</strong> and <strong>YYLIMIT</strong>.</p></div>\r
 +<div class="paragraph"><p>Generic input API (enabled with <strong>--input custom</strong> switch) allows to customize input operations.\r
 +In this mode, <strong>re2c</strong> will express all operations on input in terms of the following primitives:</p></div>\r
 +<div class="olist arabic"><ol class="arabic">\r
 +<li>\r
 +<p>\r
 +<strong>YYPEEK ()</strong> --- get current input character\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYSKIP ()</strong> --- advance to the next character\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYBACKUP ()</strong> --- backup current input position\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYBACKUPCTX ()</strong> --- backup current input position for trailing context\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYRESTORE ()</strong> --- restore current input position\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYRESTORECTX ()</strong> --- restore current input position for trailing context\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>YYLESSTHAN (n)</strong> --- check if less than <strong>n</strong> input characters are left\r
 +</p>\r
 +</li>\r
 +</ol></div>\r
 +<div class="paragraph"><p>This article (<a href="http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-13-input_model.html">http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-13-input_model.html</a>)\r
 +has more details, and you can find some usage examples:\r
 +<a href="http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-15-input_model_custom.html">http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-15-input_model_custom.html</a> .</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_understanding_re2c">UNDERSTANDING RE2C</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>The subdirectory examples of the <strong>re2c</strong> distribution contains a few step by step\r
 +examples to get you started with <strong>re2c</strong>. All examples in the lessons subdirectory\r
 +can be compiled and actually work.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_bugs">BUGS</h2>\r
 +<div class="sectionbody">\r
 +<div class="olist arabic"><ol class="arabic">\r
 +<li>\r
 +<p>\r
 +Difference only works for character sets, and not in UTF-8 mode.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +The generated DFA is not minimal.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Features, that are naturally orthogonal (such as reusable rules, conditions,\r
 +setup rules and default rules), cannot always be combined. E.g., one cannot set\r
 +setup/default rule for condition in scanner with reusable rules.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +<strong>re2c</strong> does too much unnecessary work: e.g., if <strong>/*!use:re2c ... */</strong> block has\r
 +additional rules, these rules are parsed 4 times, while they should be parsed only once.\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +The <strong>re2c</strong> internal algorithms need documentation.\r
 +</p>\r
 +</li>\r
 +</ol></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_see_also">SEE ALSO</h2>\r
 +<div class="sectionbody">\r
 +<div class="paragraph"><p>flex(1), lex(1), quex (<a href="http://quex.sourceforge.net">http://quex.sourceforge.net</a>)</p></div>\r
 +<div class="paragraph"><p>More information on <strong>re2c</strong> can be found here: <a href="http://re2c.org/">http://re2c.org/</a>.</p></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_authors">AUTHORS</h2>\r
 +<div class="sectionbody">\r
 +<div class="olist arabic"><ol class="arabic">\r
 +<li>\r
 +<p>\r
 +Peter Bumbulis <a href="mailto:peter@csg.uwaterloo.ca">peter@csg.uwaterloo.ca</a>\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Brian Young <a href="mailto:bayoung@acm.org">bayoung@acm.org</a>\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Dan Nuffer <a href="mailto:nuffer@users.sourceforge.net">nuffer@users.sourceforge.net</a>\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Marcus Boerger <a href="mailto:helly@users.sourceforge.net">helly@users.sourceforge.net</a>\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Hartmut Kaiser <a href="mailto:hkaiser@users.sourceforge.net">hkaiser@users.sourceforge.net</a>\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Emmanuel Mogenet <a href="mailto:mgix@mgix.com">mgix@mgix.com</a> (added storable state)\r
 +</p>\r
 +</li>\r
 +<li>\r
 +<p>\r
 +Ulya Trofimovich <a href="mailto:skvadrik@gmail.com">skvadrik@gmail.com</a>\r
 +</p>\r
 +</li>\r
 +</ol></div>\r
 +</div>\r
 +</div>\r
 +<div class="sect1">\r
 +<h2 id="_version_information">VERSION INFORMATION</h2>\r
 +<div class="sectionbody">\r
- Last updated 2015-09-28 15:25:09 BST\r
++<div class="paragraph"><p>This manpage describes <strong>re2c</strong>, version 0.14.1.dev, package date 21 Nov 2015.</p></div>\r
 +</div>\r
 +</div>\r
 +</div>\r
 +<div id="footnotes"><hr /></div>\r
 +<div id="footer">\r
 +<div id="footer-text">\r
++Last updated 2015-11-21 19:45:59 GMT\r
 +</div>\r
 +</div>\r
 +</body>\r
 +</html>\r
index f00638fc4ee4ec90f9a9ed8933d9c5c17647dd44,ac9684ee80919738f943ed7734d2e4e3bd28234f..4985cabc24429769f5f2c5aabd5dea16d490ba99
@@@ -2,12 -2,12 +2,12 @@@
  .\"     Title: re2c
  .\"    Author: [see the "AUTHORS" section]
  .\" Generator: DocBook XSL Stylesheets v1.78.0 <http://docbook.sf.net/>
- .\"      Date: 09/28/2015
 -.\"      Date: 05/20/2015
++.\"      Date: 11/21/2015
  .\"    Manual: \ \&
  .\"    Source: \ \&
  .\"  Language: English
  .\"
- .TH "RE2C" "1" "09/28/2015" "\ \&" "\ \&"
 -.TH "RE2C" "1" "05/20/2015" "\ \&" "\ \&"
++.TH "RE2C" "1" "11/21/2015" "\ \&" "\ \&"
  .\" -----------------------------------------------------------------
  .\" * Define some portability stuff
  .\" -----------------------------------------------------------------
@@@ -1648,4 -1514,4 +1648,4 @@@ skvadrik@gmail\&.co
  .RE
  .SH "VERSION INFORMATION"
  .sp
- This manpage describes \fBre2c\fR, version 0\&.14\&.1\&.dev, package date 28 Sep 2015\&.
 -This manpage describes \fBre2c\fR, version 0\&.14\&.3, package date 20 May 2015\&.
++This manpage describes \fBre2c\fR, version 0\&.14\&.1\&.dev, package date 21 Nov 2015\&.
index 4af5acc439fbf4651215b2558b89e1a89e32afc4,0000000000000000000000000000000000000000..2c616c3f9d1b19880c55cdfb84ecd593ab32257c
mode 100644,000000..100644
--- /dev/null
@@@ -1,1907 -1,0 +1,1907 @@@
- /* Generated by re2c 0.14.3 on Thu Oct  8 10:55:24 2015 */
++/* Generated by re2c 0.14.3 on Sat Nov 21 19:46:24 2015 */
 +#line 1 "../src/conf/parse_opts.re"
 +#include <stdio.h>
 +
 +#include "src/conf/msg.h"
 +#include "src/conf/opt.h"
 +#include "src/globals.h"
 +
 +namespace re2c
 +{
 +
 +static inline bool next (char * & arg, char ** & argv)
 +{
 +      arg = *++argv;
 +      return arg != NULL;
 +}
 +
 +parse_opts_t parse_opts (char ** argv, Opt & opts)
 +{
 +#define YYCTYPE unsigned char
 +      char * YYCURSOR;
 +      char * YYMARKER;
 +      Warn::option_t option;
 +
 +#line 29 "../src/conf/parse_opts.re"
 +
 +
 +opt:
 +      if (!next (YYCURSOR, argv))
 +      {
 +              goto end;
 +      }
 +
 +#line 35 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      static const unsigned char yybm[] = {
 +                0, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x00) goto yy2;
 +      if (yych == '-') goto yy5;
 +      goto yy4;
 +yy2:
 +      ++YYCURSOR;
 +yy3:
 +#line 38 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad option: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 86 "src/conf/parse_opts.cc"
 +yy4:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      goto yy39;
 +yy5:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= '-') {
 +              if (yych <= 0x00) goto yy11;
 +              if (yych >= '-') goto yy9;
 +      } else {
 +              if (yych == 'W') goto yy7;
 +      }
 +#line 61 "../src/conf/parse_opts.re"
 +      { goto opt_short; }
 +#line 101 "src/conf/parse_opts.cc"
 +yy7:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 'e') {
 +              if (yych <= 0x00) goto yy15;
 +              if (yych >= 'e') goto yy17;
 +      } else {
 +              if (yych == 'n') goto yy19;
 +      }
 +yy8:
 +#line 66 "../src/conf/parse_opts.re"
 +      { option = Warn::W;        goto opt_warn; }
 +#line 114 "src/conf/parse_opts.cc"
 +yy9:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy13;
 +#line 62 "../src/conf/parse_opts.re"
 +      { goto opt_long; }
 +#line 120 "src/conf/parse_opts.cc"
 +yy11:
 +      ++YYCURSOR;
 +#line 58 "../src/conf/parse_opts.re"
 +      { if (!opts.source ("<stdin>")) return EXIT_FAIL; goto opt; }
 +#line 125 "src/conf/parse_opts.cc"
 +yy13:
 +      ++YYCURSOR;
 +#line 44 "../src/conf/parse_opts.re"
 +      {
 +              // all remaining arguments are non-options
 +              // so they must be input files
 +              // re2c expects exactly one input file
 +              for (char * f; next (f, argv);)
 +              {
 +                      if (!opts.source (f))
 +                      {
 +                              return EXIT_FAIL;
 +                      }
 +              }
 +              goto end;
 +      }
 +#line 142 "src/conf/parse_opts.cc"
 +yy15:
 +      ++YYCURSOR;
 +#line 64 "../src/conf/parse_opts.re"
 +      { warn.set_all ();       goto opt; }
 +#line 147 "src/conf/parse_opts.cc"
 +yy17:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'r') goto yy30;
 +yy18:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept <= 1) {
 +              if (yyaccept == 0) {
 +                      goto yy3;
 +              } else {
 +                      goto yy8;
 +              }
 +      } else {
 +              goto yy22;
 +      }
 +yy19:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy18;
 +      yyaccept = 2;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy23;
 +yy22:
 +#line 67 "../src/conf/parse_opts.re"
 +      { option = Warn::WNO;      goto opt_warn; }
 +#line 173 "src/conf/parse_opts.cc"
 +yy23:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy18;
 +      ++YYCURSOR;
 +#line 69 "../src/conf/parse_opts.re"
 +      { option = Warn::WNOERROR; goto opt_warn; }
 +#line 188 "src/conf/parse_opts.cc"
 +yy30:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy18;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= 0x00) goto yy36;
 +      if (yych != '-') goto yy18;
 +      ++YYCURSOR;
 +#line 68 "../src/conf/parse_opts.re"
 +      { option = Warn::WERROR;   goto opt_warn; }
 +#line 202 "src/conf/parse_opts.cc"
 +yy36:
 +      ++YYCURSOR;
 +#line 65 "../src/conf/parse_opts.re"
 +      { warn.set_all_error (); goto opt; }
 +#line 207 "src/conf/parse_opts.cc"
 +yy38:
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy39:
 +      if (yybm[0+yych] & 128) {
 +              goto yy38;
 +      }
 +      ++YYCURSOR;
 +#line 59 "../src/conf/parse_opts.re"
 +      { if (!opts.source (*argv))     return EXIT_FAIL; goto opt; }
 +#line 218 "src/conf/parse_opts.cc"
 +}
 +#line 70 "../src/conf/parse_opts.re"
 +
 +
 +opt_warn:
 +
 +#line 225 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      switch (yych) {
 +      case 'c':       goto yy46;
 +      case 'e':       goto yy47;
 +      case 'm':       goto yy48;
 +      case 's':       goto yy49;
 +      case 'u':       goto yy50;
 +      default:        goto yy44;
 +      }
 +yy44:
 +      ++YYCURSOR;
 +yy45:
 +#line 75 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad warning: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 245 "src/conf/parse_opts.cc"
 +yy46:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'o') goto yy162;
 +      goto yy45;
 +yy47:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'm') goto yy140;
 +      goto yy45;
 +yy48:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'a') goto yy121;
 +      goto yy45;
 +yy49:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'w') goto yy107;
 +      goto yy45;
 +yy50:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'n') goto yy53;
 +      if (yych != 's') goto yy45;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy93;
 +yy52:
 +      YYCURSOR = YYMARKER;
 +      goto yy45;
 +yy53:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'd') goto yy54;
 +      if (yych == 'r') goto yy55;
 +      goto yy52;
 +yy54:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy72;
 +      goto yy52;
 +yy55:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 84 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::UNREACHABLE_RULES,      option); goto opt; }
 +#line 314 "src/conf/parse_opts.cc"
 +yy72:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'f') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'f') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'w') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 83 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; }
 +#line 357 "src/conf/parse_opts.cc"
 +yy93:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 85 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::USELESS_ESCAPE,         option); goto opt; }
 +#line 386 "src/conf/parse_opts.cc"
 +yy107:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 82 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::SWAPPED_RANGE,          option); goto opt; }
 +#line 415 "src/conf/parse_opts.cc"
 +yy121:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'm') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 81 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::MATCH_EMPTY_STRING,     option); goto opt; }
 +#line 454 "src/conf/parse_opts.cc"
 +yy140:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 80 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::EMPTY_CHARACTER_CLASS,  option); goto opt; }
 +#line 499 "src/conf/parse_opts.cc"
 +yy162:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy52;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy52;
 +      ++YYCURSOR;
 +#line 79 "../src/conf/parse_opts.re"
 +      { warn.set (Warn::CONDITION_ORDER,        option); goto opt; }
 +#line 532 "src/conf/parse_opts.cc"
 +}
 +#line 86 "../src/conf/parse_opts.re"
 +
 +
 +opt_short:
 +
 +#line 539 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 'b') {
 +              if (yych <= 'C') {
 +                      if (yych <= '7') {
 +                              if (yych <= 0x00) goto yy180;
 +                              if (yych == '1') goto yy184;
 +                              goto yy182;
 +                      } else {
 +                              if (yych <= '8') goto yy186;
 +                              if (yych == '?') goto yy188;
 +                              goto yy182;
 +                      }
 +              } else {
 +                      if (yych <= 'R') {
 +                              if (yych <= 'D') goto yy190;
 +                              if (yych == 'F') goto yy192;
 +                              goto yy182;
 +                      } else {
 +                              if (yych <= 'U') {
 +                                      if (yych <= 'S') goto yy194;
 +                                      goto yy182;
 +                              } else {
 +                                      if (yych <= 'V') goto yy196;
 +                                      if (yych <= 'a') goto yy182;
 +                                      goto yy198;
 +                              }
 +                      }
 +              }
 +      } else {
 +              if (yych <= 'o') {
 +                      if (yych <= 'f') {
 +                              if (yych <= 'c') goto yy200;
 +                              if (yych <= 'd') goto yy202;
 +                              if (yych <= 'e') goto yy204;
 +                              goto yy206;
 +                      } else {
 +                              if (yych <= 'h') {
 +                                      if (yych <= 'g') goto yy208;
 +                                      goto yy188;
 +                              } else {
 +                                      if (yych <= 'i') goto yy210;
 +                                      if (yych <= 'n') goto yy182;
 +                                      goto yy212;
 +                              }
 +                      }
 +              } else {
 +                      if (yych <= 't') {
 +                              if (yych <= 'q') goto yy182;
 +                              if (yych <= 'r') goto yy214;
 +                              if (yych <= 's') goto yy216;
 +                              goto yy218;
 +                      } else {
 +                              if (yych <= 'v') {
 +                                      if (yych <= 'u') goto yy220;
 +                                      goto yy222;
 +                              } else {
 +                                      if (yych <= 'w') goto yy224;
 +                                      if (yych <= 'x') goto yy226;
 +                                      goto yy182;
 +                              }
 +                      }
 +              }
 +      }
 +yy180:
 +      ++YYCURSOR;
 +#line 95 "../src/conf/parse_opts.re"
 +      { goto opt; }
 +#line 609 "src/conf/parse_opts.cc"
 +yy182:
 +      ++YYCURSOR;
 +#line 91 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad short option: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 617 "src/conf/parse_opts.cc"
 +yy184:
 +      ++YYCURSOR;
 +#line 119 "../src/conf/parse_opts.re"
 +      { goto opt_short; }
 +#line 622 "src/conf/parse_opts.cc"
 +yy186:
 +      ++YYCURSOR;
 +#line 114 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt_short; }
 +#line 627 "src/conf/parse_opts.cc"
 +yy188:
 +      ++YYCURSOR;
 +#line 96 "../src/conf/parse_opts.re"
 +      { usage ();   return EXIT_OK; }
 +#line 632 "src/conf/parse_opts.cc"
 +yy190:
 +      ++YYCURSOR;
 +#line 102 "../src/conf/parse_opts.re"
 +      { opts.set_target (opt_t::DOT);      goto opt_short; }
 +#line 637 "src/conf/parse_opts.cc"
 +yy192:
 +      ++YYCURSOR;
 +#line 104 "../src/conf/parse_opts.re"
 +      { opts.set_FFlag (true);             goto opt_short; }
 +#line 642 "src/conf/parse_opts.cc"
 +yy194:
 +      ++YYCURSOR;
 +#line 109 "../src/conf/parse_opts.re"
 +      { opts.set_target (opt_t::SKELETON); goto opt_short; }
 +#line 647 "src/conf/parse_opts.cc"
 +yy196:
 +      ++YYCURSOR;
 +#line 98 "../src/conf/parse_opts.re"
 +      { vernum ();  return EXIT_OK; }
 +#line 652 "src/conf/parse_opts.cc"
 +yy198:
 +      ++YYCURSOR;
 +#line 99 "../src/conf/parse_opts.re"
 +      { opts.set_bFlag (true);             goto opt_short; }
 +#line 657 "src/conf/parse_opts.cc"
 +yy200:
 +      ++YYCURSOR;
 +#line 100 "../src/conf/parse_opts.re"
 +      { opts.set_cFlag (true);             goto opt_short; }
 +#line 662 "src/conf/parse_opts.cc"
 +yy202:
 +      ++YYCURSOR;
 +#line 101 "../src/conf/parse_opts.re"
 +      { opts.set_dFlag (true);             goto opt_short; }
 +#line 667 "src/conf/parse_opts.cc"
 +yy204:
 +      ++YYCURSOR;
 +#line 110 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::EBCDIC)) { error_encoding (); return EXIT_FAIL; } goto opt_short; }
 +#line 672 "src/conf/parse_opts.cc"
 +yy206:
 +      ++YYCURSOR;
 +#line 103 "../src/conf/parse_opts.re"
 +      { opts.set_fFlag (true);             goto opt_short; }
 +#line 677 "src/conf/parse_opts.cc"
 +yy208:
 +      ++YYCURSOR;
 +#line 105 "../src/conf/parse_opts.re"
 +      { opts.set_gFlag (true);             goto opt_short; }
 +#line 682 "src/conf/parse_opts.cc"
 +yy210:
 +      ++YYCURSOR;
 +#line 106 "../src/conf/parse_opts.re"
 +      { opts.set_iFlag (true);             goto opt_short; }
 +#line 687 "src/conf/parse_opts.cc"
 +yy212:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy230;
 +#line 116 "../src/conf/parse_opts.re"
 +      { *argv = YYCURSOR;                                                             goto opt_output; }
 +#line 693 "src/conf/parse_opts.cc"
 +yy214:
 +      ++YYCURSOR;
 +#line 107 "../src/conf/parse_opts.re"
 +      { opts.set_rFlag (true);             goto opt_short; }
 +#line 698 "src/conf/parse_opts.cc"
 +yy216:
 +      ++YYCURSOR;
 +#line 108 "../src/conf/parse_opts.re"
 +      { opts.set_sFlag (true);             goto opt_short; }
 +#line 703 "src/conf/parse_opts.cc"
 +yy218:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= 0x00) goto yy228;
 +#line 118 "../src/conf/parse_opts.re"
 +      { *argv = YYCURSOR;                                                                  goto opt_header; }
 +#line 709 "src/conf/parse_opts.cc"
 +yy220:
 +      ++YYCURSOR;
 +#line 111 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt_short; }
 +#line 714 "src/conf/parse_opts.cc"
 +yy222:
 +      ++YYCURSOR;
 +#line 97 "../src/conf/parse_opts.re"
 +      { version (); return EXIT_OK; }
 +#line 719 "src/conf/parse_opts.cc"
 +yy224:
 +      ++YYCURSOR;
 +#line 112 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UCS2))   { error_encoding (); return EXIT_FAIL; } goto opt_short; }
 +#line 724 "src/conf/parse_opts.cc"
 +yy226:
 +      ++YYCURSOR;
 +#line 113 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF16))  { error_encoding (); return EXIT_FAIL; } goto opt_short; }
 +#line 729 "src/conf/parse_opts.cc"
 +yy228:
 +      ++YYCURSOR;
 +#line 117 "../src/conf/parse_opts.re"
 +      { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
 +#line 734 "src/conf/parse_opts.cc"
 +yy230:
 +      ++YYCURSOR;
 +#line 115 "../src/conf/parse_opts.re"
 +      { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
 +#line 739 "src/conf/parse_opts.cc"
 +}
 +#line 120 "../src/conf/parse_opts.re"
 +
 +
 +opt_long:
 +
 +#line 746 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      switch (yych) {
 +      case 'b':       goto yy236;
 +      case 'c':       goto yy237;
 +      case 'd':       goto yy238;
 +      case 'e':       goto yy239;
 +      case 'f':       goto yy240;
 +      case 'h':       goto yy241;
 +      case 'i':       goto yy242;
 +      case 'n':       goto yy243;
 +      case 'o':       goto yy244;
 +      case 'r':       goto yy245;
 +      case 's':       goto yy246;
 +      case 't':       goto yy247;
 +      case 'u':       goto yy248;
 +      case 'v':       goto yy249;
 +      case 'w':       goto yy250;
 +      default:        goto yy234;
 +      }
 +yy234:
 +      ++YYCURSOR;
 +yy235:
 +#line 125 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad long option: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 776 "src/conf/parse_opts.cc"
 +yy236:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'i') goto yy532;
 +      goto yy235;
 +yy237:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'a') goto yy492;
 +      if (yych == 'o') goto yy493;
 +      goto yy235;
 +yy238:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy479;
 +      goto yy235;
 +yy239:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 'l') {
 +              if (yych == 'c') goto yy441;
 +              goto yy235;
 +      } else {
 +              if (yych <= 'm') goto yy439;
 +              if (yych <= 'n') goto yy440;
 +              goto yy235;
 +      }
 +yy240:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'l') goto yy427;
 +      goto yy235;
 +yy241:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy422;
 +      goto yy235;
 +yy242:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'n') goto yy416;
 +      goto yy235;
 +yy243:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy375;
 +      if (yych == 'o') goto yy374;
 +      goto yy235;
 +yy244:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'u') goto yy367;
 +      goto yy235;
 +yy245:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy358;
 +      goto yy235;
 +yy246:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 'j') {
 +              if (yych == 'i') goto yy306;
 +              goto yy235;
 +      } else {
 +              if (yych <= 'k') goto yy307;
 +              if (yych == 't') goto yy308;
 +              goto yy235;
 +      }
 +yy247:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'y') goto yy294;
 +      goto yy235;
 +yy248:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'n') goto yy277;
 +      if (yych == 't') goto yy276;
 +      goto yy235;
 +yy249:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'e') goto yy263;
 +      goto yy235;
 +yy250:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych != 'i') goto yy235;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'd') goto yy253;
 +yy252:
 +      YYCURSOR = YYMARKER;
 +      goto yy235;
 +yy253:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 148 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UCS2))   { error_encoding (); return EXIT_FAIL; } goto opt; }
 +#line 876 "src/conf/parse_opts.cc"
 +yy263:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'n') goto yy265;
 +      if (yych == 's') goto yy266;
 +      goto yy252;
 +yy265:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'u') goto yy272;
 +      goto yy252;
 +yy266:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 130 "../src/conf/parse_opts.re"
 +      { version (); return EXIT_OK; }
 +#line 900 "src/conf/parse_opts.cc"
 +yy272:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'm') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 131 "../src/conf/parse_opts.re"
 +      { vernum ();  return EXIT_OK; }
 +#line 909 "src/conf/parse_opts.cc"
 +yy276:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'f') goto yy285;
 +      goto yy252;
 +yy277:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 147 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF32))  { error_encoding (); return EXIT_FAIL; } goto opt; }
 +#line 930 "src/conf/parse_opts.cc"
 +yy285:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '1') goto yy287;
 +      if (yych == '8') goto yy288;
 +      goto yy252;
 +yy287:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '6') goto yy291;
 +      goto yy252;
 +yy288:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 150 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF8))   { error_encoding (); return EXIT_FAIL; } goto opt; }
 +#line 948 "src/conf/parse_opts.cc"
 +yy291:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 149 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::UTF16))  { error_encoding (); return EXIT_FAIL; } goto opt; }
 +#line 955 "src/conf/parse_opts.cc"
 +yy294:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 152 "../src/conf/parse_opts.re"
 +      { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; }
 +#line 980 "src/conf/parse_opts.cc"
 +yy306:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'n') goto yy347;
 +      goto yy252;
 +yy307:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy339;
 +      goto yy252;
 +yy308:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'a') goto yy309;
 +      if (yych == 'o') goto yy310;
 +      goto yy252;
 +yy309:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'r') goto yy324;
 +      goto yy252;
 +yy310:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 136 "../src/conf/parse_opts.re"
 +      { opts.set_fFlag (true);             goto opt; }
 +#line 1026 "src/conf/parse_opts.cc"
 +yy324:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 133 "../src/conf/parse_opts.re"
 +      { opts.set_cFlag (true);             goto opt; }
 +#line 1057 "src/conf/parse_opts.cc"
 +yy339:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 145 "../src/conf/parse_opts.re"
 +      { opts.set_target (opt_t::SKELETON); goto opt; }
 +#line 1074 "src/conf/parse_opts.cc"
 +yy347:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 156 "../src/conf/parse_opts.re"
 +      { goto opt; }
 +#line 1097 "src/conf/parse_opts.cc"
 +yy358:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 140 "../src/conf/parse_opts.re"
 +      { opts.set_rFlag (true);             goto opt; }
 +#line 1116 "src/conf/parse_opts.cc"
 +yy367:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 151 "../src/conf/parse_opts.re"
 +      { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; }
 +#line 1131 "src/conf/parse_opts.cc"
 +yy374:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '-') goto yy386;
 +      goto yy252;
 +yy375:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'f') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 141 "../src/conf/parse_opts.re"
 +      { opts.set_sFlag (true);             goto opt; }
 +#line 1158 "src/conf/parse_opts.cc"
 +yy386:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'd') goto yy388;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy400;
 +      goto yy252;
 +yy388:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'f') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 139 "../src/conf/parse_opts.re"
 +      { opts.set_iFlag (true);             goto opt; }
 +#line 1190 "src/conf/parse_opts.cc"
 +yy400:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 142 "../src/conf/parse_opts.re"
 +      { opts.set_bNoGenerationDate (true); goto opt; }
 +#line 1223 "src/conf/parse_opts.cc"
 +yy416:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 154 "../src/conf/parse_opts.re"
 +      { goto opt_input; }
 +#line 1236 "src/conf/parse_opts.cc"
 +yy422:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 129 "../src/conf/parse_opts.re"
 +      { usage ();   return EXIT_OK; }
 +#line 1247 "src/conf/parse_opts.cc"
 +yy427:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'x') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'x') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 137 "../src/conf/parse_opts.re"
 +      { opts.set_FFlag (true);             goto opt; }
 +#line 1272 "src/conf/parse_opts.cc"
 +yy439:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'i') goto yy460;
 +      if (yych == 'p') goto yy461;
 +      goto yy252;
 +yy440:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'c') goto yy445;
 +      goto yy252;
 +yy441:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 146 "../src/conf/parse_opts.re"
 +      { if (!opts.set_encoding (Enc::EBCDIC)) { error_encoding (); return EXIT_FAIL; } goto opt; }
 +#line 1290 "src/conf/parse_opts.cc"
 +yy445:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 153 "../src/conf/parse_opts.re"
 +      { goto opt_encoding_policy; }
 +#line 1321 "src/conf/parse_opts.cc"
 +yy460:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 't') goto yy472;
 +      goto yy252;
 +yy461:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 155 "../src/conf/parse_opts.re"
 +      { goto opt_empty_class; }
 +#line 1348 "src/conf/parse_opts.cc"
 +yy472:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 135 "../src/conf/parse_opts.re"
 +      { opts.set_target (opt_t::DOT);      goto opt; }
 +#line 1363 "src/conf/parse_opts.cc"
 +yy479:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'b') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 134 "../src/conf/parse_opts.re"
 +      { opts.set_dFlag (true);             goto opt; }
 +#line 1390 "src/conf/parse_opts.cc"
 +yy492:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 's') goto yy508;
 +      goto yy252;
 +yy493:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'm') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'g') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 138 "../src/conf/parse_opts.re"
 +      { opts.set_gFlag (true);             goto opt; }
 +#line 1425 "src/conf/parse_opts.cc"
 +yy508:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 's') goto yy514;
 +      if (yych != 'v') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy525;
 +      goto yy252;
 +yy514:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'v') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 143 "../src/conf/parse_opts.re"
 +      { opts.set_bCaseInsensitive (true);  goto opt; }
 +#line 1463 "src/conf/parse_opts.cc"
 +yy525:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'd') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 144 "../src/conf/parse_opts.re"
 +      { opts.set_bCaseInverted (true);     goto opt; }
 +#line 1478 "src/conf/parse_opts.cc"
 +yy532:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'v') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy252;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy252;
 +      ++YYCURSOR;
 +#line 132 "../src/conf/parse_opts.re"
 +      { opts.set_bFlag (true);             goto opt; }
 +#line 1503 "src/conf/parse_opts.cc"
 +}
 +#line 157 "../src/conf/parse_opts.re"
 +
 +
 +opt_output:
 +
 +#line 1510 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      static const unsigned char yybm[] = {
 +                0, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x00) goto yy546;
 +      if (yych != '-') goto yy548;
 +yy546:
 +      ++YYCURSOR;
 +#line 162 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad argument to option -o, --output: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 1557 "src/conf/parse_opts.cc"
 +yy548:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      goto yy550;
 +yy549:
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy550:
 +      if (yybm[0+yych] & 128) {
 +              goto yy549;
 +      }
 +      ++YYCURSOR;
 +#line 166 "../src/conf/parse_opts.re"
 +      { if (!opts.output (*argv)) return EXIT_FAIL; goto opt; }
 +#line 1571 "src/conf/parse_opts.cc"
 +}
 +#line 167 "../src/conf/parse_opts.re"
 +
 +
 +opt_header:
 +
 +#line 1578 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      static const unsigned char yybm[] = {
 +                0, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x00) goto yy555;
 +      if (yych != '-') goto yy557;
 +yy555:
 +      ++YYCURSOR;
 +#line 172 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad argument to option -t, --type-header: %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 1625 "src/conf/parse_opts.cc"
 +yy557:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      goto yy559;
 +yy558:
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy559:
 +      if (yybm[0+yych] & 128) {
 +              goto yy558;
 +      }
 +      ++YYCURSOR;
 +#line 176 "../src/conf/parse_opts.re"
 +      { opts.set_header_file (*argv); goto opt; }
 +#line 1639 "src/conf/parse_opts.cc"
 +}
 +#line 177 "../src/conf/parse_opts.re"
 +
 +
 +opt_encoding_policy:
 +      if (!next (YYCURSOR, argv))
 +      {
 +              error_arg ("--encoding-policy");
 +              return EXIT_FAIL;
 +      }
 +
 +#line 1651 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 'h') {
 +              if (yych == 'f') goto yy566;
 +      } else {
 +              if (yych <= 'i') goto yy567;
 +              if (yych == 's') goto yy568;
 +      }
 +      ++YYCURSOR;
 +yy565:
 +#line 187 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 1668 "src/conf/parse_opts.cc"
 +yy566:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'a') goto yy588;
 +      goto yy565;
 +yy567:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'g') goto yy581;
 +      goto yy565;
 +yy568:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych != 'u') goto yy565;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'b') goto yy571;
 +yy570:
 +      YYCURSOR = YYMARKER;
 +      goto yy565;
 +yy571:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy570;
 +      ++YYCURSOR;
 +#line 192 "../src/conf/parse_opts.re"
 +      { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; }
 +#line 1705 "src/conf/parse_opts.cc"
 +yy581:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy570;
 +      ++YYCURSOR;
 +#line 191 "../src/conf/parse_opts.re"
 +      { opts.set_encoding_policy (Enc::POLICY_IGNORE);     goto opt; }
 +#line 1720 "src/conf/parse_opts.cc"
 +yy588:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy570;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy570;
 +      ++YYCURSOR;
 +#line 193 "../src/conf/parse_opts.re"
 +      { opts.set_encoding_policy (Enc::POLICY_FAIL);       goto opt; }
 +#line 1731 "src/conf/parse_opts.cc"
 +}
 +#line 194 "../src/conf/parse_opts.re"
 +
 +
 +opt_input:
 +      if (!next (YYCURSOR, argv))
 +      {
 +              error_arg ("--input");
 +              return EXIT_FAIL;
 +      }
 +
 +#line 1743 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 'b') goto yy595;
 +      if (yych <= 'c') goto yy597;
 +      if (yych <= 'd') goto yy598;
 +yy595:
 +      ++YYCURSOR;
 +yy596:
 +#line 204 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad argument to option --input (expected: default | custom): %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 1758 "src/conf/parse_opts.cc"
 +yy597:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'u') goto yy608;
 +      goto yy596;
 +yy598:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych != 'e') goto yy596;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'f') goto yy601;
 +yy600:
 +      YYCURSOR = YYMARKER;
 +      goto yy596;
 +yy601:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'u') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy600;
 +      ++YYCURSOR;
 +#line 208 "../src/conf/parse_opts.re"
 +      { opts.set_input_api (InputAPI::DEFAULT); goto opt; }
 +#line 1785 "src/conf/parse_opts.cc"
 +yy608:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'm') goto yy600;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy600;
 +      ++YYCURSOR;
 +#line 209 "../src/conf/parse_opts.re"
 +      { opts.set_input_api (InputAPI::CUSTOM);  goto opt; }
 +#line 1800 "src/conf/parse_opts.cc"
 +}
 +#line 210 "../src/conf/parse_opts.re"
 +
 +
 +opt_empty_class:
 +      if (!next (YYCURSOR, argv))
 +      {
 +              error_arg ("--empty-class");
 +              return EXIT_FAIL;
 +      }
 +
 +#line 1812 "src/conf/parse_opts.cc"
 +{
 +      YYCTYPE yych;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == 'e') goto yy619;
 +      if (yych == 'm') goto yy620;
 +      ++YYCURSOR;
 +yy618:
 +#line 220 "../src/conf/parse_opts.re"
 +      {
 +              error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv);
 +              return EXIT_FAIL;
 +      }
 +#line 1825 "src/conf/parse_opts.cc"
 +yy619:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == 'r') goto yy640;
 +      goto yy618;
 +yy620:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych != 'a') goto yy618;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 't') goto yy623;
 +yy622:
 +      YYCURSOR = YYMARKER;
 +      goto yy618;
 +yy623:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'h') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '-') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy627;
 +      if (yych == 'n') goto yy628;
 +      goto yy622;
 +yy627:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'm') goto yy634;
 +      goto yy622;
 +yy628:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy622;
 +      ++YYCURSOR;
 +#line 225 "../src/conf/parse_opts.re"
 +      { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE);  goto opt; }
 +#line 1865 "src/conf/parse_opts.cc"
 +yy634:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'y') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy622;
 +      ++YYCURSOR;
 +#line 224 "../src/conf/parse_opts.re"
 +      { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; }
 +#line 1878 "src/conf/parse_opts.cc"
 +yy640:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy622;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych >= 0x01) goto yy622;
 +      ++YYCURSOR;
 +#line 226 "../src/conf/parse_opts.re"
 +      { opts.set_empty_class_policy (EMPTY_CLASS_ERROR);       goto opt; }
 +#line 1891 "src/conf/parse_opts.cc"
 +}
 +#line 227 "../src/conf/parse_opts.re"
 +
 +
 +end:
 +      if (!opts.source_file)
 +      {
 +              error ("no source file");
 +              return EXIT_FAIL;
 +      }
 +
 +      return OK;
 +
 +#undef YYCTYPE
 +}
 +
 +} // namespace re2c
index b98741a92c3b8819874f0b95d13c10e11f1a9279,0000000000000000000000000000000000000000..147dabff480a080b84cab6cd8ede72226f4308a6
mode 100644,000000..100644
--- /dev/null
@@@ -1,2807 -1,0 +1,2807 @@@
- /* Generated by re2c 0.14.3 on Tue Nov 10 15:25:44 2015 */
++/* Generated by re2c 0.14.3 on Sat Nov 21 19:46:24 2015 */
 +#line 1 "../src/parse/lex.re"
 +#include <stdlib.h>
 +#include <string.h>
 +#include <iostream>
 +#include <sstream>
 +
 +#include "src/ir/dfa/dfa.h"
 +#include "src/ir/regexp/regexp_null.h"
 +#include "src/globals.h"
 +#include "src/parse/extop.h"
 +#include "src/parse/parser.h"
 +#include "src/parse/scanner.h"
 +#include "src/parse/unescape.h"
 +#include "y.tab.h"
 +#include "src/util/s_to_n32_unsafe.h"
 +
 +extern YYSTYPE yylval;
 +
 +#define       YYCTYPE         unsigned char
 +#define       YYCURSOR        cur
 +#define       YYLIMIT         lim
 +#define       YYMARKER        ptr
 +#define       YYCTXMARKER ctx
 +#define       YYFILL(n)       { fill (n); }
 +
 +namespace re2c
 +{
 +
 +// source code is in ASCII: pointers have type 'char *'
 +// but re2c makes an implicit assumption that YYCTYPE is unsigned
 +// when it generates comparisons
 +#line 33 "../src/parse/lex.re"
 +
 +
 +#line 53 "../src/parse/lex.re"
 +
 +
 +Scanner::ParseMode Scanner::echo()
 +{
 +      bool ignore_eoc = false;
 +      int  ignore_cnt = 0;
 +
 +      if (eof && cur == eof) // Catch EOF
 +      {
 +              return Stop;
 +      }
 +
 +      tok = cur;
 +echo:
 +
 +#line 53 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      static const unsigned char yybm[] = {
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 160,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              160, 128,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              192, 192, 192, 192, 192, 192, 192, 192, 
 +              192, 192, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128,   0, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +
 +      if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '%') {
 +              if (yych <= '\t') {
 +                      if (yych >= 0x01) goto yy4;
 +              } else {
 +                      if (yych <= '\n') goto yy6;
 +                      if (yych <= '$') goto yy4;
 +                      goto yy8;
 +              }
 +      } else {
 +              if (yych <= '*') {
 +                      if (yych <= ')') goto yy4;
 +                      goto yy9;
 +              } else {
 +                      if (yych == '/') goto yy10;
 +                      goto yy4;
 +              }
 +      }
 +      ++YYCURSOR;
 +#line 196 "../src/parse/lex.re"
 +      {
 +                                      if (!ignore_eoc && opts->target == opt_t::CODE)
 +                                      {
 +                                              out.write(tok, tok_len () - 1);
 +                                              // -1 so we don't write out the \0
 +                                      }
 +                                      if(cur == eof)
 +                                      {
 +                                              return Stop;
 +                                      }
 +                              }
 +#line 124 "src/parse/lex.cc"
 +yy4:
 +      ++YYCURSOR;
 +yy5:
 +#line 207 "../src/parse/lex.re"
 +      {
 +                                      goto echo;
 +                              }
 +#line 132 "src/parse/lex.cc"
 +yy6:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yybm[0+yych] & 32) {
 +              goto yy89;
 +      }
 +      if (yych == '#') goto yy91;
 +yy7:
 +#line 183 "../src/parse/lex.re"
 +      {
 +                                      if (ignore_eoc)
 +                                      {
 +                                              ignore_cnt++;
 +                                      }
 +                                      else if (opts->target == opt_t::CODE)
 +                                      {
 +                                              out.write(tok, tok_len ());
 +                                      }
 +                                      tok = pos = cur;
 +                                      cline++;
 +                                      goto echo;
 +                              }
 +#line 155 "src/parse/lex.cc"
 +yy8:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '{') goto yy32;
 +      goto yy5;
 +yy9:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '/') goto yy84;
 +      goto yy5;
 +yy10:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych != '*') goto yy5;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '!') goto yy13;
 +yy12:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept <= 1) {
 +              if (yyaccept == 0) {
 +                      goto yy7;
 +              } else {
 +                      goto yy5;
 +              }
 +      } else {
 +              goto yy85;
 +      }
 +yy13:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      switch (yych) {
 +      case 'g':       goto yy16;
 +      case 'i':       goto yy15;
 +      case 'm':       goto yy17;
 +      case 'r':       goto yy19;
 +      case 't':       goto yy14;
 +      case 'u':       goto yy18;
 +      default:        goto yy12;
 +      }
 +yy14:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'y') goto yy74;
 +      goto yy12;
 +yy15:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'g') goto yy63;
 +      goto yy12;
 +yy16:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy50;
 +      goto yy12;
 +yy17:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'a') goto yy42;
 +      goto yy12;
 +yy18:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 's') goto yy34;
 +      goto yy12;
 +yy19:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy20;
 +      if (yych == 'u') goto yy21;
 +      goto yy12;
 +yy20:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '2') goto yy31;
 +      goto yy12;
 +yy21:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'l') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 84 "../src/parse/lex.re"
 +      {
 +                                      if (opts->rFlag)
 +                                      {
 +                                              opts.reset_mapCodeName ();
 +                                      }
 +                                      else
 +                                      {
 +                                              fatal("found 'rules:re2c' block without -r flag");
 +                                      }
 +                                      tok = cur;
 +                                      return Rules;
 +                              }
 +#line 252 "src/parse/lex.cc"
 +yy31:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +yy32:
 +      ++YYCURSOR;
 +#line 69 "../src/parse/lex.re"
 +      {
 +                                      if (opts->rFlag)
 +                                      {
 +                                              fatal("found standard 're2c' block while using -r flag");
 +                                      }
 +                                      if (opts->target == opt_t::CODE)
 +                                      {
 +                                              const size_t lexeme_len = cur[-1] == '{'
 +                                                      ? sizeof ("%{") - 1
 +                                                      : sizeof ("/*!re2c") - 1;
 +                                              out.write(tok, tok_len () - lexeme_len);
 +                                      }
 +                                      tok = cur;
 +                                      return Parse;
 +                              }
 +#line 274 "src/parse/lex.cc"
 +yy34:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 96 "../src/parse/lex.re"
 +      {
 +                                      if (!opts->rFlag)
 +                                      {
 +                                              fatal("found 'use:re2c' block without -r flag");
 +                                      }
 +                                      reuse();
 +                                      if (opts->target == opt_t::CODE)
 +                                      {
 +                                              const size_t lexeme_len = sizeof ("/*!use:re2c") - 1;
 +                                              out.write(tok, tok_len () - lexeme_len);
 +                                      }
 +                                      tok = cur;
 +                                      return Reuse;
 +                              }
 +#line 304 "src/parse/lex.cc"
 +yy42:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'x') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 110 "../src/parse/lex.re"
 +      {
 +                                      if (opts->target != opt_t::DOT)
 +                                      {
 +                                              out.insert_yymaxfill ();
 +                                      }
 +                                      tok = pos = cur;
 +                                      ignore_eoc = true;
 +                                      goto echo;
 +                              }
 +#line 329 "src/parse/lex.cc"
 +yy50:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'a') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 't') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 119 "../src/parse/lex.re"
 +      {
 +                                      tok = pos = cur;
 +                                      out.insert_state_goto (opts->topIndent);
 +                                      ignore_eoc = true;
 +                                      goto echo;
 +                              }
 +#line 361 "src/parse/lex.cc"
 +yy63:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'o') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 125 "../src/parse/lex.re"
 +      {
 +                                      tok = pos = cur;
 +                                      ignore_eoc = true;
 +                                      goto echo;
 +                              }
 +#line 388 "src/parse/lex.cc"
 +yy74:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'p') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 's') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'r') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy12;
 +      ++YYCURSOR;
 +#line 130 "../src/parse/lex.re"
 +      {
 +                                      tok = pos = cur;
 +                                      ignore_eoc = true;
 +                                      if (opts->target != opt_t::DOT)
 +                                      {
 +                                              out.insert_line_info ();
 +                                              out << "\n";
 +                                              out.insert_types ();
 +                                              out << "\n";
 +                                              out.write_line_info (cline, get_fname ().c_str ());
 +                                      }
 +                                      goto echo;
 +                              }
 +#line 421 "src/parse/lex.cc"
 +yy84:
 +      yyaccept = 2;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == '\n') goto yy87;
 +      if (yych == '\r') goto yy86;
 +yy85:
 +#line 161 "../src/parse/lex.re"
 +      {
 +                                      if (ignore_eoc)
 +                                      {
 +                                              if (ignore_cnt)
 +                                              {
 +                                                      out << "\n";
 +                                                      out.write_line_info (cline, get_fname ().c_str ());
 +                                              }
 +                                              ignore_eoc = false;
 +                                              ignore_cnt = 0;
 +                                      }
 +                                      else if (opts->target == opt_t::CODE)
 +                                      {
 +                                              out.write(tok, tok_len ());
 +                                      }
 +                                      tok = pos = cur;
 +                                      goto echo;
 +                              }
 +#line 447 "src/parse/lex.cc"
 +yy86:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '\n') goto yy12;
 +yy87:
 +      ++YYCURSOR;
 +#line 143 "../src/parse/lex.re"
 +      {
 +                                      cline++;
 +                                      if (ignore_eoc)
 +                                      {
 +                                              if (ignore_cnt)
 +                                              {
 +                                                      out.write_line_info (cline, get_fname ().c_str ());
 +                                              }
 +                                              ignore_eoc = false;
 +                                              ignore_cnt = 0;
 +                                      }
 +                                      else if (opts->target == opt_t::CODE)
 +                                      {
 +                                              out.write(tok, tok_len ());
 +                                      }
 +                                      tok = pos = cur;
 +                                      goto echo;
 +                              }
 +#line 472 "src/parse/lex.cc"
 +yy89:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 32) {
 +              goto yy89;
 +      }
 +      if (yych != '#') goto yy12;
 +yy91:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy91;
 +              goto yy12;
 +      } else {
 +              if (yych <= ' ') goto yy91;
 +              if (yych != 'l') goto yy12;
 +      }
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy12;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '0') goto yy98;
 +      if (yych <= '9') goto yy12;
 +      goto yy98;
 +yy97:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy98:
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy97;
 +              goto yy12;
 +      } else {
 +              if (yych <= ' ') goto yy97;
 +              if (yych <= '0') goto yy12;
 +              if (yych >= ':') goto yy12;
 +      }
 +yy99:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 64) {
 +              goto yy99;
 +      }
 +      if (yych <= '\f') {
 +              if (yych <= 0x08) goto yy12;
 +              if (yych <= '\t') goto yy101;
 +              if (yych <= '\n') goto yy103;
 +              goto yy12;
 +      } else {
 +              if (yych <= '\r') goto yy105;
 +              if (yych != ' ') goto yy12;
 +      }
 +yy101:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy101;
 +              goto yy12;
 +      } else {
 +              if (yych <= ' ') goto yy101;
 +              if (yych == '"') goto yy106;
 +              goto yy12;
 +      }
 +yy103:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 179 "../src/parse/lex.re"
 +      {
 +                                      set_sourceline ();
 +                                      goto echo;
 +                              }
 +#line 552 "src/parse/lex.cc"
 +yy105:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy103;
 +      goto yy12;
 +yy106:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 128) {
 +              goto yy106;
 +      }
 +      if (yych <= '\n') goto yy12;
 +      if (yych <= '"') goto yy109;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy12;
 +      goto yy106;
 +yy109:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy103;
 +      if (yych == '\r') goto yy105;
 +      goto yy12;
 +}
 +#line 210 "../src/parse/lex.re"
 +
 +}
 +
 +int Scanner::scan()
 +{
 +      uint32_t depth;
 +
 +scan:
 +      tchar = cur - pos;
 +      tline = cline;
 +      tok = cur;
 +      switch (lexer_state)
 +      {
 +              case LEX_NORMAL:    goto start;
 +              case LEX_FLEX_NAME: goto flex_name;
 +      }
 +
 +start:
 +
 +#line 597 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      static const unsigned char yybm[] = {
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 192,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              192, 128,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              176, 176, 176, 176, 176, 176, 176, 176, 
 +              176, 176, 128, 128, 128, 128, 128, 128, 
 +              128, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 128,   0, 128, 128, 160, 
 +              128, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 160, 160, 160, 160, 160, 
 +              160, 160, 160, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '.') {
 +              if (yych <= '"') {
 +                      if (yych <= '\f') {
 +                              if (yych <= 0x08) goto yy112;
 +                              if (yych <= '\t') goto yy114;
 +                              if (yych <= '\n') goto yy116;
 +                      } else {
 +                              if (yych <= 0x1F) {
 +                                      if (yych <= '\r') goto yy118;
 +                              } else {
 +                                      if (yych <= ' ') goto yy114;
 +                                      if (yych >= '"') goto yy119;
 +                              }
 +                      }
 +              } else {
 +                      if (yych <= ')') {
 +                              if (yych <= '%') {
 +                                      if (yych >= '%') goto yy121;
 +                              } else {
 +                                      if (yych <= '&') goto yy112;
 +                                      if (yych <= '\'') goto yy122;
 +                                      goto yy124;
 +                              }
 +                      } else {
 +                              if (yych <= '+') {
 +                                      if (yych <= '*') goto yy126;
 +                                      goto yy128;
 +                              } else {
 +                                      if (yych <= ',') goto yy124;
 +                                      if (yych >= '.') goto yy130;
 +                              }
 +                      }
 +              }
 +      } else {
 +              if (yych <= '[') {
 +                      if (yych <= '<') {
 +                              if (yych <= '9') {
 +                                      if (yych <= '/') goto yy132;
 +                                      goto yy133;
 +                              } else {
 +                                      if (yych <= ':') goto yy134;
 +                                      if (yych <= ';') goto yy124;
 +                                      goto yy135;
 +                              }
 +                      } else {
 +                              if (yych <= '?') {
 +                                      if (yych <= '>') goto yy124;
 +                                      goto yy128;
 +                              } else {
 +                                      if (yych <= '@') goto yy112;
 +                                      if (yych <= 'Z') goto yy133;
 +                                      goto yy136;
 +                              }
 +                      }
 +              } else {
 +                      if (yych <= 'q') {
 +                              if (yych <= '^') {
 +                                      if (yych <= '\\') goto yy124;
 +                              } else {
 +                                      if (yych != '`') goto yy133;
 +                              }
 +                      } else {
 +                              if (yych <= 'z') {
 +                                      if (yych <= 'r') goto yy138;
 +                                      goto yy133;
 +                              } else {
 +                                      if (yych <= '{') goto yy139;
 +                                      if (yych <= '|') goto yy124;
 +                              }
 +                      }
 +              }
 +      }
 +yy112:
 +      ++YYCURSOR;
 +yy113:
 +#line 382 "../src/parse/lex.re"
 +      {
 +                                      fatalf("unexpected character: '%c'", *tok);
 +                                      goto scan;
 +                              }
 +#line 717 "src/parse/lex.cc"
 +yy114:
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      goto yy220;
 +yy115:
 +#line 366 "../src/parse/lex.re"
 +      {
 +                                      goto scan;
 +                              }
 +#line 727 "src/parse/lex.cc"
 +yy116:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy198;
 +      } else {
 +              if (yych <= ' ') goto yy198;
 +              if (yych == '#') goto yy200;
 +      }
 +yy117:
 +#line 375 "../src/parse/lex.re"
 +      {
 +                                      if (cur == eof) return 0;
 +                                      pos = cur;
 +                                      cline++;
 +                                      goto scan;
 +                              }
 +#line 745 "src/parse/lex.cc"
 +yy118:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy197;
 +      goto yy113;
 +yy119:
 +      ++YYCURSOR;
 +#line 259 "../src/parse/lex.re"
 +      { yylval.regexp = lex_str('"',  opts->bCaseInsensitive ||  opts->bCaseInverted); return REGEXP; }
 +#line 754 "src/parse/lex.cc"
 +yy121:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '}') goto yy195;
 +      goto yy113;
 +yy122:
 +      ++YYCURSOR;
 +#line 258 "../src/parse/lex.re"
 +      { yylval.regexp = lex_str('\'', opts->bCaseInsensitive || !opts->bCaseInverted); return REGEXP; }
 +#line 763 "src/parse/lex.cc"
 +yy124:
 +      ++YYCURSOR;
 +yy125:
 +#line 269 "../src/parse/lex.re"
 +      {
 +                                      return *tok;
 +                              }
 +#line 771 "src/parse/lex.cc"
 +yy126:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy195;
 +#line 273 "../src/parse/lex.re"
 +      {
 +                                      yylval.op = *tok;
 +                                      return STAR;
 +                              }
 +#line 780 "src/parse/lex.cc"
 +yy128:
 +      ++YYCURSOR;
 +#line 277 "../src/parse/lex.re"
 +      {
 +                                      yylval.op = *tok;
 +                                      return CLOSE;
 +                              }
 +#line 788 "src/parse/lex.cc"
 +yy130:
 +      ++YYCURSOR;
 +#line 361 "../src/parse/lex.re"
 +      {
 +                                      yylval.regexp = mkDot();
 +                                      return REGEXP;
 +                              }
 +#line 796 "src/parse/lex.cc"
 +yy132:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '*') goto yy191;
 +      if (yych == '/') goto yy193;
 +      goto yy125;
 +yy133:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy165;
 +yy134:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '=') goto yy187;
 +      goto yy113;
 +yy135:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == '!') goto yy178;
 +      if (yych == '>') goto yy180;
 +      goto yy125;
 +yy136:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) == '^') goto yy176;
 +#line 260 "../src/parse/lex.re"
 +      { yylval.regexp = lex_cls(false); return REGEXP; }
 +#line 822 "src/parse/lex.cc"
 +yy138:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == 'e') goto yy166;
 +      goto yy165;
 +yy139:
 +      yyaccept = 2;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yybm[0+yych] & 16) {
 +              goto yy141;
 +      }
 +      if (yych <= 'Z') {
 +              if (yych == ',') goto yy146;
 +              if (yych >= 'A') goto yy144;
 +      } else {
 +              if (yych <= '_') {
 +                      if (yych >= '_') goto yy144;
 +              } else {
 +                      if (yych <= '`') goto yy140;
 +                      if (yych <= 'z') goto yy144;
 +              }
 +      }
 +yy140:
 +#line 229 "../src/parse/lex.re"
 +      {
 +                                      depth = 1;
 +                                      goto code;
 +                              }
 +#line 851 "src/parse/lex.cc"
 +yy141:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 16) {
 +              goto yy141;
 +      }
 +      if (yych <= '^') {
 +              if (yych <= ',') {
 +                      if (yych >= ',') goto yy152;
 +              } else {
 +                      if (yych <= '@') goto yy143;
 +                      if (yych <= 'Z') goto yy144;
 +              }
 +      } else {
 +              if (yych <= 'z') {
 +                      if (yych != '`') goto yy144;
 +              } else {
 +                      if (yych == '}') goto yy150;
 +              }
 +      }
 +yy143:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept <= 1) {
 +              if (yyaccept == 0) {
 +                      goto yy117;
 +              } else {
 +                      goto yy125;
 +              }
 +      } else {
 +              if (yyaccept == 2) {
 +                      goto yy140;
 +              } else {
 +                      goto yy147;
 +              }
 +      }
 +yy144:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 32) {
 +              goto yy144;
 +      }
 +      if (yych == '}') goto yy148;
 +      goto yy143;
 +yy146:
 +      ++YYCURSOR;
 +yy147:
 +#line 313 "../src/parse/lex.re"
 +      {
 +                                      fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
 +                              }
 +#line 904 "src/parse/lex.cc"
 +yy148:
 +      ++YYCURSOR;
 +#line 317 "../src/parse/lex.re"
 +      {
 +                                      if (!opts->FFlag) {
 +                                              fatal("curly braces for names only allowed with -F switch");
 +                                      }
 +                                      yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
 +                                      return ID;
 +                              }
 +#line 915 "src/parse/lex.cc"
 +yy150:
 +      ++YYCURSOR;
 +#line 282 "../src/parse/lex.re"
 +      {
 +                                      if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.extop.min))
 +                                      {
 +                                              fatal ("repetition count overflow");
 +                                      }
 +                                      yylval.extop.max = yylval.extop.min;
 +                                      return CLOSESIZE;
 +                              }
 +#line 927 "src/parse/lex.cc"
 +yy152:
 +      yyaccept = 3;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '/') goto yy147;
 +      if (yych <= '9') goto yy155;
 +      if (yych != '}') goto yy147;
 +      ++YYCURSOR;
 +#line 304 "../src/parse/lex.re"
 +      {
 +                                      if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.extop.min))
 +                                      {
 +                                              fatal ("repetition lower bound overflow");
 +                                      }
 +                                      yylval.extop.max = UINT32_MAX;
 +                                      return CLOSESIZE;
 +                              }
 +#line 944 "src/parse/lex.cc"
 +yy155:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '/') goto yy143;
 +      if (yych <= '9') goto yy155;
 +      if (yych != '}') goto yy143;
 +      ++YYCURSOR;
 +#line 291 "../src/parse/lex.re"
 +      {
 +                                      const char * p = strchr (tok, ',');
 +                                      if (!s_to_u32_unsafe (tok + 1, p, yylval.extop.min))
 +                                      {
 +                                              fatal ("repetition lower bound overflow");
 +                                      }
 +                                      if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.extop.max))
 +                                      {
 +                                              fatal ("repetition upper bound overflow");
 +                                      }
 +                                      return CLOSESIZE;
 +                              }
 +#line 966 "src/parse/lex.cc"
 +yy159:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 345 "../src/parse/lex.re"
 +      {
 +                                      if (!opts->FFlag) {
 +                                              yylval.str = new std::string (tok, tok_len());
 +                                              return ID;
 +                                      } else {
 +                                              RegExp *r = NULL;
 +                                              const bool casing = opts->bCaseInsensitive || opts->bCaseInverted;
 +                                              for (char *s = tok; s < cur; ++s) {
 +                                                      const uint32_t c = static_cast<uint8_t>(*s);
 +                                                      r = doCat(r, casing ? ichr(c) : schr(c));
 +                                              }
 +                                              yylval.regexp = r ? r : new NullOp;
 +                                              return REGEXP;
 +                                      }
 +                              }
 +#line 986 "src/parse/lex.cc"
 +yy161:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy174;
 +yy162:
 +      ++YYCURSOR;
 +yy163:
 +      YYCURSOR = YYCTXMARKER;
 +#line 340 "../src/parse/lex.re"
 +      {
 +                                      yylval.str = new std::string (tok, tok_len ());
 +                                      return ID;
 +                              }
 +#line 999 "src/parse/lex.cc"
 +yy164:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy165:
 +      if (yych <= '9') {
 +              if (yych <= ' ') {
 +                      if (yych == '\t') goto yy161;
 +                      if (yych <= 0x1F) goto yy159;
 +                      goto yy161;
 +              } else {
 +                      if (yych == ',') goto yy162;
 +                      if (yych <= '/') goto yy159;
 +                      goto yy164;
 +              }
 +      } else {
 +              if (yych <= 'Z') {
 +                      if (yych <= '<') goto yy159;
 +                      if (yych <= '>') goto yy162;
 +                      if (yych <= '@') goto yy159;
 +                      goto yy164;
 +              } else {
 +                      if (yych <= '_') {
 +                              if (yych <= '^') goto yy159;
 +                              goto yy164;
 +                      } else {
 +                              if (yych <= '`') goto yy159;
 +                              if (yych <= 'z') goto yy164;
 +                              goto yy159;
 +                      }
 +              }
 +      }
 +yy166:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '2') goto yy165;
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'c') goto yy165;
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ':') goto yy165;
 +      ++YYCURSOR;
 +#line 325 "../src/parse/lex.re"
 +      { lex_conf (); return CONF; }
 +#line 1046 "src/parse/lex.cc"
 +yy171:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 327 "../src/parse/lex.re"
 +      {
 +                                      yylval.str = new std::string (tok, tok_len ());
 +                                      if (opts->FFlag)
 +                                      {
 +                                              lexer_state = LEX_FLEX_NAME;
 +                                              return FID;
 +                                      }
 +                                      else
 +                                      {
 +                                              return ID;
 +                                      }
 +                              }
 +#line 1063 "src/parse/lex.cc"
 +yy173:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy174:
 +      if (yybm[0+yych] & 64) {
 +              goto yy173;
 +      }
 +      if (yych == ',') goto yy175;
 +      if (yych <= '<') goto yy171;
 +      if (yych >= '?') goto yy171;
 +yy175:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy163;
 +yy176:
 +      ++YYCURSOR;
 +#line 261 "../src/parse/lex.re"
 +      { yylval.regexp = lex_cls(true);  return REGEXP; }
 +#line 1082 "src/parse/lex.cc"
 +yy178:
 +      ++YYCURSOR;
 +#line 266 "../src/parse/lex.re"
 +      {
 +                                      return SETUP;
 +                              }
 +#line 1089 "src/parse/lex.cc"
 +yy180:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy182;
 +yy181:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy182:
 +      if (yych <= '9') {
 +              if (yych <= '\t') {
 +                      if (yych <= 0x08) goto yy143;
 +                      goto yy181;
 +              } else {
 +                      if (yych == ' ') goto yy181;
 +                      goto yy143;
 +              }
 +      } else {
 +              if (yych <= '=') {
 +                      if (yych <= ':') goto yy186;
 +                      if (yych <= '<') goto yy143;
 +                      goto yy185;
 +              } else {
 +                      if (yych != '{') goto yy143;
 +              }
 +      }
 +yy183:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 263 "../src/parse/lex.re"
 +      {
 +                                      return NOCOND;
 +                              }
 +#line 1123 "src/parse/lex.cc"
 +yy185:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '>') goto yy183;
 +      goto yy143;
 +yy186:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '=') goto yy183;
 +      goto yy143;
 +yy187:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy189;
 +#line 238 "../src/parse/lex.re"
 +      {
 +                                      tok += 2; /* skip ":=" */
 +                                      depth = 0;
 +                                      goto code;
 +                              }
 +#line 1141 "src/parse/lex.cc"
 +yy189:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 234 "../src/parse/lex.re"
 +      {
 +                                      return *tok;
 +                              }
 +#line 1149 "src/parse/lex.cc"
 +yy191:
 +      ++YYCURSOR;
 +#line 247 "../src/parse/lex.re"
 +      {
 +                                      depth = 1;
 +                                      goto comment;
 +                              }
 +#line 1157 "src/parse/lex.cc"
 +yy193:
 +      ++YYCURSOR;
 +#line 244 "../src/parse/lex.re"
 +      {
 +                              goto nextLine;
 +                      }
 +#line 1164 "src/parse/lex.cc"
 +yy195:
 +      ++YYCURSOR;
 +#line 253 "../src/parse/lex.re"
 +      {
 +                                      tok = cur;
 +                                      return 0;
 +                              }
 +#line 1172 "src/parse/lex.cc"
 +yy197:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 0x1F) {
 +              if (yych != '\t') goto yy117;
 +      } else {
 +              if (yych <= ' ') goto yy198;
 +              if (yych == '#') goto yy200;
 +              goto yy117;
 +      }
 +yy198:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy198;
 +              goto yy143;
 +      } else {
 +              if (yych <= ' ') goto yy198;
 +              if (yych != '#') goto yy143;
 +      }
 +yy200:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy200;
 +              goto yy143;
 +      } else {
 +              if (yych <= ' ') goto yy200;
 +              if (yych != 'l') goto yy143;
 +      }
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy143;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy143;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy143;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '0') goto yy207;
 +      if (yych <= '9') goto yy143;
 +      goto yy207;
 +yy206:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy207:
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy206;
 +              goto yy143;
 +      } else {
 +              if (yych <= ' ') goto yy206;
 +              if (yych <= '0') goto yy143;
 +              if (yych >= ':') goto yy143;
 +      }
 +yy208:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '\r') {
 +              if (yych <= '\t') {
 +                      if (yych <= 0x08) goto yy143;
 +              } else {
 +                      if (yych <= '\n') goto yy212;
 +                      if (yych <= '\f') goto yy143;
 +                      goto yy214;
 +              }
 +      } else {
 +              if (yych <= ' ') {
 +                      if (yych <= 0x1F) goto yy143;
 +              } else {
 +                      if (yych <= '/') goto yy143;
 +                      if (yych <= '9') goto yy208;
 +                      goto yy143;
 +              }
 +      }
 +yy210:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy210;
 +              goto yy143;
 +      } else {
 +              if (yych <= ' ') goto yy210;
 +              if (yych == '"') goto yy215;
 +              goto yy143;
 +      }
 +yy212:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 370 "../src/parse/lex.re"
 +      {
 +                                      set_sourceline ();
 +                                      goto scan;
 +                              }
 +#line 1270 "src/parse/lex.cc"
 +yy214:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy212;
 +      goto yy143;
 +yy215:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 128) {
 +              goto yy215;
 +      }
 +      if (yych <= '\n') goto yy143;
 +      if (yych <= '"') goto yy218;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy143;
 +      goto yy215;
 +yy218:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy212;
 +      if (yych == '\r') goto yy214;
 +      goto yy143;
 +yy219:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy220:
 +      if (yych == '\t') goto yy219;
 +      if (yych == ' ') goto yy219;
 +      goto yy115;
 +}
 +#line 386 "../src/parse/lex.re"
 +
 +
 +flex_name:
 +
 +#line 1308 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy225;
 +      if (yych == '\r') goto yy227;
 +      ++YYCURSOR;
 +yy224:
 +#line 397 "../src/parse/lex.re"
 +      {
 +              YYCURSOR = tok;
 +              goto start;
 +      }
 +#line 1322 "src/parse/lex.cc"
 +yy225:
 +      ++YYCURSOR;
 +yy226:
 +#line 391 "../src/parse/lex.re"
 +      {
 +              YYCURSOR = tok;
 +              lexer_state = LEX_NORMAL;
 +              return FID_END;
 +      }
 +#line 1332 "src/parse/lex.cc"
 +yy227:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '\n') goto yy224;
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      goto yy226;
 +}
 +#line 401 "../src/parse/lex.re"
 +
 +
 +code:
 +
 +#line 1345 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      static const unsigned char yybm[] = {
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48, 112,   0,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +              112,  48,  16,  48,  48,  48,  48,  32, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +              176, 176, 176, 176, 176, 176, 176, 176, 
 +              176, 176,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,   0,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +               48,  48,  48,  48,  48,  48,  48,  48, 
 +      };
 +      if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '&') {
 +              if (yych <= '\n') {
 +                      if (yych <= 0x00) goto yy231;
 +                      if (yych <= '\t') goto yy233;
 +                      goto yy235;
 +              } else {
 +                      if (yych == '"') goto yy237;
 +                      goto yy233;
 +              }
 +      } else {
 +              if (yych <= '{') {
 +                      if (yych <= '\'') goto yy238;
 +                      if (yych <= 'z') goto yy233;
 +                      goto yy239;
 +              } else {
 +                      if (yych == '}') goto yy241;
 +                      goto yy233;
 +              }
 +      }
 +yy231:
 +      ++YYCURSOR;
 +#line 464 "../src/parse/lex.re"
 +      {
 +                                      if (cur == eof)
 +                                      {
 +                                              if (depth)
 +                                              {
 +                                                      fatal("missing '}'");
 +                                              }
 +                                              return 0;
 +                                      }
 +                                      goto code;
 +                              }
 +#line 1418 "src/parse/lex.cc"
 +yy233:
 +      ++YYCURSOR;
 +yy234:
 +#line 478 "../src/parse/lex.re"
 +      {
 +                                      goto code;
 +                              }
 +#line 1426 "src/parse/lex.cc"
 +yy235:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '\r') {
 +              if (yych <= '\t') {
 +                      if (yych >= '\t') goto yy252;
 +              } else {
 +                      if (yych <= '\n') goto yy254;
 +                      if (yych >= '\r') goto yy254;
 +              }
 +      } else {
 +              if (yych <= ' ') {
 +                      if (yych >= ' ') goto yy252;
 +              } else {
 +                      if (yych == '#') goto yy255;
 +              }
 +      }
 +yy236:
 +#line 445 "../src/parse/lex.re"
 +      {
 +                                      if (depth == 0)
 +                                      {
 +                                              tok += strspn(tok, " \t\r\n");
 +                                              while (cur > tok && strchr(" \t\r\n", cur[-1]))
 +                                              {
 +                                                      --cur;
 +                                              }
 +                                              yylval.code = new Code (tok, tok_len (), get_fname (), tline);
 +                                              return CODE;
 +                                      }
 +                                      else if (cur == eof)
 +                                      {
 +                                              fatal("missing '}'");
 +                                      }
 +                                      pos = cur;
 +                                      cline++;
 +                                      goto code;
 +                              }
 +#line 1466 "src/parse/lex.cc"
 +yy237:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == '\n') goto yy234;
 +      goto yy250;
 +yy238:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == '\n') goto yy234;
 +      goto yy244;
 +yy239:
 +      ++YYCURSOR;
 +#line 417 "../src/parse/lex.re"
 +      {
 +                                      if (depth == 0)
 +                                      {
 +                                              fatal("Curly braces are not allowed after ':='");
 +                                      }
 +                                      else
 +                                      {
 +                                              ++depth;
 +                                      }
 +                                      goto code;
 +                              }
 +#line 1491 "src/parse/lex.cc"
 +yy241:
 +      ++YYCURSOR;
 +#line 405 "../src/parse/lex.re"
 +      {
 +                                      if (depth == 0)
 +                                      {
 +                                              fatal("Curly braces are not allowed after ':='");
 +                                      }
 +                                      else if (--depth == 0)
 +                                      {
 +                                              yylval.code = new Code (tok, tok_len (), get_fname (), tline);
 +                                              return CODE;
 +                                      }
 +                                      goto code;
 +                              }
 +#line 1507 "src/parse/lex.cc"
 +yy243:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy244:
 +      if (yybm[0+yych] & 16) {
 +              goto yy243;
 +      }
 +      if (yych <= '\n') goto yy245;
 +      if (yych <= '\'') goto yy247;
 +      goto yy246;
 +yy245:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept <= 1) {
 +              if (yyaccept == 0) {
 +                      goto yy236;
 +              } else {
 +                      goto yy234;
 +              }
 +      } else {
 +              goto yy253;
 +      }
 +yy246:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy245;
 +      goto yy243;
 +yy247:
 +      ++YYCURSOR;
 +#line 475 "../src/parse/lex.re"
 +      {
 +                                      goto code;
 +                              }
 +#line 1542 "src/parse/lex.cc"
 +yy249:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy250:
 +      if (yybm[0+yych] & 32) {
 +              goto yy249;
 +      }
 +      if (yych <= '\n') goto yy245;
 +      if (yych <= '"') goto yy247;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy245;
 +      goto yy249;
 +yy252:
 +      yyaccept = 2;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy274;
 +      } else {
 +              if (yych <= ' ') goto yy274;
 +              if (yych == '#') goto yy255;
 +      }
 +yy253:
 +      YYCURSOR = YYCTXMARKER;
 +#line 432 "../src/parse/lex.re"
 +      {
 +                                      if (depth == 0)
 +                                      {
 +                                              goto code;
 +                                      }
 +                                      else if (cur == eof)
 +                                      {
 +                                              fatal("missing '}'");
 +                                      }
 +                                      pos = cur;
 +                                      cline++;
 +                                      goto code;
 +                              }
 +#line 1583 "src/parse/lex.cc"
 +yy254:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy253;
 +yy255:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 64) {
 +              goto yy255;
 +      }
 +      if (yych != 'l') goto yy245;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy245;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy245;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy245;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '0') goto yy262;
 +      if (yych <= '9') goto yy245;
 +      goto yy262;
 +yy261:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy262:
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy261;
 +              goto yy245;
 +      } else {
 +              if (yych <= ' ') goto yy261;
 +              if (yych <= '0') goto yy245;
 +              if (yych >= ':') goto yy245;
 +      }
 +yy263:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 128) {
 +              goto yy263;
 +      }
 +      if (yych <= '\f') {
 +              if (yych <= 0x08) goto yy245;
 +              if (yych <= '\t') goto yy265;
 +              if (yych <= '\n') goto yy267;
 +              goto yy245;
 +      } else {
 +              if (yych <= '\r') goto yy269;
 +              if (yych != ' ') goto yy245;
 +      }
 +yy265:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy265;
 +              goto yy245;
 +      } else {
 +              if (yych <= ' ') goto yy265;
 +              if (yych == '"') goto yy270;
 +              goto yy245;
 +      }
 +yy267:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 428 "../src/parse/lex.re"
 +      {
 +                                      set_sourceline ();
 +                                      goto code;
 +                              }
 +#line 1655 "src/parse/lex.cc"
 +yy269:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy267;
 +      goto yy245;
 +yy270:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '!') {
 +              if (yych == '\n') goto yy245;
 +              goto yy270;
 +      } else {
 +              if (yych <= '"') goto yy273;
 +              if (yych != '\\') goto yy270;
 +      }
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy245;
 +      goto yy270;
 +yy273:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy267;
 +      if (yych == '\r') goto yy269;
 +      goto yy245;
 +yy274:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy274;
 +              goto yy245;
 +      } else {
 +              if (yych <= ' ') goto yy274;
 +              if (yych == '#') goto yy255;
 +              goto yy245;
 +      }
 +}
 +#line 481 "../src/parse/lex.re"
 +
 +
 +comment:
 +
 +#line 1699 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      static const unsigned char yybm[] = {
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 160,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              160, 128,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              192, 192, 192, 192, 192, 192, 192, 192, 
 +              192, 192, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128,   0, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= ')') {
 +              if (yych == '\n') goto yy280;
 +      } else {
 +              if (yych <= '*') goto yy282;
 +              if (yych == '/') goto yy283;
 +      }
 +      ++YYCURSOR;
 +yy279:
 +#line 513 "../src/parse/lex.re"
 +      {
 +                                      if (cur == eof)
 +                                      {
 +                                              return 0;
 +                                      }
 +                                      goto comment;
 +                              }
 +#line 1754 "src/parse/lex.cc"
 +yy280:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yybm[0+yych] & 32) {
 +              goto yy288;
 +      }
 +      if (yych == '#') goto yy291;
 +yy281:
 +#line 504 "../src/parse/lex.re"
 +      {
 +                                      if (cur == eof)
 +                                      {
 +                                              return 0;
 +                                      }
 +                                      tok = pos = cur;
 +                                      cline++;
 +                                      goto comment;
 +                              }
 +#line 1772 "src/parse/lex.cc"
 +yy282:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '/') goto yy286;
 +      goto yy279;
 +yy283:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != '*') goto yy279;
 +      ++YYCURSOR;
 +#line 495 "../src/parse/lex.re"
 +      {
 +                                      ++depth;
 +                                      fatal("ambiguous /* found");
 +                                      goto comment;
 +                              }
 +#line 1787 "src/parse/lex.cc"
 +yy286:
 +      ++YYCURSOR;
 +#line 485 "../src/parse/lex.re"
 +      {
 +                                      if (--depth == 0)
 +                                      {
 +                                              goto scan;
 +                                      }
 +                                      else
 +                                      {
 +                                              goto comment;
 +                                      }
 +                              }
 +#line 1801 "src/parse/lex.cc"
 +yy288:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 32) {
 +              goto yy288;
 +      }
 +      if (yych == '#') goto yy291;
 +yy290:
 +      YYCURSOR = YYMARKER;
 +      goto yy281;
 +yy291:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy291;
 +              goto yy290;
 +      } else {
 +              if (yych <= ' ') goto yy291;
 +              if (yych != 'l') goto yy290;
 +      }
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'i') goto yy290;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'n') goto yy290;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != 'e') goto yy290;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '0') goto yy298;
 +      if (yych <= '9') goto yy290;
 +      goto yy298;
 +yy297:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy298:
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy297;
 +              goto yy290;
 +      } else {
 +              if (yych <= ' ') goto yy297;
 +              if (yych <= '0') goto yy290;
 +              if (yych >= ':') goto yy290;
 +      }
 +yy299:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 64) {
 +              goto yy299;
 +      }
 +      if (yych <= '\f') {
 +              if (yych <= 0x08) goto yy290;
 +              if (yych <= '\t') goto yy301;
 +              if (yych <= '\n') goto yy303;
 +              goto yy290;
 +      } else {
 +              if (yych <= '\r') goto yy305;
 +              if (yych != ' ') goto yy290;
 +      }
 +yy301:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy301;
 +              goto yy290;
 +      } else {
 +              if (yych <= ' ') goto yy301;
 +              if (yych == '"') goto yy306;
 +              goto yy290;
 +      }
 +yy303:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 500 "../src/parse/lex.re"
 +      {
 +                                      set_sourceline ();
 +                                      goto comment;
 +                              }
 +#line 1884 "src/parse/lex.cc"
 +yy305:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych == '\n') goto yy303;
 +      goto yy290;
 +yy306:
 +      ++YYCURSOR;
 +      if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yybm[0+yych] & 128) {
 +              goto yy306;
 +      }
 +      if (yych <= '\n') goto yy290;
 +      if (yych <= '"') goto yy309;
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy290;
 +      goto yy306;
 +yy309:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy303;
 +      if (yych == '\r') goto yy305;
 +      goto yy290;
 +}
 +#line 520 "../src/parse/lex.re"
 +
 +
 +nextLine:
 +
 +#line 1914 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy314;
 +      ++YYCURSOR;
 +#line 531 "../src/parse/lex.re"
 +      {  if(cur == eof) {
 +                  return 0;
 +               }
 +               goto nextLine;
 +            }
 +#line 1927 "src/parse/lex.cc"
 +yy314:
 +      ++YYCURSOR;
 +#line 524 "../src/parse/lex.re"
 +      { if(cur == eof) {
 +                  return 0;
 +               }
 +               tok = pos = cur;
 +               cline++;
 +               goto scan;
 +            }
 +#line 1938 "src/parse/lex.cc"
 +}
 +#line 536 "../src/parse/lex.re"
 +
 +}
 +
 +static void escape (std::string & dest, const std::string & src)
 +{
 +      dest = src;
 +      size_t l = dest.length();
 +      for (size_t p = 0; p < l; ++p)
 +      {
 +              if (dest[p] == '\\')
 +              {
 +                      dest.insert(++p, "\\");
 +                      ++l;
 +              }
 +      }
 +}
 +
 +RegExp *Scanner::lex_cls(bool neg)
 +{
 +      Range *r = NULL, *s;
 +      uint32_t u, l;
 +fst:
 +      
 +#line 1964 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == ']') goto yy319;
 +#line 560 "../src/parse/lex.re"
 +      { l = lex_cls_chr(); goto snd; }
 +#line 1972 "src/parse/lex.cc"
 +yy319:
 +      ++YYCURSOR;
 +#line 559 "../src/parse/lex.re"
 +      { goto end; }
 +#line 1977 "src/parse/lex.cc"
 +}
 +#line 561 "../src/parse/lex.re"
 +
 +snd:
 +      
 +#line 1983 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
 +      if (yych == '-') goto yy324;
 +yy323:
 +#line 564 "../src/parse/lex.re"
 +      { u = l; goto add; }
 +#line 1992 "src/parse/lex.cc"
 +yy324:
 +      YYCTXMARKER = YYCURSOR + 1;
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych != ']') goto yy326;
 +      YYCURSOR = YYMARKER;
 +      goto yy323;
 +yy326:
 +      ++YYCURSOR;
 +      YYCURSOR = YYCTXMARKER;
 +#line 565 "../src/parse/lex.re"
 +      {
 +                      u = lex_cls_chr();
 +                      if (l > u) {
 +                              warn.swapped_range(get_line(), l, u);
 +                              std::swap(l, u);
 +                      }
 +                      goto add;
 +              }
 +#line 2011 "src/parse/lex.cc"
 +}
 +#line 573 "../src/parse/lex.re"
 +
 +add:
 +      if (!(s = opts->encoding.encodeRange(l, u))) {
 +              fatalf ("Bad code point range: '0x%X - 0x%X'", l, u);
 +      }
 +      r = Range::add(r, s);
 +      goto fst;
 +end:
 +      if (neg) {
 +              r = Range::sub(opts->encoding.fullRange(), r);
 +      }
 +      return cls(r);
 +}
 +
 +uint32_t Scanner::lex_cls_chr()
 +{
 +      tok = cur;
 +      
 +#line 2032 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy332;
 +      if (yych == '\\') goto yy334;
 +      ++YYCURSOR;
 +#line 596 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>(tok[0]); }
 +#line 2043 "src/parse/lex.cc"
 +yy332:
 +      ++YYCURSOR;
 +#line 591 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error"); }
 +#line 2048 "src/parse/lex.cc"
 +yy334:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= '`') {
 +              if (yych <= '7') {
 +                      if (yych <= ',') {
 +                              if (yych != '\n') goto yy336;
 +                      } else {
 +                              if (yych <= '-') goto yy338;
 +                              if (yych <= '/') goto yy336;
 +                              if (yych <= '3') goto yy340;
 +                              goto yy342;
 +                      }
 +              } else {
 +                      if (yych <= 'X') {
 +                              if (yych == 'U') goto yy343;
 +                              if (yych <= 'W') goto yy336;
 +                              goto yy345;
 +                      } else {
 +                              if (yych <= '[') goto yy336;
 +                              if (yych <= '\\') goto yy346;
 +                              if (yych <= ']') goto yy348;
 +                              goto yy336;
 +                      }
 +              }
 +      } else {
 +              if (yych <= 'q') {
 +                      if (yych <= 'e') {
 +                              if (yych <= 'a') goto yy350;
 +                              if (yych <= 'b') goto yy352;
 +                              goto yy336;
 +                      } else {
 +                              if (yych <= 'f') goto yy354;
 +                              if (yych == 'n') goto yy356;
 +                              goto yy336;
 +                      }
 +              } else {
 +                      if (yych <= 'u') {
 +                              if (yych <= 'r') goto yy358;
 +                              if (yych <= 's') goto yy336;
 +                              if (yych <= 't') goto yy360;
 +                              goto yy345;
 +                      } else {
 +                              if (yych <= 'v') goto yy362;
 +                              if (yych == 'x') goto yy364;
 +                              goto yy336;
 +                      }
 +              }
 +      }
 +#line 594 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
 +#line 2099 "src/parse/lex.cc"
 +yy336:
 +      ++YYCURSOR;
 +#line 609 "../src/parse/lex.re"
 +      {
 +                      warn.useless_escape(tline, tok - pos, tok[1]);
 +                      return static_cast<uint8_t>(tok[1]);
 +              }
 +#line 2107 "src/parse/lex.cc"
 +yy338:
 +      ++YYCURSOR;
 +#line 607 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('-'); }
 +#line 2112 "src/parse/lex.cc"
 +yy340:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '/') goto yy341;
 +      if (yych <= '7') goto yy379;
 +yy341:
 +#line 593 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
 +#line 2121 "src/parse/lex.cc"
 +yy342:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy341;
 +yy343:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy344;
 +              if (yych <= '9') goto yy372;
 +      } else {
 +              if (yych <= 'F') goto yy372;
 +              if (yych <= '`') goto yy344;
 +              if (yych <= 'f') goto yy372;
 +      }
 +yy344:
 +#line 592 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
 +#line 2139 "src/parse/lex.cc"
 +yy345:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy344;
 +              if (yych <= '9') goto yy369;
 +              goto yy344;
 +      } else {
 +              if (yych <= 'F') goto yy369;
 +              if (yych <= '`') goto yy344;
 +              if (yych <= 'f') goto yy369;
 +              goto yy344;
 +      }
 +yy346:
 +      ++YYCURSOR;
 +#line 606 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\\'); }
 +#line 2157 "src/parse/lex.cc"
 +yy348:
 +      ++YYCURSOR;
 +#line 608 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>(']'); }
 +#line 2162 "src/parse/lex.cc"
 +yy350:
 +      ++YYCURSOR;
 +#line 599 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\a'); }
 +#line 2167 "src/parse/lex.cc"
 +yy352:
 +      ++YYCURSOR;
 +#line 600 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\b'); }
 +#line 2172 "src/parse/lex.cc"
 +yy354:
 +      ++YYCURSOR;
 +#line 601 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\f'); }
 +#line 2177 "src/parse/lex.cc"
 +yy356:
 +      ++YYCURSOR;
 +#line 602 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\n'); }
 +#line 2182 "src/parse/lex.cc"
 +yy358:
 +      ++YYCURSOR;
 +#line 603 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\r'); }
 +#line 2187 "src/parse/lex.cc"
 +yy360:
 +      ++YYCURSOR;
 +#line 604 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\t'); }
 +#line 2192 "src/parse/lex.cc"
 +yy362:
 +      ++YYCURSOR;
 +#line 605 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\v'); }
 +#line 2197 "src/parse/lex.cc"
 +yy364:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy344;
 +              if (yych >= ':') goto yy344;
 +      } else {
 +              if (yych <= 'F') goto yy365;
 +              if (yych <= '`') goto yy344;
 +              if (yych >= 'g') goto yy344;
 +      }
 +yy365:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych <= '9') goto yy367;
 +      } else {
 +              if (yych <= 'F') goto yy367;
 +              if (yych <= '`') goto yy366;
 +              if (yych <= 'f') goto yy367;
 +      }
 +yy366:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept == 0) {
 +              goto yy341;
 +      } else {
 +              goto yy344;
 +      }
 +yy367:
 +      ++YYCURSOR;
 +#line 597 "../src/parse/lex.re"
 +      { return unesc_hex(tok, cur); }
 +#line 2230 "src/parse/lex.cc"
 +yy369:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy370;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy370:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy371;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy371:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych <= '9') goto yy367;
 +              goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy367;
 +              if (yych <= '`') goto yy366;
 +              if (yych <= 'f') goto yy367;
 +              goto yy366;
 +      }
 +yy372:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy373;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy373:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy374;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy374:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy375;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy375:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy376;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy376:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy377;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy377:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych >= ':') goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy378;
 +              if (yych <= '`') goto yy366;
 +              if (yych >= 'g') goto yy366;
 +      }
 +yy378:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy366;
 +              if (yych <= '9') goto yy367;
 +              goto yy366;
 +      } else {
 +              if (yych <= 'F') goto yy367;
 +              if (yych <= '`') goto yy366;
 +              if (yych <= 'f') goto yy367;
 +              goto yy366;
 +      }
 +yy379:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '/') goto yy366;
 +      if (yych >= '8') goto yy366;
 +      ++YYCURSOR;
 +#line 598 "../src/parse/lex.re"
 +      { return unesc_oct(tok, cur); }
 +#line 2342 "src/parse/lex.cc"
 +}
 +#line 613 "../src/parse/lex.re"
 +
 +}
 +
 +uint32_t Scanner::lex_str_chr(char quote, bool &end)
 +{
 +      end = false;
 +      tok = cur;
 +      
 +#line 2353 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      unsigned int yyaccept = 0;
 +      if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy386;
 +      if (yych == '\\') goto yy388;
 +      ++YYCURSOR;
 +#line 626 "../src/parse/lex.re"
 +      {
 +                      end = tok[0] == quote;
 +                      return static_cast<uint8_t>(tok[0]);
 +              }
 +#line 2367 "src/parse/lex.cc"
 +yy386:
 +      ++YYCURSOR;
 +#line 621 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error"); }
 +#line 2372 "src/parse/lex.cc"
 +yy388:
 +      ++YYCURSOR;
 +      if ((yych = (YYCTYPE)*YYCURSOR) <= 'a') {
 +              if (yych <= 'T') {
 +                      if (yych <= '/') {
 +                              if (yych != '\n') goto yy390;
 +                      } else {
 +                              if (yych <= '3') goto yy392;
 +                              if (yych <= '7') goto yy394;
 +                              goto yy390;
 +                      }
 +              } else {
 +                      if (yych <= 'X') {
 +                              if (yych <= 'U') goto yy395;
 +                              if (yych <= 'W') goto yy390;
 +                              goto yy397;
 +                      } else {
 +                              if (yych == '\\') goto yy398;
 +                              if (yych <= '`') goto yy390;
 +                              goto yy400;
 +                      }
 +              }
 +      } else {
 +              if (yych <= 'r') {
 +                      if (yych <= 'f') {
 +                              if (yych <= 'b') goto yy402;
 +                              if (yych <= 'e') goto yy390;
 +                              goto yy404;
 +                      } else {
 +                              if (yych == 'n') goto yy406;
 +                              if (yych <= 'q') goto yy390;
 +                              goto yy408;
 +                      }
 +              } else {
 +                      if (yych <= 'u') {
 +                              if (yych <= 's') goto yy390;
 +                              if (yych <= 't') goto yy410;
 +                              goto yy397;
 +                      } else {
 +                              if (yych <= 'v') goto yy412;
 +                              if (yych == 'x') goto yy414;
 +                              goto yy390;
 +                      }
 +              }
 +      }
 +#line 624 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
 +#line 2420 "src/parse/lex.cc"
 +yy390:
 +      ++YYCURSOR;
 +#line 640 "../src/parse/lex.re"
 +      {
 +                      if (tok[1] != quote) {
 +                              warn.useless_escape(tline, tok - pos, tok[1]);
 +                      }
 +                      return static_cast<uint8_t>(tok[1]);
 +              }
 +#line 2430 "src/parse/lex.cc"
 +yy392:
 +      yyaccept = 0;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '/') goto yy393;
 +      if (yych <= '7') goto yy429;
 +yy393:
 +#line 623 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
 +#line 2439 "src/parse/lex.cc"
 +yy394:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      goto yy393;
 +yy395:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy396;
 +              if (yych <= '9') goto yy422;
 +      } else {
 +              if (yych <= 'F') goto yy422;
 +              if (yych <= '`') goto yy396;
 +              if (yych <= 'f') goto yy422;
 +      }
 +yy396:
 +#line 622 "../src/parse/lex.re"
 +      { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
 +#line 2457 "src/parse/lex.cc"
 +yy397:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy396;
 +              if (yych <= '9') goto yy419;
 +              goto yy396;
 +      } else {
 +              if (yych <= 'F') goto yy419;
 +              if (yych <= '`') goto yy396;
 +              if (yych <= 'f') goto yy419;
 +              goto yy396;
 +      }
 +yy398:
 +      ++YYCURSOR;
 +#line 639 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\\'); }
 +#line 2475 "src/parse/lex.cc"
 +yy400:
 +      ++YYCURSOR;
 +#line 632 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\a'); }
 +#line 2480 "src/parse/lex.cc"
 +yy402:
 +      ++YYCURSOR;
 +#line 633 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\b'); }
 +#line 2485 "src/parse/lex.cc"
 +yy404:
 +      ++YYCURSOR;
 +#line 634 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\f'); }
 +#line 2490 "src/parse/lex.cc"
 +yy406:
 +      ++YYCURSOR;
 +#line 635 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\n'); }
 +#line 2495 "src/parse/lex.cc"
 +yy408:
 +      ++YYCURSOR;
 +#line 636 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\r'); }
 +#line 2500 "src/parse/lex.cc"
 +yy410:
 +      ++YYCURSOR;
 +#line 637 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\t'); }
 +#line 2505 "src/parse/lex.cc"
 +yy412:
 +      ++YYCURSOR;
 +#line 638 "../src/parse/lex.re"
 +      { return static_cast<uint8_t>('\v'); }
 +#line 2510 "src/parse/lex.cc"
 +yy414:
 +      yyaccept = 1;
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy396;
 +              if (yych >= ':') goto yy396;
 +      } else {
 +              if (yych <= 'F') goto yy415;
 +              if (yych <= '`') goto yy396;
 +              if (yych >= 'g') goto yy396;
 +      }
 +yy415:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych <= '9') goto yy417;
 +      } else {
 +              if (yych <= 'F') goto yy417;
 +              if (yych <= '`') goto yy416;
 +              if (yych <= 'f') goto yy417;
 +      }
 +yy416:
 +      YYCURSOR = YYMARKER;
 +      if (yyaccept == 0) {
 +              goto yy393;
 +      } else {
 +              goto yy396;
 +      }
 +yy417:
 +      ++YYCURSOR;
 +#line 630 "../src/parse/lex.re"
 +      { return unesc_hex(tok, cur); }
 +#line 2543 "src/parse/lex.cc"
 +yy419:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy420;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy420:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy421;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy421:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych <= '9') goto yy417;
 +              goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy417;
 +              if (yych <= '`') goto yy416;
 +              if (yych <= 'f') goto yy417;
 +              goto yy416;
 +      }
 +yy422:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy423;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy423:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy424;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy424:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy425;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy425:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy426;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy426:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy427;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy427:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych >= ':') goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy428;
 +              if (yych <= '`') goto yy416;
 +              if (yych >= 'g') goto yy416;
 +      }
 +yy428:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '@') {
 +              if (yych <= '/') goto yy416;
 +              if (yych <= '9') goto yy417;
 +              goto yy416;
 +      } else {
 +              if (yych <= 'F') goto yy417;
 +              if (yych <= '`') goto yy416;
 +              if (yych <= 'f') goto yy417;
 +              goto yy416;
 +      }
 +yy429:
 +      yych = (YYCTYPE)*++YYCURSOR;
 +      if (yych <= '/') goto yy416;
 +      if (yych >= '8') goto yy416;
 +      ++YYCURSOR;
 +#line 631 "../src/parse/lex.re"
 +      { return unesc_oct(tok, cur); }
 +#line 2655 "src/parse/lex.cc"
 +}
 +#line 646 "../src/parse/lex.re"
 +
 +}
 +
 +RegExp *Scanner::lex_str(char quote, bool casing)
 +{
 +      RegExp *r = NULL;
 +      for (bool end;;) {
 +              const uint32_t c = lex_str_chr(quote, end);
 +              if (end) {
 +                      return r ? r : new NullOp;
 +              }
 +              r = doCat(r, casing ? ichr(c) : schr(c));
 +      }
 +}
 +
 +void Scanner::set_sourceline ()
 +{
 +sourceline:
 +      tok = cur;
 +
 +#line 2678 "src/parse/lex.cc"
 +{
 +      YYCTYPE yych;
 +      static const unsigned char yybm[] = {
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              192, 192, 192, 192, 192, 192, 192, 192, 
 +              192, 192, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128,   0, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych <= '!') {
 +              if (yych == '\n') goto yy436;
 +      } else {
 +              if (yych <= '"') goto yy438;
 +              if (yych <= '0') goto yy434;
 +              if (yych <= '9') goto yy439;
 +      }
 +yy434:
 +      ++YYCURSOR;
 +yy435:
 +#line 689 "../src/parse/lex.re"
 +      {
 +                                      goto sourceline;
 +                              }
 +#line 2731 "src/parse/lex.cc"
 +yy436:
 +      ++YYCURSOR;
 +#line 677 "../src/parse/lex.re"
 +      {
 +                                      if (cur == eof)
 +                                      {
 +                                              --cur; 
 +                                      }
 +                                      else
 +                                      {
 +                                              pos = cur; 
 +                                      }
 +                                      tok = cur;
 +                                      return; 
 +                              }
 +#line 2747 "src/parse/lex.cc"
 +yy438:
 +      yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
 +      if (yych == '\n') goto yy435;
 +      goto yy444;
 +yy439:
 +      ++YYCURSOR;
 +      yych = (YYCTYPE)*YYCURSOR;
 +      goto yy442;
 +yy440:
 +#line 666 "../src/parse/lex.re"
 +      {
 +                                      if (!s_to_u32_unsafe (tok, cur, cline))
 +                                      {
 +                                              fatal ("line number overflow");
 +                                      }
 +                                      goto sourceline; 
 +                              }
 +#line 2765 "src/parse/lex.cc"
 +yy441:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy442:
 +      if (yybm[0+yych] & 64) {
 +              goto yy441;
 +      }
 +      goto yy440;
 +yy443:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +yy444:
 +      if (yybm[0+yych] & 128) {
 +              goto yy443;
 +      }
 +      if (yych <= '\n') goto yy445;
 +      if (yych <= '"') goto yy447;
 +      goto yy446;
 +yy445:
 +      YYCURSOR = YYMARKER;
 +      goto yy435;
 +yy446:
 +      ++YYCURSOR;
 +      if (YYLIMIT <= YYCURSOR) YYFILL(1);
 +      yych = (YYCTYPE)*YYCURSOR;
 +      if (yych == '\n') goto yy445;
 +      goto yy443;
 +yy447:
 +      ++YYCURSOR;
 +#line 673 "../src/parse/lex.re"
 +      {
 +                                      escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes
 +                                      goto sourceline; 
 +                              }
 +#line 2802 "src/parse/lex.cc"
 +}
 +#line 692 "../src/parse/lex.re"
 +
 +}
 +
 +} // end namespace re2c
index da8d84ccbac96c5bf862e21adb9f5934aeca1a53,0000000000000000000000000000000000000000..2000c287e13e63ddaff8dd3001876cd60264ea29
mode 100644,000000..100644
--- /dev/null
@@@ -1,1732 -1,0 +1,1732 @@@
- /* Generated by re2c 0.14.3 on Tue Nov 10 15:25:44 2015 */
++/* Generated by re2c 0.14.3 on Sat Nov 21 19:46:24 2015 */
 +#line 1 "../src/parse/lex_conf.re"
 +#include "src/parse/scanner.h"
 +#include "src/util/s_to_n32_unsafe.h"
 +
 +namespace re2c
 +{
 +
 +// global re2c config (affects the whole file)
 +#line 29 "../src/parse/lex_conf.re"
 +
 +
 +void Scanner::lex_conf ()
 +{
 +      tok = cur;
 +
 +#line 18 "src/parse/lex_conf.cc"
 +{
 +      unsigned char yych;
 +      unsigned int yyaccept = 0;
 +      static const unsigned char yybm[] = {
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,  64,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +               64,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +      };
 +
 +      if ((lim - cur) < 27) fill(27);
 +      yych = (unsigned char)*cur;
 +      switch (yych) {
 +      case 'c':       goto yy4;
 +      case 'd':       goto yy5;
 +      case 'f':       goto yy6;
 +      case 'i':       goto yy7;
 +      case 'l':       goto yy8;
 +      case 's':       goto yy9;
 +      case 'v':       goto yy10;
 +      case 'y':       goto yy11;
 +      default:        goto yy2;
 +      }
 +yy2:
 +      ++cur;
 +yy3:
 +#line 35 "../src/parse/lex_conf.re"
 +      { fatal ((tok - pos) - tchar, "unrecognized configuration"); }
 +#line 75 "src/parse/lex_conf.cc"
 +yy4:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'g') goto yy393;
 +      if (yych == 'o') goto yy394;
 +      goto yy3;
 +yy5:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'e') goto yy202;
 +      goto yy3;
 +yy6:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'l') goto yy195;
 +      goto yy3;
 +yy7:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'n') goto yy178;
 +      goto yy3;
 +yy8:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'a') goto yy149;
 +      goto yy3;
 +yy9:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 't') goto yy111;
 +      goto yy3;
 +yy10:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'a') goto yy68;
 +      goto yy3;
 +yy11:
 +      yyaccept = 0;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych != 'y') goto yy3;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'c') {
 +              if (yych <= 'a') goto yy13;
 +              if (yych <= 'b') goto yy14;
 +              goto yy15;
 +      } else {
 +              if (yych == 'f') goto yy16;
 +      }
 +yy13:
 +      cur = ptr;
 +      if (yyaccept <= 5) {
 +              if (yyaccept <= 2) {
 +                      if (yyaccept <= 1) {
 +                              if (yyaccept == 0) {
 +                                      goto yy3;
 +                              } else {
 +                                      goto yy139;
 +                              }
 +                      } else {
 +                              goto yy228;
 +                      }
 +              } else {
 +                      if (yyaccept <= 4) {
 +                              if (yyaccept == 3) {
 +                                      goto yy244;
 +                              } else {
 +                                      goto yy274;
 +                              }
 +                      } else {
 +                              goto yy297;
 +                      }
 +              }
 +      } else {
 +              if (yyaccept <= 8) {
 +                      if (yyaccept <= 7) {
 +                              if (yyaccept == 6) {
 +                                      goto yy316;
 +                              } else {
 +                                      goto yy327;
 +                              }
 +                      } else {
 +                              goto yy380;
 +                      }
 +              } else {
 +                      if (yyaccept == 9) {
 +                              goto yy408;
 +                      } else {
 +                              goto yy418;
 +                      }
 +              }
 +      }
 +yy14:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'm') goto yy62;
 +      goto yy13;
 +yy15:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'h') goto yy44;
 +      goto yy13;
 +yy16:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'd') {
 +              if (yych != 'c') goto yy13;
 +      } else {
 +              if (yych <= 'e') goto yy23;
 +              if (yych == 'p') goto yy22;
 +              goto yy13;
 +      }
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'h') goto yy39;
 +      goto yy13;
 +yy22:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'a') goto yy30;
 +      goto yy13;
 +yy23:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      ++cur;
 +#line 134 "../src/parse/lex_conf.re"
 +      { opts.set_fill_use     (lex_conf_number () != 0); return; }
 +#line 213 "src/parse/lex_conf.cc"
 +yy30:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'm') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      ++cur;
 +#line 136 "../src/parse/lex_conf.re"
 +      { opts.set_fill_arg_use (lex_conf_number () != 0); return; }
 +#line 232 "src/parse/lex_conf.cc"
 +yy39:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      ++cur;
 +#line 138 "../src/parse/lex_conf.re"
 +      { opts.set_fill_check   (lex_conf_number () != 0); return; }
 +#line 243 "src/parse/lex_conf.cc"
 +yy44:
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'c') goto yy47;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'm') goto yy58;
 +      goto yy13;
 +yy47:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'v') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 's') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      ++cur;
 +#line 130 "../src/parse/lex_conf.re"
 +      { opts.set_yychConversion (lex_conf_number () != 0); return; }
 +#line 275 "src/parse/lex_conf.cc"
 +yy58:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      ++cur;
 +#line 131 "../src/parse/lex_conf.re"
 +      { opts.set_bEmitYYCh      (lex_conf_number () != 0); return; }
 +#line 284 "src/parse/lex_conf.cc"
 +yy62:
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'h') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      ++cur;
 +#line 88 "../src/parse/lex_conf.re"
 +      { opts.set_yybmHexTable (lex_conf_number () != 0); return; }
 +#line 297 "src/parse/lex_conf.cc"
 +yy68:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'c') {
 +              if (yych <= '`') goto yy13;
 +              if (yych <= 'a') goto yy82;
 +              if (yych <= 'b') goto yy81;
 +              goto yy79;
 +      } else {
 +              if (yych <= 'r') goto yy13;
 +              if (yych <= 's') goto yy78;
 +              if (yych <= 't') goto yy80;
 +              goto yy13;
 +      }
 +yy78:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 't') goto yy105;
 +      goto yy13;
 +yy79:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'h') goto yy98;
 +      if (yych == 't') goto yy97;
 +      goto yy13;
 +yy80:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'a') goto yy91;
 +      goto yy13;
 +yy81:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'm') goto yy89;
 +      goto yy13;
 +yy82:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'p') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      ++cur;
 +#line 85 "../src/parse/lex_conf.re"
 +      { opts.set_yyaccept        (lex_conf_string ()); return; }
 +#line 360 "src/parse/lex_conf.cc"
 +yy89:
 +      ++cur;
 +#line 87 "../src/parse/lex_conf.re"
 +      { opts.set_yybm         (lex_conf_string ()); return; }
 +#line 365 "src/parse/lex_conf.cc"
 +yy91:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'g') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      ++cur;
 +#line 99 "../src/parse/lex_conf.re"
 +      { opts.set_yytarget (lex_conf_string ()); return; }
 +#line 378 "src/parse/lex_conf.cc"
 +yy97:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'a') goto yy100;
 +      goto yy13;
 +yy98:
 +      ++cur;
 +#line 129 "../src/parse/lex_conf.re"
 +      { opts.set_yych           (lex_conf_string ()); return; }
 +#line 387 "src/parse/lex_conf.cc"
 +yy100:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      ++cur;
 +#line 74 "../src/parse/lex_conf.re"
 +      { opts.set_yyctable         (lex_conf_string ()); return; }
 +#line 398 "src/parse/lex_conf.cc"
 +yy105:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      ++cur;
 +#line 147 "../src/parse/lex_conf.re"
 +      { lex_conf_string (); return; }
 +#line 411 "src/parse/lex_conf.cc"
 +yy111:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'r') goto yy113;
 +      if (yych == 't') goto yy114;
 +      goto yy13;
 +yy113:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 't') goto yy133;
 +      goto yy13;
 +yy114:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'a') goto yy117;
 +      if (yych == 'n') goto yy118;
 +      goto yy13;
 +yy117:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'b') goto yy128;
 +      goto yy13;
 +yy118:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      ++cur;
 +#line 84 "../src/parse/lex_conf.re"
 +      { opts.set_bUseStateNext   (lex_conf_number () != 0); return; }
 +#line 456 "src/parse/lex_conf.cc"
 +yy128:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      ++cur;
 +#line 83 "../src/parse/lex_conf.re"
 +      { opts.set_bUseStateAbort  (lex_conf_number () != 0); return; }
 +#line 467 "src/parse/lex_conf.cc"
 +yy133:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      ctx = cur + 1;
 +      yyaccept = 1;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yybm[0+yych] & 64) {
 +              goto yy140;
 +      }
 +      if (yych == '=') goto yy142;
 +yy139:
 +#line 144 "../src/parse/lex_conf.re"
 +      { out.set_user_start_label (lex_conf_string ()); return; }
 +#line 489 "src/parse/lex_conf.cc"
 +yy140:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yybm[0+yych] & 64) {
 +              goto yy140;
 +      }
 +      if (yych != '=') goto yy13;
 +yy142:
 +      ++cur;
 +      if ((lim - cur) < 2) fill(2);
 +      yych = (unsigned char)*cur;
 +      if (yych <= ',') {
 +              if (yych <= '\t') {
 +                      if (yych <= 0x08) goto yy13;
 +                      goto yy142;
 +              } else {
 +                      if (yych == ' ') goto yy142;
 +                      goto yy13;
 +              }
 +      } else {
 +              if (yych <= '/') {
 +                      if (yych <= '-') goto yy146;
 +                      goto yy13;
 +              } else {
 +                      if (yych <= '0') goto yy144;
 +                      if (yych <= '9') goto yy147;
 +                      goto yy13;
 +              }
 +      }
 +yy144:
 +      ++cur;
 +yy145:
 +      cur = ctx;
 +#line 143 "../src/parse/lex_conf.re"
 +      { out.set_force_start_label (lex_conf_number () != 0); return; }
 +#line 526 "src/parse/lex_conf.cc"
 +yy146:
 +      yych = (unsigned char)*++cur;
 +      if (yych <= '0') goto yy13;
 +      if (yych >= ':') goto yy13;
 +yy147:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yybm[0+yych] & 128) {
 +              goto yy147;
 +      }
 +      goto yy145;
 +yy149:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == ':') goto yy154;
 +      if (yych != 'p') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'r') goto yy172;
 +      goto yy13;
 +yy154:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'F') goto yy157;
 +      if (yych == 'N') goto yy158;
 +      goto yy13;
 +yy157:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'i') goto yy163;
 +      goto yy13;
 +yy158:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      ++cur;
 +#line 82 "../src/parse/lex_conf.re"
 +      { opts.set_yynext          (lex_conf_string ()); return; }
 +#line 575 "src/parse/lex_conf.cc"
 +yy163:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'L') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'b') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      ++cur;
 +#line 81 "../src/parse/lex_conf.re"
 +      { opts.set_yyfilllabel     (lex_conf_string ()); return; }
 +#line 594 "src/parse/lex_conf.cc"
 +yy172:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'f') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      ++cur;
 +#line 140 "../src/parse/lex_conf.re"
 +      { opts.set_labelPrefix (lex_conf_string ()); return; }
 +#line 607 "src/parse/lex_conf.cc"
 +yy178:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'r') goto yy13;
 +      if (yych <= 's') goto yy185;
 +      if (yych >= 'u') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'o') goto yy192;
 +      goto yy13;
 +yy185:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'g') goto yy13;
 +      ++cur;
 +#line 114 "../src/parse/lex_conf.re"
 +      { opts.set_indString (lex_conf_string ()); return; }
 +#line 640 "src/parse/lex_conf.cc"
 +yy192:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'p') goto yy13;
 +      ++cur;
 +#line 116 "../src/parse/lex_conf.re"
 +      {
 +              const int32_t n = lex_conf_number ();
 +              if (n < 0)
 +              {
 +                      fatal ("configuration 'indent:top' must be nonnegative");
 +              }
 +              opts.set_topIndent (static_cast<uint32_t> (n));
 +              return;
 +      }
 +#line 655 "src/parse/lex_conf.cc"
 +yy195:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'g') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 's') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'e') {
 +              if (yych == '8') goto yy200;
 +              if (yych <= 'd') goto yy13;
 +      } else {
 +              if (yych <= 'u') {
 +                      if (yych <= 't') goto yy13;
 +              } else {
 +                      if (yych <= 'v') goto yy13;
 +                      if (yych >= 'y') goto yy13;
 +              }
 +      }
 +yy200:
 +      ++cur;
 +#line 38 "../src/parse/lex_conf.re"
 +      {
 +              Enc::type_t enc = Enc::ASCII;
 +              switch (cur[-1])
 +              {
 +                      case 'e': enc = Enc::EBCDIC; break;
 +                      case 'w': enc = Enc::UCS2;   break;
 +                      case 'x': enc = Enc::UTF16;  break;
 +                      case 'u': enc = Enc::UTF32;  break;
 +                      case '8': enc = Enc::UTF8;   break;
 +              }
 +              const int32_t n = lex_conf_number ();
 +              if (n == 0)
 +              {
 +                      opts.unset_encoding (enc);
 +              }
 +              else if (!opts.set_encoding (enc))
 +              {
 +                      fatalf ("Cannot set %s encoding: please reset %s encoding first"
 +                              , Enc::name (enc)
 +                              , Enc::name (opts->encoding.type ()));
 +              }
 +              return;
 +      }
 +#line 703 "src/parse/lex_conf.cc"
 +yy202:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'f') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'Y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'Y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      switch (yych) {
 +      case 'B':       goto yy215;
 +      case 'C':       goto yy211;
 +      case 'D':       goto yy212;
 +      case 'F':       goto yy210;
 +      case 'G':       goto yy219;
 +      case 'L':       goto yy213;
 +      case 'M':       goto yy218;
 +      case 'P':       goto yy217;
 +      case 'R':       goto yy214;
 +      case 'S':       goto yy216;
 +      default:        goto yy13;
 +      }
 +yy210:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'I') goto yy377;
 +      goto yy13;
 +yy211:
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'S') {
 +              if (yych == 'O') goto yy350;
 +              goto yy13;
 +      } else {
 +              if (yych <= 'T') goto yy352;
 +              if (yych <= 'U') goto yy351;
 +              goto yy13;
 +      }
 +yy212:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'E') goto yy345;
 +      goto yy13;
 +yy213:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'E') goto yy333;
 +      if (yych == 'I') goto yy332;
 +      goto yy13;
 +yy214:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'E') goto yy321;
 +      goto yy13;
 +yy215:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'A') goto yy311;
 +      goto yy13;
 +yy216:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'E') goto yy262;
 +      if (yych == 'K') goto yy263;
 +      goto yy13;
 +yy217:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'E') goto yy258;
 +      goto yy13;
 +yy218:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'A') goto yy252;
 +      goto yy13;
 +yy219:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'C') goto yy222;
 +      if (yych == 'S') goto yy223;
 +      goto yy13;
 +yy222:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'O') goto yy236;
 +      goto yy13;
 +yy223:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'A') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yyaccept = 2;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == ':') goto yy229;
 +yy228:
 +#line 76 "../src/parse/lex_conf.re"
 +      { opts.set_state_get       (lex_conf_string ()); return; }
 +#line 805 "src/parse/lex_conf.cc"
 +yy229:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 77 "../src/parse/lex_conf.re"
 +      { opts.set_state_get_naked (lex_conf_number () != 0); return; }
 +#line 820 "src/parse/lex_conf.cc"
 +yy236:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'N') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'D') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'O') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'N') goto yy13;
 +      yyaccept = 3;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == ':') goto yy245;
 +yy244:
 +#line 63 "../src/parse/lex_conf.re"
 +      { opts.set_cond_get         (lex_conf_string ()); return; }
 +#line 842 "src/parse/lex_conf.cc"
 +yy245:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 64 "../src/parse/lex_conf.re"
 +      { opts.set_cond_get_naked   (lex_conf_number () != 0); return; }
 +#line 857 "src/parse/lex_conf.cc"
 +yy252:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'K') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      ++cur;
 +#line 102 "../src/parse/lex_conf.re"
 +      { opts.set_yymarker    (lex_conf_string ()); return; }
 +#line 870 "src/parse/lex_conf.cc"
 +yy258:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'K') goto yy13;
 +      ++cur;
 +#line 106 "../src/parse/lex_conf.re"
 +      { opts.set_yypeek       (lex_conf_string ()); return; }
 +#line 879 "src/parse/lex_conf.cc"
 +yy262:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'T') goto yy267;
 +      goto yy13;
 +yy263:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'P') goto yy13;
 +      ++cur;
 +#line 107 "../src/parse/lex_conf.re"
 +      { opts.set_yyskip       (lex_conf_string ()); return; }
 +#line 892 "src/parse/lex_conf.cc"
 +yy267:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'C') goto yy268;
 +      if (yych == 'S') goto yy269;
 +      goto yy13;
 +yy268:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'O') goto yy289;
 +      goto yy13;
 +yy269:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'A') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yyaccept = 4;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == ':') goto yy276;
 +      if (yych == '@') goto yy275;
 +yy274:
 +#line 78 "../src/parse/lex_conf.re"
 +      { opts.set_state_set       (lex_conf_string ()); return; }
 +#line 918 "src/parse/lex_conf.cc"
 +yy275:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 's') goto yy283;
 +      goto yy13;
 +yy276:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 79 "../src/parse/lex_conf.re"
 +      { opts.set_state_set_naked (lex_conf_number () != 0); return; }
 +#line 937 "src/parse/lex_conf.cc"
 +yy283:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      ++cur;
 +#line 80 "../src/parse/lex_conf.re"
 +      { opts.set_state_set_arg   (lex_conf_string ()); return; }
 +#line 950 "src/parse/lex_conf.cc"
 +yy289:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'N') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'D') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'O') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'N') goto yy13;
 +      yyaccept = 5;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == ':') goto yy298;
 +      if (yych == '@') goto yy299;
 +yy297:
 +#line 65 "../src/parse/lex_conf.re"
 +      { opts.set_cond_set         (lex_conf_string ()); return; }
 +#line 973 "src/parse/lex_conf.cc"
 +yy298:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'n') goto yy305;
 +      goto yy13;
 +yy299:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 66 "../src/parse/lex_conf.re"
 +      { opts.set_cond_set_arg     (lex_conf_string ()); return; }
 +#line 990 "src/parse/lex_conf.cc"
 +yy305:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 67 "../src/parse/lex_conf.re"
 +      { opts.set_cond_set_naked   (lex_conf_number () != 0); return; }
 +#line 1003 "src/parse/lex_conf.cc"
 +yy311:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'C') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'K') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'U') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'P') goto yy13;
 +      yyaccept = 6;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'C') goto yy317;
 +yy316:
 +#line 108 "../src/parse/lex_conf.re"
 +      { opts.set_yybackup     (lex_conf_string ()); return; }
 +#line 1019 "src/parse/lex_conf.cc"
 +yy317:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'X') goto yy13;
 +      ++cur;
 +#line 109 "../src/parse/lex_conf.re"
 +      { opts.set_yybackupctx  (lex_conf_string ()); return; }
 +#line 1028 "src/parse/lex_conf.cc"
 +yy321:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'S') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'O') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yyaccept = 7;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == 'C') goto yy328;
 +yy327:
 +#line 110 "../src/parse/lex_conf.re"
 +      { opts.set_yyrestore    (lex_conf_string ()); return; }
 +#line 1046 "src/parse/lex_conf.cc"
 +yy328:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'X') goto yy13;
 +      ++cur;
 +#line 111 "../src/parse/lex_conf.re"
 +      { opts.set_yyrestorectx (lex_conf_string ()); return; }
 +#line 1055 "src/parse/lex_conf.cc"
 +yy332:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'M') goto yy341;
 +      goto yy13;
 +yy333:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'S') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'S') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'H') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'A') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'N') goto yy13;
 +      ++cur;
 +#line 112 "../src/parse/lex_conf.re"
 +      { opts.set_yylessthan   (lex_conf_string ()); return; }
 +#line 1076 "src/parse/lex_conf.cc"
 +yy341:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'I') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      ++cur;
 +#line 104 "../src/parse/lex_conf.re"
 +      { opts.set_yylimit     (lex_conf_string ()); return; }
 +#line 1085 "src/parse/lex_conf.cc"
 +yy345:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'B') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'U') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'G') goto yy13;
 +      ++cur;
 +#line 126 "../src/parse/lex_conf.re"
 +      { opts.set_yydebug (lex_conf_string ()); return; }
 +#line 1096 "src/parse/lex_conf.cc"
 +yy350:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'N') goto yy370;
 +      goto yy13;
 +yy351:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'R') goto yy365;
 +      goto yy13;
 +yy352:
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'W') goto yy13;
 +      if (yych <= 'X') goto yy354;
 +      if (yych >= 'Z') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'P') goto yy362;
 +      goto yy13;
 +yy354:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'M') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'A') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'K') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      ++cur;
 +#line 103 "../src/parse/lex_conf.re"
 +      { opts.set_yyctxmarker (lex_conf_string ()); return; }
 +#line 1129 "src/parse/lex_conf.cc"
 +yy362:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      ++cur;
 +#line 128 "../src/parse/lex_conf.re"
 +      { opts.set_yyctype        (lex_conf_string ()); return; }
 +#line 1136 "src/parse/lex_conf.cc"
 +yy365:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'S') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'O') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'R') goto yy13;
 +      ++cur;
 +#line 101 "../src/parse/lex_conf.re"
 +      { opts.set_yycursor    (lex_conf_string ()); return; }
 +#line 1147 "src/parse/lex_conf.cc"
 +yy370:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'D') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'T') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'Y') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'P') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'E') goto yy13;
 +      ++cur;
 +#line 62 "../src/parse/lex_conf.re"
 +      { opts.set_yycondtype       (lex_conf_string ()); return; }
 +#line 1162 "src/parse/lex_conf.cc"
 +yy377:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'L') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'L') goto yy13;
 +      yyaccept = 8;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == ':') goto yy381;
 +      if (yych == '@') goto yy382;
 +yy380:
 +#line 133 "../src/parse/lex_conf.re"
 +      { opts.set_fill         (lex_conf_string ()); return; }
 +#line 1175 "src/parse/lex_conf.cc"
 +yy381:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'n') goto yy387;
 +      goto yy13;
 +yy382:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      ++cur;
 +#line 135 "../src/parse/lex_conf.re"
 +      { opts.set_fill_arg     (lex_conf_string ()); return; }
 +#line 1190 "src/parse/lex_conf.cc"
 +yy387:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'a') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'k') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 137 "../src/parse/lex_conf.re"
 +      { opts.set_fill_naked   (lex_conf_number () != 0); return; }
 +#line 1203 "src/parse/lex_conf.cc"
 +yy393:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'o') goto yy441;
 +      goto yy13;
 +yy394:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych <= 'd') {
 +              if (yych == ':') goto yy399;
 +              goto yy13;
 +      } else {
 +              if (yych <= 'e') goto yy398;
 +              if (yych != 'p') goto yy13;
 +      }
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'r') goto yy435;
 +      goto yy13;
 +yy398:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'n') goto yy425;
 +      goto yy13;
 +yy399:
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'd') goto yy401;
 +      if (yych != 'g') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych == 'o') goto yy415;
 +      goto yy13;
 +yy401:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'v') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yyaccept = 9;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == '@') goto yy409;
 +yy408:
 +#line 70 "../src/parse/lex_conf.re"
 +      { opts.set_condDivider      (lex_conf_string ()); return; }
 +#line 1254 "src/parse/lex_conf.cc"
 +yy409:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 71 "../src/parse/lex_conf.re"
 +      { opts.set_condDividerParam (lex_conf_string ()); return; }
 +#line 1267 "src/parse/lex_conf.cc"
 +yy415:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yyaccept = 10;
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych == '@') goto yy419;
 +yy418:
 +#line 72 "../src/parse/lex_conf.re"
 +      { opts.set_condGoto         (lex_conf_string ()); return; }
 +#line 1279 "src/parse/lex_conf.cc"
 +yy419:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'c') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'n') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 73 "../src/parse/lex_conf.re"
 +      { opts.set_condGotoParam    (lex_conf_string ()); return; }
 +#line 1292 "src/parse/lex_conf.cc"
 +yy425:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'u') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'm') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'p') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'f') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      ++cur;
 +#line 69 "../src/parse/lex_conf.re"
 +      { opts.set_condEnumPrefix   (lex_conf_string ()); return; }
 +#line 1313 "src/parse/lex_conf.cc"
 +yy435:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'f') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'i') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'x') goto yy13;
 +      ++cur;
 +#line 68 "../src/parse/lex_conf.re"
 +      { opts.set_condPrefix       (lex_conf_string ()); return; }
 +#line 1326 "src/parse/lex_conf.cc"
 +yy441:
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != ':') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 't') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'h') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'r') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'e') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 's') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'h') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'o') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'l') goto yy13;
 +      yych = (unsigned char)*++cur;
 +      if (yych != 'd') goto yy13;
 +      ++cur;
 +#line 90 "../src/parse/lex_conf.re"
 +      {
 +              const int32_t n = lex_conf_number ();
 +              if (n < 0)
 +              {
 +                      fatal ("configuration 'cgoto:threshold' must be nonnegative");
 +              }
 +              opts.set_cGotoThreshold (static_cast<uint32_t> (n));
 +              return;
 +      }
 +#line 1363 "src/parse/lex_conf.cc"
 +}
 +#line 148 "../src/parse/lex_conf.re"
 +
 +}
 +
 +void Scanner::lex_conf_assign ()
 +{
 +
 +#line 1372 "src/parse/lex_conf.cc"
 +{
 +      unsigned char yych;
 +      static const unsigned char yybm[] = {
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0, 128,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +              128,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +      };
 +      if ((lim - cur) < 2) fill(2);
 +      yych = (unsigned char)*cur;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy459;
 +      } else {
 +              if (yych <= ' ') goto yy459;
 +              if (yych == '=') goto yy460;
 +      }
 +      ++cur;
 +yy458:
 +#line 154 "../src/parse/lex_conf.re"
 +      { fatal ("missing '=' in configuration"); }
 +#line 1421 "src/parse/lex_conf.cc"
 +yy459:
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy464;
 +              goto yy458;
 +      } else {
 +              if (yych <= ' ') goto yy464;
 +              if (yych == '=') goto yy462;
 +              goto yy458;
 +      }
 +yy460:
 +      ++cur;
 +      yych = (unsigned char)*cur;
 +      goto yy463;
 +yy461:
 +#line 155 "../src/parse/lex_conf.re"
 +      { return; }
 +#line 1439 "src/parse/lex_conf.cc"
 +yy462:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +yy463:
 +      if (yybm[0+yych] & 128) {
 +              goto yy462;
 +      }
 +      goto yy461;
 +yy464:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy464;
 +      } else {
 +              if (yych <= ' ') goto yy464;
 +              if (yych == '=') goto yy462;
 +      }
 +      cur = ptr;
 +      goto yy458;
 +}
 +#line 156 "../src/parse/lex_conf.re"
 +
 +}
 +
 +void Scanner::lex_conf_semicolon ()
 +{
 +
 +#line 1469 "src/parse/lex_conf.cc"
 +{
 +      unsigned char yych;
 +      static const unsigned char yybm[] = {
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0, 128,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +              128,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +      };
 +      if ((lim - cur) < 2) fill(2);
 +      yych = (unsigned char)*cur;
 +      if (yych <= 0x1F) {
 +              if (yych == '\t') goto yy471;
 +      } else {
 +              if (yych <= ' ') goto yy471;
 +              if (yych == ';') goto yy472;
 +      }
 +      ++cur;
 +yy470:
 +#line 162 "../src/parse/lex_conf.re"
 +      { fatal ("missing ending ';' in configuration"); }
 +#line 1518 "src/parse/lex_conf.cc"
 +yy471:
 +      yych = (unsigned char)*(ptr = ++cur);
 +      if (yybm[0+yych] & 128) {
 +              goto yy475;
 +      }
 +      if (yych == ';') goto yy474;
 +      goto yy470;
 +yy472:
 +      ++cur;
 +yy473:
 +#line 163 "../src/parse/lex_conf.re"
 +      { return; }
 +#line 1531 "src/parse/lex_conf.cc"
 +yy474:
 +      yych = (unsigned char)*++cur;
 +      goto yy473;
 +yy475:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yybm[0+yych] & 128) {
 +              goto yy475;
 +      }
 +      if (yych == ';') goto yy474;
 +      cur = ptr;
 +      goto yy470;
 +}
 +#line 164 "../src/parse/lex_conf.re"
 +
 +}
 +
 +int32_t Scanner::lex_conf_number ()
 +{
 +      lex_conf_assign ();
 +      tok = cur;
 +
 +#line 1555 "src/parse/lex_conf.cc"
 +{
 +      unsigned char yych;
 +      static const unsigned char yybm[] = {
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +                0,   0,   0,   0,   0,   0,   0,   0, 
 +      };
 +      if ((lim - cur) < 2) fill(2);
 +      yych = (unsigned char)*cur;
 +      if (yych <= '/') {
 +              if (yych == '-') goto yy483;
 +      } else {
 +              if (yych <= '0') goto yy481;
 +              if (yych <= '9') goto yy484;
 +      }
 +yy480:
 +yy481:
 +      ++cur;
 +yy482:
 +#line 173 "../src/parse/lex_conf.re"
 +      {
 +              int32_t n = 0;
 +              if (!s_to_i32_unsafe (tok, cur, n))
 +              {
 +                      fatal ("configuration value overflow");
 +              }
 +              lex_conf_semicolon ();
 +              return n;
 +      }
 +#line 1614 "src/parse/lex_conf.cc"
 +yy483:
 +      yych = (unsigned char)*++cur;
 +      if (yych <= '0') goto yy480;
 +      if (yych >= ':') goto yy480;
 +yy484:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yybm[0+yych] & 128) {
 +              goto yy484;
 +      }
 +      goto yy482;
 +}
 +#line 182 "../src/parse/lex_conf.re"
 +
 +}
 +
 +std::string Scanner::lex_conf_string ()
 +{
 +      lex_conf_assign ();
 +      std::string s;
 +      tok = cur;
 +
 +#line 1638 "src/parse/lex_conf.cc"
 +{
 +      unsigned char yych;
 +      static const unsigned char yybm[] = {
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128,   0,   0, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +                0, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128,   0, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +              128, 128, 128, 128, 128, 128, 128, 128, 
 +      };
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yych <= '!') {
 +              if (yych <= '\n') {
 +                      if (yych <= 0x08) goto yy491;
 +              } else {
 +                      if (yych != ' ') goto yy491;
 +              }
 +      } else {
 +              if (yych <= '\'') {
 +                      if (yych <= '"') goto yy489;
 +                      if (yych <= '&') goto yy491;
 +                      goto yy489;
 +              } else {
 +                      if (yych != ';') goto yy491;
 +              }
 +      }
 +yy488:
 +#line 205 "../src/parse/lex_conf.re"
 +      {
 +              s = std::string(tok, tok_len());
 +              goto end;
 +      }
 +#line 1698 "src/parse/lex_conf.cc"
 +yy489:
 +      ++cur;
 +#line 191 "../src/parse/lex_conf.re"
 +      {
 +              const char quote = tok[0];
 +              for (bool end;;) {
 +                      const uint32_t c = lex_str_chr(quote, end);
 +                      if (end) {
 +                              goto end;
 +                      }
 +                      if (c > 0xFF) {
 +                              fatalf ("multibyte character in configuration string: 0x%X", c);
 +                      } else {
 +                              s += static_cast<char>(c);
 +                      }
 +              }
 +      }
 +#line 1716 "src/parse/lex_conf.cc"
 +yy491:
 +      ++cur;
 +      if (lim <= cur) fill(1);
 +      yych = (unsigned char)*cur;
 +      if (yybm[0+yych] & 128) {
 +              goto yy491;
 +      }
 +      goto yy488;
 +}
 +#line 209 "../src/parse/lex_conf.re"
 +
 +end:
 +      lex_conf_semicolon ();
 +      return s;
 +}
 +
 +} // end namespace re2c
index 6a94b266d7ff0348c7c53d3bcf683a8d590a071f,0000000000000000000000000000000000000000..d6feab459b2e5874399acc3830aa995cdf26e782
mode 100644,000000..100644
--- /dev/null
@@@ -1,246 -1,0 +1,246 @@@
-       vernum.resize(6);
 +#include <stdarg.h>
 +#include <stdio.h>
 +#include <string>
 +
 +#include "config.h"
 +#include "src/conf/msg.h"
 +
 +namespace re2c {
 +
 +void error (const char * fmt, ...)
 +{
 +      fprintf (stderr, "re2c: error: ");
 +
 +      va_list args;
 +      va_start (args, fmt);
 +      vfprintf (stderr, fmt, args);
 +      va_end (args);
 +
 +      fprintf (stderr, "\n");
 +}
 +
 +void error_encoding ()
 +{
 +      error ("only one of switches -e, -w, -x, -u and -8 must be set");
 +}
 +
 +void error_arg (const char * option)
 +{
 +      error ("expected argument to option %s", option);
 +}
 +
 +void warning_start (uint32_t line, bool error)
 +{
 +      static const char * msg = error ? "error" : "warning";
 +      fprintf (stderr, "re2c: %s: line %u: ", msg, line);
 +}
 +
 +void warning_end (const char * type, bool error)
 +{
 +      if (type != NULL)
 +      {
 +              const char * prefix = error ? "error-" : "";
 +              fprintf (stderr, " [-W%s%s]", prefix, type);
 +      }
 +      fprintf (stderr, "\n");
 +}
 +
 +void warning (const char * type, uint32_t line, bool error, const char * fmt, ...)
 +{
 +      warning_start (line, error);
 +
 +      va_list args;
 +      va_start (args, fmt);
 +      vfprintf (stderr, fmt, args);
 +      va_end (args);
 +
 +      warning_end (type, error);
 +}
 +
 +void usage ()
 +{
 +      fprintf (stderr,
 +      "usage: re2c [-bcdDefFghirsuvVwx18] [-o of] [-t th] file\n"
 +      "\n"
 +      "-? -h  --help           Display this info.\n"
 +      "\n"
 +      "-b     --bit-vectors    Implies -s. Use bit vectors as well in the attempt to\n"
 +      "                        coax better code out of the compiler. Most useful for\n"
 +      "                        specifications with more than a few keywords (e.g. for\n"
 +      "                        most programming languages).\n"
 +      "\n"
 +      "-c     --conditions     Require start conditions.\n"
 +      "\n"
 +      "-d     --debug-output   Creates a parser that dumps information during\n"
 +      "                        about the current position and in which state the\n"
 +      "                        parser is.\n"
 +      "\n"
 +      "-D     --emit-dot       Emit a Graphviz dot view of the DFA graph\n"
 +      "\n"
 +      "-e     --ecb            Generate a parser that supports EBCDIC. The generated code\n"
 +      "                        can deal with any character up to 0xFF. In this mode re2c\n"
 +      "                        assumes that input character size is 1 byte. This switch is\n"
 +      "                        incompatible with -w, -u, -x and -8\n"
 +      "\n"
 +      "-f     --storable-state Generate a scanner that supports storable states.\n"
 +      "\n"
 +      "-F     --flex-syntax    Partial support for flex syntax.\n"
 +      "\n"
 +      "-g     --computed-gotos Implies -b. Generate computed goto code (only useable\n"
 +      "                        with gcc).\n"
 +      "\n"
 +      "-i     --no-debug-info  Do not generate '#line' info (usefull for versioning).\n"
 +      "\n"
 +      "-o of  --output=of      Specify the output file (of) instead of stdout\n"
 +      "\n"
 +      "-r     --reusable       Allow reuse of scanner definitions.\n"
 +      "\n"
 +      "-s     --nested-ifs     Generate nested ifs for some switches. Many compilers\n"
 +      "                        need this assist to generate better code.\n"
 +      "\n"
 +      "-t th  --type-header=th Generate a type header file (th) with type definitions.\n"
 +      "\n"
 +      "-u     --unicode        Generate a parser that supports UTF-32. The generated code\n"
 +      "                        can deal with any valid Unicode character up to 0x10FFFF.\n"
 +      "                        In this mode re2c assumes that input character size is 4 bytes.\n"
 +      "                        This switch is incompatible with -e, -w, -x and -8. It implies -s.\n"
 +      "\n"
 +      "-v     --version        Show version information.\n"
 +      "\n"
 +      "-V     --vernum         Show version as one number.\n"
 +      "\n"
 +      "-w     --wide-chars     Generate a parser that supports UCS-2. The generated code can\n"
 +      "                        deal with any valid Unicode character up to 0xFFFF. In this mode\n"
 +      "                        re2c assumes that input character size is 2 bytes. This switch is\n"
 +      "                        incompatible with -e, -x, -u and -8. It implies -s."
 +      "\n"
 +      "-x     --utf-16         Generate a parser that supports UTF-16. The generated code can\n"
 +      "                        deal with any valid Unicode character up to 0x10FFFF. In this mode\n"
 +      "                        re2c assumes that input character size is 2 bytes. This switch is\n"
 +      "                        incompatible with -e, -w, -u and -8. It implies -s."
 +      "\n"
 +      "-8     --utf-8          Generate a parser that supports UTF-8. The generated code can\n"
 +      "                        deal with any valid Unicode character up to 0x10FFFF. In this mode\n"
 +      "                        re2c assumes that input character size is 1 byte. This switch is\n"
 +      "                        incompatible with -e, -w, -x and -u."
 +      "\n"
 +      "--no-generation-date    Suppress date output in the generated output so that it\n"
 +      "                        only shows the re2c version.\n"
 +      "\n"
 +      "--case-insensitive      All strings are case insensitive, so all \"-expressions\n"
 +      "                        are treated in the same way '-expressions are.\n"
 +      "\n"
 +      "--case-inverted         Invert the meaning of single and double quoted strings.\n"
 +      "                        With this switch single quotes are case sensitive and\n"
 +      "                        double quotes are case insensitive.\n"
 +      "\n"
 +      "--encoding-policy ep    Specify what re2c should do when given bad code unit.\n"
 +      "                        ep can be one of the following: fail, substitute, ignore.\n"
 +      "\n"
 +      "--input i               Specify re2c input API.\n"
 +      "                        i can be one of the following: default, custom.\n"
 +      "\n"
 +      "--skeleton              Instead of embedding re2c-generated code into C/C++ source,\n"
 +      "                        generate a self-contained program for the same DFA.\n"
 +      "                        Most useful for correctness and performance testing.\n"
 +      "\n"
 +      "--empty-class policy    What to do if user inputs empty character class. policy can be\n"
 +      "                        one of the following: 'match-empty' (match empty input, default),\n"
 +      "                        'match-none' (fail to match on any input), 'error' (compilation\n"
 +      "                        error). Note that there are various ways to construct empty class,\n"
 +      "                        e.g: [], [^\\x00-\\xFF], [\\x00-\\xFF]\\[\\x00-\\xFF].\n"
 +      "\n"
 +      "-1     --single-pass    Deprecated and does nothing (single pass is by default now).\n"
 +      "\n"
 +      "-W                      Turn on all warnings.\n"
 +      "\n"
 +      "-Werror                 Turn warnings into errors. Note that this option along doesn't\n"
 +      "                        turn on any warnings, it only affects those warnings that have\n"
 +      "                        been turned on so far or will be turned on later.\n"
 +      "\n"
 +      "-W<warning>             Turn on individual warning.\n"
 +      "\n"
 +      "-Wno-<warning>          Turn off individual warning.\n"
 +      "\n"
 +      "-Werror-<warning>       Turn on individual warning and treat it as error (this implies\n"
 +      "                        '-W<warning>').\n"
 +      "\n"
 +      "-Wno-error-<warning>    Don't treat this particular warning as error. This doesn't turn\n"
 +      "                        off the warning itself.\n"
 +      "\n"
 +      "Warnings:\n"
 +      "\n"
 +      "-Wcondition-order       Warn if the generated program makes implicit assumptions about\n"
 +      "                        condition numbering. One should use either '-t, --type-header'\n"
 +      "                        option or '/*!types:re2c*/' directive to generate mapping of\n"
 +      "                        condition names to numbers and use autogenerated condition names.\n"
 +      "\n"
 +      "-Wempty-character-class Warn if regular expression contains empty character class. From\n"
 +      "                        the rational point of view trying to match empty character class\n"
 +      "                        makes no sense: it should always fail. However, for backwards\n"
 +      "                        compatibility reasons re2c allows empty character class and treats\n"
 +      "                        it as empty string. Use '--empty-class' option to change default\n"
 +      "                        behaviour.\n"
 +      "\n"
 +      "-Wmatch-empty-string    Warn if regular expression in a rule is nullable (matches empty\n"
 +      "                        string). If DFA runs in a loop and empty match is unintentional\n"
 +      "                        (input position in not advanced manually), lexer may get stuck\n"
 +      "                        in eternal loop.\n"
 +      "\n"
 +      "-Wswapped-range         Warn if range lower bound is greater that upper bound. Default\n"
 +      "                        re2c behaviour is to silently swap range bounds.\n"
 +      "\n"
 +      "-Wundefined-control-flow\n"
 +      "                        Warn if some input strings cause undefined control flow in lexer\n"
 +      "                        (the faulty patterns are reported). This is the most dangerous\n"
 +      "                        and common mistake. It can be easily fixed by adding default rule\n"
 +      "                        '*' (this rule has the lowest priority, matches any code unit\n"
 +      "                        and consumes exactly one code unit).\n"
 +      "\n"
 +      "-Wuseless-escape        Warn if a symbol is escaped when it shouldn't be. By default re2c\n"
 +      "                        silently ignores escape, but this may as well indicate a typo\n"
 +      "                        or an error in escape sequence.\n"
 +      "\n"
 +      );
 +}
 +
 +void vernum ()
 +{
 +      std::string vernum (PACKAGE_VERSION);
 +      if (vernum[1] == '.')
 +      {
 +              vernum.insert(0, "0");
 +      }
 +      vernum.erase(2, 1);
 +      if (vernum[3] == '.')
 +      {
 +              vernum.insert(2, "0");
 +      }
 +      vernum.erase(4, 1);
 +      if (vernum.length() < 6 || vernum[5] < '0' || vernum[5] > '9')
 +      {
 +              vernum.insert(4, "0");
 +      }
++      vernum.resize(6, '0');
 +
 +      printf ("%s\n", vernum.c_str ());
 +}
 +
 +void version ()
 +{
 +      printf ("re2c %s\n", PACKAGE_VERSION);
 +}
 +
 +std::string incond (const std::string & cond)
 +{
 +      std::string s;
 +      if (!cond.empty ())
 +      {
 +              s += "in condition '";
 +              s += cond;
 +              s += "' ";
 +      }
 +      return s;
 +}
 +
 +} // namespace re2c
index ccfe08c486eac0d8641eeffd1fba38881f344ee6,0000000000000000000000000000000000000000..b108afe39bdf3dc5443118bc0d7e470ffea91847
mode 100644,000000..100644
--- /dev/null
@@@ -1,243 -1,0 +1,249 @@@
-                       m1->ins_access = e1->ins_access;
-                       a->exp2->ins_access = e1->ins_access;
 +#include "src/ir/regexp/encoding/case.h"
 +#include "src/ir/regexp/encoding/utf16/utf16_regexp.h"
 +#include "src/ir/regexp/encoding/utf8/utf8_regexp.h"
 +#include "src/ir/regexp/regexp.h"
 +#include "src/ir/regexp/regexp_alt.h"
 +#include "src/ir/regexp/regexp_cat.h"
 +#include "src/ir/regexp/regexp_close.h"
 +#include "src/ir/regexp/regexp_match.h"
 +#include "src/ir/regexp/regexp_null.h"
 +#include "src/parse/scanner.h"
 +#include "src/util/range.h"
 +
 +namespace re2c
 +{
 +
 +static MatchOp * merge (MatchOp * m1, MatchOp * m2);
 +
 +free_list<RegExp*> RegExp::vFreeList;
 +
 +RegExp * doAlt (RegExp * e1, RegExp * e2)
 +{
 +      if (!e1)
 +      {
 +              return e2;
 +      }
 +      if (!e2)
 +      {
 +              return e1;
 +      }
 +      return new AltOp (e1, e2);
 +}
 +
 +RegExp * mkAlt (RegExp * e1, RegExp * e2)
 +{
 +      AltOp * a;
 +      MatchOp * m1;
 +      MatchOp * m2;
 +
 +      a = dynamic_cast<AltOp*> (e1);
 +      if (a != NULL)
 +      {
 +              m1 = dynamic_cast<MatchOp*> (a->exp1);
 +              if (m1 != NULL)
 +              {
-                       m2->ins_access = e2->ins_access;
-                       a->exp2->ins_access = e2->ins_access;
++                      if (e1->ins_access == RegExp::PRIVATE)
++                      {
++                              m1->ins_access = RegExp::PRIVATE;
++                              a->exp2->ins_access = RegExp::PRIVATE;
++                      }
 +                      e1 = a->exp2;
 +              }
 +      }
 +      else
 +      {
 +              m1 = dynamic_cast<MatchOp*> (e1);
 +              if (m1 != NULL)
 +              {
 +                      e1 = NULL;
 +              }
 +      }
 +      a = dynamic_cast<AltOp*> (e2);
 +      if (a != NULL)
 +      {
 +              m2 = dynamic_cast<MatchOp*> (a->exp1);
 +              if (m2 != NULL)
 +              {
++                      if (e2->ins_access == RegExp::PRIVATE)
++                      {
++                              m2->ins_access = RegExp::PRIVATE;
++                              a->exp2->ins_access = RegExp::PRIVATE;
++                      }
 +                      e2 = a->exp2;
 +              }
 +      }
 +      else
 +      {
 +              m2 = dynamic_cast<MatchOp*> (e2);
 +              if (m2 != NULL)
 +              {
 +                      e2 = NULL;
 +              }
 +      }
 +
 +      return doAlt (merge (m1, m2), doAlt (e1, e2));
 +}
 +
 +MatchOp * merge (MatchOp * m1, MatchOp * m2)
 +{
 +      if (!m1)
 +      {
 +              return m2;
 +      }
 +      if (!m2)
 +      {
 +              return m1;
 +      }
 +      MatchOp * m = new MatchOp (Range::add (m1->match, m2->match));
 +      if (m1->ins_access == RegExp::PRIVATE
 +              || m2->ins_access == RegExp::PRIVATE)
 +      {
 +              m->ins_access = RegExp::PRIVATE;
 +      }
 +      return m;
 +}
 +
 +RegExp * doCat (RegExp * e1, RegExp * e2)
 +{
 +      if (!e1)
 +      {
 +              return e2;
 +      }
 +      if (!e2)
 +      {
 +              return e1;
 +      }
 +      return new CatOp (e1, e2);
 +}
 +
 +RegExp *Scanner::schr(uint32_t c) const
 +{
 +      if (!opts->encoding.encode(c)) {
 +              fatalf("Bad code point: '0x%X'", c);
 +      }
 +      switch (opts->encoding.type ()) {
 +              case Enc::UTF16: return UTF16Symbol(c);
 +              case Enc::UTF8:  return UTF8Symbol(c);
 +              default:         return new MatchOp(Range::sym(c));
 +      }
 +}
 +
 +RegExp *Scanner::ichr(uint32_t c) const
 +{
 +      if (is_alpha(c)) {
 +              RegExp *l = schr(to_lower_unsafe(c));
 +              RegExp *u = schr(to_upper_unsafe(c));
 +              return mkAlt(l, u);
 +      } else {
 +              return schr(c);
 +      }
 +}
 +
 +RegExp *Scanner::cls(Range *r) const
 +{
 +      if (!r)
 +      {
 +              switch (opts->empty_class_policy)
 +              {
 +                      case EMPTY_CLASS_MATCH_EMPTY:
 +                              warn.empty_class (get_line ());
 +                              return new NullOp;
 +                      case EMPTY_CLASS_MATCH_NONE:
 +                              warn.empty_class (get_line ());
 +                              break;
 +                      case EMPTY_CLASS_ERROR:
 +                              fatal ("empty character class");
 +                              break;
 +              }
 +      }
 +
 +      switch (opts->encoding.type ())
 +      {
 +              case Enc::UTF16: return UTF16Range(r);
 +              case Enc::UTF8:  return UTF8Range(r);
 +              default:         return new MatchOp(r);
 +      }
 +}
 +
 +RegExp * Scanner::mkDiff (RegExp * e1, RegExp * e2) const
 +{
 +      MatchOp * m1 = dynamic_cast<MatchOp *> (e1);
 +      MatchOp * m2 = dynamic_cast<MatchOp *> (e2);
 +      if (m1 == NULL || m2 == NULL)
 +      {
 +              fatal("can only difference char sets");
 +      }
 +      Range * r = Range::sub (m1->match, m2->match);
 +
 +      return cls(r);
 +}
 +
 +RegExp * Scanner::mkDot() const
 +{
 +      Range * full = opts->encoding.fullRange();
 +      uint32_t c = '\n';
 +      if (!opts->encoding.encode(c))
 +              fatalf("Bad code point: '0x%X'", c);
 +      Range * ran = Range::sym (c);
 +      Range * inv = Range::sub (full, ran);
 +
 +      return cls(inv);
 +}
 +
 +/*
 + * Create a byte range that includes all possible input characters.
 + * This may include characters, which do not map to any valid symbol
 + * in current encoding. For encodings, which directly map symbols to
 + * input characters (ASCII, EBCDIC, UTF-32), it equals [^]. For other
 + * encodings (UTF-16, UTF-8), [^] and this range are different.
 + *
 + * Also note that default range doesn't respect encoding policy
 + * (the way invalid code points are treated).
 + */
 +RegExp * Scanner::mkDefault() const
 +{
 +      Range * def = Range::ran (0, opts->encoding.nCodeUnits());
 +      return new MatchOp(def);
 +}
 +
 +/*
 + * note [counted repetition expansion]
 + *
 + * r{0} ;;= <empty regexp>
 + * r{n} ::= r{n-1} r
 + * r{n,m} ::= r{n} (r{0} | ... | r{m-n})
 + * r{n,} ::= r{n} r*
 + */
 +
 +// see note [counted repetition expansion]
 +RegExp * repeat (RegExp * e, uint32_t n)
 +{
 +      RegExp * r = NULL;
 +      for (uint32_t i = 0; i < n; ++i)
 +      {
 +              r = doCat (r, e);
 +      }
 +      return r;
 +}
 +
 +// see note [counted repetition expansion]
 +RegExp * repeat_from_to (RegExp * e, uint32_t n, uint32_t m)
 +{
 +      RegExp * r1 = repeat (e, n);
 +      RegExp * r2 = NULL;
 +      for (uint32_t i = n; i < m; ++i)
 +      {
 +              r2 = mkAlt (new NullOp, doCat (e, r2));
 +      }
 +      return doCat (r1, r2);
 +}
 +
 +// see note [counted repetition expansion]
 +RegExp * repeat_from (RegExp * e, uint32_t n)
 +{
 +      RegExp * r1 = repeat (e, n);
 +      RegExp * r2 = mkAlt (new NullOp, new CloseOp (e));
 +      return doCat (r1, r2);
 +}
 +
 +} // namespace re2c
index 0000000000000000000000000000000000000000,96f1ce3096c1f1dda4b9c7fc27c4e1085abede0d..77006ebd9df2de46c84ea372a2a0e6a1d2263612
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,114 +1,114 @@@
 -#line 13 "<stdout>"
+ /* Generated by re2c */
+ #line 1 "bug57.re"
+ #include <stdio.h>
+ int scan(const char *p)
+ {
+ #define YYCTYPE char
+     const char *YYCURSOR = p;
+     const char *YYMARKER;
 -
++#line 13 "bug57.c"
+ {
+       YYCTYPE yych;
+       unsigned int yyaccept = 0;
 -#line 29 "<stdout>"
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\n':      goto yy2;
+       case '<':       goto yy3;
+       case '\\':      goto yy6;
+       case 'a':       goto yy5;
+       default:        goto yy7;
+       }
+ yy2:
+ #line 15 "bug57.re"
+       { return YYCURSOR - p; }
 -#line 43 "<stdout>"
++#line 28 "bug57.c"
+ yy3:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '>':       goto yy15;
+       case '\\':      goto yy14;
+       case 'x':
+       case 'y':       goto yy12;
+       default:        goto yy4;
+       }
+ yy4:
+ #line 16 "bug57.re"
+       { return 0; }
 -#line 102 "<stdout>"
++#line 42 "bug57.c"
+ yy5:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy9;
+ yy6:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'b':       goto yy8;
+       default:        goto yy4;
+       }
+ yy7:
+       yych = *++YYCURSOR;
+       goto yy4;
+ yy8:
+       yyaccept = 1;
+       YYMARKER = ++YYCURSOR;
+       yych = *YYCURSOR;
+ yy9:
+       switch (yych) {
+       case '\\':      goto yy10;
+       case 'a':       goto yy8;
+       default:        goto yy2;
+       }
+ yy10:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 'b':       goto yy8;
+       default:        goto yy11;
+       }
+ yy11:
+       YYCURSOR = YYMARKER;
+       if (yyaccept == 0) {
+               goto yy4;
+       } else {
+               goto yy2;
+       }
+ yy12:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '>':       goto yy15;
+       case '\\':      goto yy14;
+       case 'x':
+       case 'y':       goto yy12;
+       default:        goto yy11;
+       }
+ yy14:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 'b':       goto yy12;
+       default:        goto yy11;
+       }
+ yy15:
+       ++YYCURSOR;
+ #line 14 "bug57.re"
+       { return YYCURSOR - p; }
++#line 101 "bug57.c"
+ }
+ #line 17 "bug57.re"
+ }
+ int main()
+ {
+     const char *str = "aaa\\baaa";
+     int res = scan(str);
+     printf("%d: %s\n", res, str + res);
+     return 0;
+ }
++re2c: warning: line 15: rule matches empty string [-Wmatch-empty-string]
index 0000000000000000000000000000000000000000,9984dc4ba61aeac8fab0ad3e05ec6dd50dc6732a..d316fde43fa5e830e1bd9b24cda2eeea14da6c07
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,12397 +1,12195 @@@
 -
+ /* Generated by re2c */
+ #include <stdlib.h>
+ #include "chunk.h"
+ #include "scanners.h"
+ int _scan_at(int (*scanner)(const unsigned char *), cmark_chunk *c, int offset)
+ {
+     int res;
+     unsigned char *ptr = (unsigned char *)c->data;
+     unsigned char lim = ptr[c->len];
+     ptr[c->len] = '\0';
+     res = scanner(ptr + offset);
+     ptr[c->len] = lim;
+     return res;
+ }
+ // Try to match URI autolink after first <, returning number of chars matched.
+ int _scan_autolink_uri(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128,   0, 128,   0, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+       };
 -      if (yych <= 'S') {
 -              if (yych <= 'L') {
 -                      if (yych == 'A') goto yy227;
 -                      if (yych <= 'K') goto yy2;
 -                      goto yy226;
 -              } else {
 -                      if (yych <= 'O') {
 -                              if (yych <= 'N') goto yy2;
 -                              goto yy228;
 -                      } else {
 -                              if (yych <= 'Q') goto yy2;
 -                              if (yych <= 'R') goto yy225;
 -                              goto yy224;
 -                      }
 -              }
 -      } else {
 -              if (yych <= 'n') {
 -                      if (yych <= 'a') {
 -                              if (yych <= '`') goto yy2;
 -                              goto yy227;
 -                      } else {
 -                              if (yych == 'l') goto yy226;
 -                              goto yy2;
 -                      }
 -              } else {
 -                      if (yych <= 'q') {
 -                              if (yych <= 'o') goto yy228;
 -                              goto yy2;
 -                      } else {
 -                              if (yych <= 'r') goto yy225;
 -                              if (yych <= 's') goto yy224;
 -                              goto yy2;
 -                      }
 -              }
+       yych = *p;
+       switch (yych) {
+       case '\n':      goto yy2;
+       case 'A':
+       case 'a':       goto yy6;
+       case 'B':
+       case 'b':       goto yy24;
+       case 'C':
+       case 'c':       goto yy3;
+       case 'D':
+       case 'd':       goto yy4;
+       case 'E':
+       case 'e':       goto yy25;
+       case 'F':
+       case 'f':       goto yy7;
+       case 'G':
+       case 'g':       goto yy8;
+       case 'H':
+       case 'h':       goto yy9;
+       case 'I':
+       case 'i':       goto yy10;
+       case 'J':
+       case 'j':       goto yy5;
+       case 'K':
+       case 'k':       goto yy26;
+       case 'L':
+       case 'l':       goto yy11;
+       case 'M':
+       case 'm':       goto yy12;
+       case 'N':
+       case 'n':       goto yy13;
+       case 'O':
+       case 'o':       goto yy14;
+       case 'P':
+       case 'p':       goto yy15;
+       case 'Q':
+       case 'q':       goto yy27;
+       case 'R':
+       case 'r':       goto yy16;
+       case 'S':
+       case 's':       goto yy17;
+       case 'T':
+       case 't':       goto yy18;
+       case 'U':
+       case 'u':       goto yy19;
+       case 'V':
+       case 'v':       goto yy20;
+       case 'W':
+       case 'w':       goto yy21;
+       case 'X':
+       case 'x':       goto yy22;
+       case 'Y':
+       case 'y':       goto yy28;
+       case 'Z':
+       case 'z':       goto yy23;
+       default:        goto yy29;
+       }
+ yy2:
+       { return 0; }
+ yy3:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy442;
+       case 'H':
+       case 'h':       goto yy441;
+       case 'I':
+       case 'i':       goto yy444;
+       case 'O':
+       case 'o':       goto yy440;
+       case 'R':
+       case 'r':       goto yy443;
+       case 'V':
+       case 'v':       goto yy439;
+       default:        goto yy2;
+       }
+ yy4:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy415;
+       case 'I':
+       case 'i':       goto yy414;
+       case 'L':
+       case 'l':       goto yy412;
+       case 'N':
+       case 'n':       goto yy413;
+       case 'O':
+       case 'o':       goto yy416;
+       case 'T':
+       case 't':       goto yy411;
+       case 'V':
+       case 'v':       goto yy410;
+       default:        goto yy2;
+       }
+ yy5:
+       yych = *(marker = ++p);
+       if (yych <= 'M') {
+               if (yych == 'A') goto yy402;
+               if (yych <= 'L') goto yy2;
+               goto yy401;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy2;
+                       goto yy402;
+               } else {
+                       if (yych == 'm') goto yy401;
+                       goto yy2;
+               }
+       }
+ yy6:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy383;
+       case 'B':
+       case 'b':       goto yy382;
+       case 'C':
+       case 'c':       goto yy381;
+       case 'D':
+       case 'd':       goto yy380;
+       case 'F':
+       case 'f':       goto yy379;
+       case 'I':
+       case 'i':       goto yy378;
+       case 'P':
+       case 'p':       goto yy377;
+       case 'T':
+       case 't':       goto yy376;
+       case 'W':
+       case 'w':       goto yy34;
+       default:        goto yy2;
+       }
+ yy7:
+       yych = *(marker = ++p);
+       if (yych <= 'T') {
+               if (yych <= 'E') {
+                       if (yych == 'A') goto yy363;
+                       if (yych <= 'D') goto yy2;
+                       goto yy362;
+               } else {
+                       if (yych == 'I') goto yy361;
+                       if (yych <= 'S') goto yy2;
+                       goto yy364;
+               }
+       } else {
+               if (yych <= 'e') {
+                       if (yych == 'a') goto yy363;
+                       if (yych <= 'd') goto yy2;
+                       goto yy362;
+               } else {
+                       if (yych <= 'i') {
+                               if (yych <= 'h') goto yy2;
+                               goto yy361;
+                       } else {
+                               if (yych == 't') goto yy364;
+                               goto yy2;
+                       }
+               }
+       }
+ yy8:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'E':
+       case 'e':       goto yy346;
+       case 'G':
+       case 'g':       goto yy34;
+       case 'I':
+       case 'i':       goto yy344;
+       case 'O':
+       case 'o':       goto yy345;
+       case 'T':
+       case 't':       goto yy343;
+       default:        goto yy2;
+       }
+ yy9:
+       yych = *(marker = ++p);
+       if (yych <= 'S') {
+               if (yych <= '3') {
+                       if (yych <= '2') goto yy2;
+                       goto yy339;
+               } else {
+                       if (yych == 'C') goto yy337;
+                       goto yy2;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'T') goto yy338;
+                       if (yych <= 'b') goto yy2;
+                       goto yy337;
+               } else {
+                       if (yych == 't') goto yy338;
+                       goto yy2;
+               }
+       }
+ yy10:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy319;
+       case 'C':
+       case 'c':       goto yy316;
+       case 'M':
+       case 'm':       goto yy318;
+       case 'N':
+       case 'n':       goto yy317;
+       case 'P':
+       case 'p':       goto yy315;
+       case 'R':
+       case 'r':       goto yy314;
+       case 'T':
+       case 't':       goto yy313;
+       default:        goto yy2;
+       }
+ yy11:
+       yych = *(marker = ++p);
+       if (yych <= 'D') {
+               if (yych == 'A') goto yy307;
+               if (yych <= 'C') goto yy2;
+               goto yy306;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy2;
+                       goto yy307;
+               } else {
+                       if (yych == 'd') goto yy306;
+                       goto yy2;
+               }
+       }
+ yy12:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy273;
+       case 'E':
+       case 'e':       goto yy272;
+       case 'I':
+       case 'i':       goto yy275;
+       case 'M':
+       case 'm':       goto yy271;
+       case 'S':
+       case 's':       goto yy270;
+       case 'T':
+       case 't':       goto yy274;
+       case 'U':
+       case 'u':       goto yy269;
+       case 'V':
+       case 'v':       goto yy268;
+       default:        goto yy2;
+       }
+ yy13:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'E':
+       case 'e':       goto yy263;
+       case 'F':
+       case 'f':       goto yy262;
+       case 'I':
+       case 'i':       goto yy261;
+       case 'N':
+       case 'n':       goto yy260;
+       case 'O':
+       case 'o':       goto yy259;
+       default:        goto yy2;
+       }
+ yy14:
+       yych = *(marker = ++p);
+       if (yych <= 'P') {
+               if (yych == 'I') goto yy245;
+               if (yych <= 'O') goto yy2;
+               goto yy246;
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'h') goto yy2;
+                       goto yy245;
+               } else {
+                       if (yych == 'p') goto yy246;
+                       goto yy2;
+               }
+       }
+ yy15:
+       yych = *(marker = ++p);
 -                      if (yych >= '.') goto yy499;
++      switch (yych) {
++      case 'A':
++      case 'a':       goto yy227;
++      case 'L':
++      case 'l':       goto yy226;
++      case 'O':
++      case 'o':       goto yy228;
++      case 'R':
++      case 'r':       goto yy225;
++      case 'S':
++      case 's':       goto yy224;
++      default:        goto yy2;
+       }
+ yy16:
+       yych = *(marker = ++p);
+       if (yych <= 'T') {
+               if (yych <= 'L') {
+                       if (yych == 'E') goto yy214;
+                       goto yy2;
+               } else {
+                       if (yych <= 'M') goto yy213;
+                       if (yych <= 'R') goto yy2;
+                       if (yych <= 'S') goto yy212;
+                       goto yy211;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych == 'e') goto yy214;
+                       if (yych <= 'l') goto yy2;
+                       goto yy213;
+               } else {
+                       if (yych <= 'r') goto yy2;
+                       if (yych <= 's') goto yy212;
+                       if (yych <= 't') goto yy211;
+                       goto yy2;
+               }
+       }
+ yy17:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'E':
+       case 'e':       goto yy167;
+       case 'F':
+       case 'f':       goto yy166;
+       case 'G':
+       case 'g':       goto yy165;
+       case 'H':
+       case 'h':       goto yy170;
+       case 'I':
+       case 'i':       goto yy169;
+       case 'K':
+       case 'k':       goto yy164;
+       case 'M':
+       case 'm':       goto yy163;
+       case 'N':
+       case 'n':       goto yy168;
+       case 'O':
+       case 'o':       goto yy162;
+       case 'P':
+       case 'p':       goto yy161;
+       case 'S':
+       case 's':       goto yy160;
+       case 'T':
+       case 't':       goto yy159;
+       case 'V':
+       case 'v':       goto yy158;
+       default:        goto yy2;
+       }
+ yy18:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy134;
+       case 'E':
+       case 'e':       goto yy130;
+       case 'F':
+       case 'f':       goto yy133;
+       case 'H':
+       case 'h':       goto yy129;
+       case 'I':
+       case 'i':       goto yy131;
+       case 'N':
+       case 'n':       goto yy132;
+       case 'V':
+       case 'v':       goto yy34;
+       default:        goto yy2;
+       }
+ yy19:
+       yych = *(marker = ++p);
+       if (yych <= 'T') {
+               if (yych <= 'N') {
+                       if (yych == 'D') goto yy121;
+                       if (yych <= 'M') goto yy2;
+                       goto yy120;
+               } else {
+                       if (yych == 'R') goto yy122;
+                       if (yych <= 'S') goto yy2;
+                       goto yy119;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'd') goto yy121;
+                       if (yych <= 'm') goto yy2;
+                       goto yy120;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'q') goto yy2;
+                               goto yy122;
+                       } else {
+                               if (yych == 't') goto yy119;
+                               goto yy2;
+                       }
+               }
+       }
+ yy20:
+       yych = *(marker = ++p);
+       if (yych <= 'I') {
+               if (yych == 'E') goto yy103;
+               if (yych <= 'H') goto yy2;
+               goto yy102;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy2;
+                       goto yy103;
+               } else {
+                       if (yych == 'i') goto yy102;
+                       goto yy2;
+               }
+       }
+ yy21:
+       yych = *(marker = ++p);
+       if (yych <= 'Y') {
+               if (yych <= 'R') {
+                       if (yych == 'E') goto yy92;
+                       goto yy2;
+               } else {
+                       if (yych <= 'S') goto yy93;
+                       if (yych <= 'T') goto yy91;
+                       if (yych <= 'X') goto yy2;
+                       goto yy90;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych == 'e') goto yy92;
+                       if (yych <= 'r') goto yy2;
+                       goto yy93;
+               } else {
+                       if (yych <= 't') goto yy91;
+                       if (yych == 'y') goto yy90;
+                       goto yy2;
+               }
+       }
+ yy22:
+       yych = *(marker = ++p);
+       if (yych <= 'R') {
+               if (yych <= 'F') {
+                       if (yych == 'C') goto yy69;
+                       if (yych <= 'E') goto yy2;
+                       goto yy67;
+               } else {
+                       if (yych == 'M') goto yy68;
+                       if (yych <= 'Q') goto yy2;
+                       goto yy66;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych == 'c') goto yy69;
+                       if (yych <= 'e') goto yy2;
+                       goto yy67;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= 'l') goto yy2;
+                               goto yy68;
+                       } else {
+                               if (yych == 'r') goto yy66;
+                               goto yy2;
+                       }
+               }
+       }
+ yy23:
+       yych = *(marker = ++p);
+       if (yych == '3') goto yy61;
+       goto yy2;
+ yy24:
+       yych = *(marker = ++p);
+       if (yych <= 'O') {
+               if (yych <= 'H') {
+                       if (yych == 'E') goto yy51;
+                       goto yy2;
+               } else {
+                       if (yych <= 'I') goto yy50;
+                       if (yych <= 'N') goto yy2;
+                       goto yy49;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych == 'e') goto yy51;
+                       goto yy2;
+               } else {
+                       if (yych <= 'i') goto yy50;
+                       if (yych == 'o') goto yy49;
+                       goto yy2;
+               }
+       }
+ yy25:
+       yych = *(marker = ++p);
+       if (yych == 'D') goto yy47;
+       if (yych == 'd') goto yy47;
+       goto yy2;
+ yy26:
+       yych = *(marker = ++p);
+       if (yych == 'E') goto yy42;
+       if (yych == 'e') goto yy42;
+       goto yy2;
+ yy27:
+       yych = *(marker = ++p);
+       if (yych == 'U') goto yy39;
+       if (yych == 'u') goto yy39;
+       goto yy2;
+ yy28:
+       yych = *(marker = ++p);
+       if (yych == 'M') goto yy30;
+       if (yych == 'm') goto yy30;
+       goto yy2;
+ yy29:
+       yych = *++p;
+       goto yy2;
+ yy30:
+       yych = *++p;
+       if (yych == 'S') goto yy32;
+       if (yych == 's') goto yy32;
+ yy31:
+       p = marker;
+       goto yy2;
+ yy32:
+       yych = *++p;
+       if (yych == 'G') goto yy33;
+       if (yych != 'g') goto yy31;
+ yy33:
+       yych = *++p;
+       if (yych == 'R') goto yy34;
+       if (yych != 'r') goto yy31;
+ yy34:
+       yych = *++p;
+       if (yych != ':') goto yy31;
+ yy35:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy35;
+       }
+       if (yych <= '<') goto yy31;
+       ++p;
+       { return (p - start); }
+ yy39:
+       yych = *++p;
+       if (yych == 'E') goto yy40;
+       if (yych != 'e') goto yy31;
+ yy40:
+       yych = *++p;
+       if (yych == 'R') goto yy41;
+       if (yych != 'r') goto yy31;
+ yy41:
+       yych = *++p;
+       if (yych == 'Y') goto yy34;
+       if (yych == 'y') goto yy34;
+       goto yy31;
+ yy42:
+       yych = *++p;
+       if (yych == 'Y') goto yy43;
+       if (yych != 'y') goto yy31;
+ yy43:
+       yych = *++p;
+       if (yych == 'P') goto yy44;
+       if (yych != 'p') goto yy31;
+ yy44:
+       yych = *++p;
+       if (yych == 'A') goto yy45;
+       if (yych != 'a') goto yy31;
+ yy45:
+       yych = *++p;
+       if (yych == 'R') goto yy46;
+       if (yych != 'r') goto yy31;
+ yy46:
+       yych = *++p;
+       if (yych == 'C') goto yy34;
+       if (yych == 'c') goto yy34;
+       goto yy31;
+ yy47:
+       yych = *++p;
+       if (yych != '2') goto yy31;
+       yych = *++p;
+       if (yych == 'K') goto yy34;
+       if (yych == 'k') goto yy34;
+       goto yy31;
+ yy49:
+       yych = *++p;
+       if (yych == 'L') goto yy60;
+       if (yych == 'l') goto yy60;
+       goto yy31;
+ yy50:
+       yych = *++p;
+       if (yych == 'T') goto yy56;
+       if (yych == 't') goto yy56;
+       goto yy31;
+ yy51:
+       yych = *++p;
+       if (yych == 'S') goto yy52;
+       if (yych != 's') goto yy31;
+ yy52:
+       yych = *++p;
+       if (yych == 'H') goto yy53;
+       if (yych != 'h') goto yy31;
+ yy53:
+       yych = *++p;
+       if (yych == 'A') goto yy54;
+       if (yych != 'a') goto yy31;
+ yy54:
+       yych = *++p;
+       if (yych == 'R') goto yy55;
+       if (yych != 'r') goto yy31;
+ yy55:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy56:
+       yych = *++p;
+       if (yych == 'C') goto yy57;
+       if (yych != 'c') goto yy31;
+ yy57:
+       yych = *++p;
+       if (yych == 'O') goto yy58;
+       if (yych != 'o') goto yy31;
+ yy58:
+       yych = *++p;
+       if (yych == 'I') goto yy59;
+       if (yych != 'i') goto yy31;
+ yy59:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy60:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy61:
+       yych = *++p;
+       if (yych != '9') goto yy31;
+       yych = *++p;
+       if (yych != '.') goto yy31;
+       yych = *++p;
+       if (yych != '5') goto yy31;
+       yych = *++p;
+       if (yych != '0') goto yy31;
+       yych = *++p;
+       if (yych <= 'Q') goto yy31;
+       if (yych <= 'S') goto yy34;
+       if (yych <= 'q') goto yy31;
+       if (yych <= 's') goto yy34;
+       goto yy31;
+ yy66:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy67:
+       yych = *++p;
+       if (yych == 'I') goto yy88;
+       if (yych == 'i') goto yy88;
+       goto yy31;
+ yy68:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'L') goto yy78;
+               if (yych <= 'O') goto yy31;
+               goto yy79;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy31;
+                       goto yy78;
+               } else {
+                       if (yych == 'p') goto yy79;
+                       goto yy31;
+               }
+       }
+ yy69:
+       yych = *++p;
+       if (yych == 'O') goto yy70;
+       if (yych != 'o') goto yy31;
+ yy70:
+       yych = *++p;
+       if (yych == 'N') goto yy71;
+       if (yych != 'n') goto yy31;
+ yy71:
+       yych = *++p;
+       if (yych == '-') goto yy72;
+       if (yych == ':') goto yy35;
+       goto yy31;
+ yy72:
+       yych = *++p;
+       if (yych == 'U') goto yy73;
+       if (yych != 'u') goto yy31;
+ yy73:
+       yych = *++p;
+       if (yych == 'S') goto yy74;
+       if (yych != 's') goto yy31;
+ yy74:
+       yych = *++p;
+       if (yych == 'E') goto yy75;
+       if (yych != 'e') goto yy31;
+ yy75:
+       yych = *++p;
+       if (yych == 'R') goto yy76;
+       if (yych != 'r') goto yy31;
+ yy76:
+       yych = *++p;
+       if (yych == 'I') goto yy77;
+       if (yych != 'i') goto yy31;
+ yy77:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy78:
+       yych = *++p;
+       if (yych == 'R') goto yy80;
+       if (yych == 'r') goto yy80;
+       goto yy31;
+ yy79:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy80:
+       yych = *++p;
+       if (yych == 'P') goto yy81;
+       if (yych != 'p') goto yy31;
+ yy81:
+       yych = *++p;
+       if (yych == 'C') goto yy82;
+       if (yych != 'c') goto yy31;
+ yy82:
+       yych = *++p;
+       if (yych != '.') goto yy31;
+       yych = *++p;
+       if (yych == 'B') goto yy84;
+       if (yych != 'b') goto yy31;
+ yy84:
+       yych = *++p;
+       if (yych == 'E') goto yy85;
+       if (yych != 'e') goto yy31;
+ yy85:
+       yych = *++p;
+       if (yych == 'E') goto yy86;
+       if (yych != 'e') goto yy31;
+ yy86:
+       yych = *++p;
+       if (yych == 'P') goto yy87;
+       if (yych != 'p') goto yy31;
+ yy87:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy88:
+       yych = *++p;
+       if (yych == 'R') goto yy89;
+       if (yych != 'r') goto yy31;
+ yy89:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy90:
+       yych = *++p;
+       if (yych == 'C') goto yy98;
+       if (yych == 'c') goto yy98;
+       goto yy31;
+ yy91:
+       yych = *++p;
+       if (yych == 'A') goto yy97;
+       if (yych == 'a') goto yy97;
+       goto yy31;
+ yy92:
+       yych = *++p;
+       if (yych == 'B') goto yy94;
+       if (yych == 'b') goto yy94;
+       goto yy31;
+ yy93:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy94:
+       yych = *++p;
+       if (yych == 'C') goto yy95;
+       if (yych != 'c') goto yy31;
+ yy95:
+       yych = *++p;
+       if (yych == 'A') goto yy96;
+       if (yych != 'a') goto yy31;
+ yy96:
+       yych = *++p;
+       if (yych == 'L') goto yy34;
+       if (yych == 'l') goto yy34;
+       goto yy31;
+ yy97:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy98:
+       yych = *++p;
+       if (yych == 'I') goto yy99;
+       if (yych != 'i') goto yy31;
+ yy99:
+       yych = *++p;
+       if (yych == 'W') goto yy100;
+       if (yych != 'w') goto yy31;
+ yy100:
+       yych = *++p;
+       if (yych == 'Y') goto yy101;
+       if (yych != 'y') goto yy31;
+ yy101:
+       yych = *++p;
+       if (yych == 'G') goto yy34;
+       if (yych == 'g') goto yy34;
+       goto yy31;
+ yy102:
+       yych = *++p;
+       if (yych == 'E') goto yy111;
+       if (yych == 'e') goto yy111;
+       goto yy31;
+ yy103:
+       yych = *++p;
+       if (yych <= 'N') {
+               if (yych <= 'L') goto yy31;
+               if (yych >= 'N') goto yy105;
+       } else {
+               if (yych <= 'l') goto yy31;
+               if (yych <= 'm') goto yy104;
+               if (yych <= 'n') goto yy105;
+               goto yy31;
+       }
+ yy104:
+       yych = *++p;
+       if (yych == 'M') goto yy110;
+       if (yych == 'm') goto yy110;
+       goto yy31;
+ yy105:
+       yych = *++p;
+       if (yych == 'T') goto yy106;
+       if (yych != 't') goto yy31;
+ yy106:
+       yych = *++p;
+       if (yych == 'R') goto yy107;
+       if (yych != 'r') goto yy31;
+ yy107:
+       yych = *++p;
+       if (yych == 'I') goto yy108;
+       if (yych != 'i') goto yy31;
+ yy108:
+       yych = *++p;
+       if (yych == 'L') goto yy109;
+       if (yych != 'l') goto yy31;
+ yy109:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy110:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy111:
+       yych = *++p;
+       if (yych == 'W') goto yy112;
+       if (yych != 'w') goto yy31;
+ yy112:
+       yych = *++p;
+       if (yych != '-') goto yy31;
+       yych = *++p;
+       if (yych == 'S') goto yy114;
+       if (yych != 's') goto yy31;
+ yy114:
+       yych = *++p;
+       if (yych == 'O') goto yy115;
+       if (yych != 'o') goto yy31;
+ yy115:
+       yych = *++p;
+       if (yych == 'U') goto yy116;
+       if (yych != 'u') goto yy31;
+ yy116:
+       yych = *++p;
+       if (yych == 'R') goto yy117;
+       if (yych != 'r') goto yy31;
+ yy117:
+       yych = *++p;
+       if (yych == 'C') goto yy118;
+       if (yych != 'c') goto yy31;
+ yy118:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy119:
+       yych = *++p;
+       if (yych == '2') goto yy126;
+       goto yy31;
+ yy120:
+       yych = *++p;
+       if (yych == 'R') goto yy123;
+       if (yych == 'r') goto yy123;
+       goto yy31;
+ yy121:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy122:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy123:
+       yych = *++p;
+       if (yych == 'E') goto yy124;
+       if (yych != 'e') goto yy31;
+ yy124:
+       yych = *++p;
+       if (yych == 'A') goto yy125;
+       if (yych != 'a') goto yy31;
+ yy125:
+       yych = *++p;
+       if (yych == 'L') goto yy34;
+       if (yych == 'l') goto yy34;
+       goto yy31;
+ yy126:
+       yych = *++p;
+       if (yych != '0') goto yy31;
+       yych = *++p;
+       if (yych != '0') goto yy31;
+       yych = *++p;
+       if (yych == '4') goto yy34;
+       goto yy31;
+ yy129:
+       yych = *++p;
+       if (yych == 'I') goto yy148;
+       if (yych == 'i') goto yy148;
+       goto yy31;
+ yy130:
+       yych = *++p;
+       if (yych <= 'L') {
+               if (yych == 'A') goto yy140;
+               if (yych <= 'K') goto yy31;
+               goto yy139;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy31;
+                       goto yy140;
+               } else {
+                       if (yych == 'l') goto yy139;
+                       goto yy31;
+               }
+       }
+ yy131:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy132:
+       yych = *++p;
+       if (yych == '3') goto yy136;
+       goto yy31;
+ yy133:
+       yych = *++p;
+       if (yych == 'T') goto yy135;
+       if (yych == 't') goto yy135;
+       goto yy31;
+ yy134:
+       yych = *++p;
+       if (yych == 'G') goto yy34;
+       if (yych == 'g') goto yy34;
+       goto yy31;
+ yy135:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy136:
+       yych = *++p;
+       if (yych != '2') goto yy31;
+       yych = *++p;
+       if (yych != '7') goto yy31;
+       yych = *++p;
+       if (yych == '0') goto yy34;
+       goto yy31;
+ yy139:
+       yych = *++p;
+       if (yych <= 'M') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'N') goto yy146;
+               if (yych == 'n') goto yy146;
+               goto yy31;
+       }
+ yy140:
+       yych = *++p;
+       if (yych == 'M') goto yy141;
+       if (yych != 'm') goto yy31;
+ yy141:
+       yych = *++p;
+       if (yych == 'S') goto yy142;
+       if (yych != 's') goto yy31;
+ yy142:
+       yych = *++p;
+       if (yych == 'P') goto yy143;
+       if (yych != 'p') goto yy31;
+ yy143:
+       yych = *++p;
+       if (yych == 'E') goto yy144;
+       if (yych != 'e') goto yy31;
+ yy144:
+       yych = *++p;
+       if (yych == 'A') goto yy145;
+       if (yych != 'a') goto yy31;
+ yy145:
+       yych = *++p;
+       if (yych == 'K') goto yy34;
+       if (yych == 'k') goto yy34;
+       goto yy31;
+ yy146:
+       yych = *++p;
+       if (yych == 'E') goto yy147;
+       if (yych != 'e') goto yy31;
+ yy147:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy148:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych == 'N') goto yy149;
+               if (yych <= 'R') goto yy31;
+               goto yy150;
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'm') goto yy31;
+               } else {
+                       if (yych == 's') goto yy150;
+                       goto yy31;
+               }
+       }
+ yy149:
+       yych = *++p;
+       if (yych == 'G') goto yy157;
+       if (yych == 'g') goto yy157;
+       goto yy31;
+ yy150:
+       yych = *++p;
+       if (yych == 'M') goto yy151;
+       if (yych != 'm') goto yy31;
+ yy151:
+       yych = *++p;
+       if (yych == 'E') goto yy152;
+       if (yych != 'e') goto yy31;
+ yy152:
+       yych = *++p;
+       if (yych == 'S') goto yy153;
+       if (yych != 's') goto yy31;
+ yy153:
+       yych = *++p;
+       if (yych == 'S') goto yy154;
+       if (yych != 's') goto yy31;
+ yy154:
+       yych = *++p;
+       if (yych == 'A') goto yy155;
+       if (yych != 'a') goto yy31;
+ yy155:
+       yych = *++p;
+       if (yych == 'G') goto yy156;
+       if (yych != 'g') goto yy31;
+ yy156:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy157:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy158:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy159:
+       yych = *++p;
+       if (yych == 'E') goto yy209;
+       if (yych == 'e') goto yy209;
+       goto yy31;
+ yy160:
+       yych = *++p;
+       if (yych == 'H') goto yy34;
+       if (yych == 'h') goto yy34;
+       goto yy31;
+ yy161:
+       yych = *++p;
+       if (yych == 'O') goto yy205;
+       if (yych == 'o') goto yy205;
+       goto yy31;
+ yy162:
+       yych = *++p;
+       if (yych <= 'L') {
+               if (yych == 'A') goto yy195;
+               if (yych <= 'K') goto yy31;
+               goto yy196;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy31;
+                       goto yy195;
+               } else {
+                       if (yych == 'l') goto yy196;
+                       goto yy31;
+               }
+       }
+ yy163:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych == 'B') goto yy34;
+               if (yych <= 'R') goto yy31;
+               goto yy34;
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= 'a') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych == 's') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy164:
+       yych = *++p;
+       if (yych == 'Y') goto yy193;
+       if (yych == 'y') goto yy193;
+       goto yy31;
+ yy165:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy166:
+       yych = *++p;
+       if (yych == 'T') goto yy192;
+       if (yych == 't') goto yy192;
+       goto yy31;
+ yy167:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych <= 'C') {
+                       if (yych <= 'B') goto yy31;
+                       goto yy179;
+               } else {
+                       if (yych <= 'Q') goto yy31;
+                       if (yych <= 'R') goto yy177;
+                       goto yy178;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych == 'c') goto yy179;
+                       goto yy31;
+               } else {
+                       if (yych <= 'r') goto yy177;
+                       if (yych <= 's') goto yy178;
+                       goto yy31;
+               }
+       }
+ yy168:
+       yych = *++p;
+       if (yych == 'M') goto yy176;
+       if (yych == 'm') goto yy176;
+       goto yy31;
+ yy169:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'E') goto yy173;
+               if (yych <= 'O') goto yy31;
+               goto yy174;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy31;
+                       goto yy173;
+               } else {
+                       if (yych == 'p') goto yy174;
+                       goto yy31;
+               }
+       }
+ yy170:
+       yych = *++p;
+       if (yych == 'T') goto yy171;
+       if (yych != 't') goto yy31;
+ yy171:
+       yych = *++p;
+       if (yych == 'T') goto yy172;
+       if (yych != 't') goto yy31;
+ yy172:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy173:
+       yych = *++p;
+       if (yych == 'V') goto yy175;
+       if (yych == 'v') goto yy175;
+       goto yy31;
+ yy174:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy175:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy176:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy177:
+       yych = *++p;
+       if (yych == 'V') goto yy189;
+       if (yych == 'v') goto yy189;
+       goto yy31;
+ yy178:
+       yych = *++p;
+       if (yych == 'S') goto yy186;
+       if (yych == 's') goto yy186;
+       goto yy31;
+ yy179:
+       yych = *++p;
+       if (yych == 'O') goto yy180;
+       if (yych != 'o') goto yy31;
+ yy180:
+       yych = *++p;
+       if (yych == 'N') goto yy181;
+       if (yych != 'n') goto yy31;
+ yy181:
+       yych = *++p;
+       if (yych == 'D') goto yy182;
+       if (yych != 'd') goto yy31;
+ yy182:
+       yych = *++p;
+       if (yych == 'L') goto yy183;
+       if (yych != 'l') goto yy31;
+ yy183:
+       yych = *++p;
+       if (yych == 'I') goto yy184;
+       if (yych != 'i') goto yy31;
+ yy184:
+       yych = *++p;
+       if (yych == 'F') goto yy185;
+       if (yych != 'f') goto yy31;
+ yy185:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy186:
+       yych = *++p;
+       if (yych == 'I') goto yy187;
+       if (yych != 'i') goto yy31;
+ yy187:
+       yych = *++p;
+       if (yych == 'O') goto yy188;
+       if (yych != 'o') goto yy31;
+ yy188:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy189:
+       yych = *++p;
+       if (yych == 'I') goto yy190;
+       if (yych != 'i') goto yy31;
+ yy190:
+       yych = *++p;
+       if (yych == 'C') goto yy191;
+       if (yych != 'c') goto yy31;
+ yy191:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy192:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy193:
+       yych = *++p;
+       if (yych == 'P') goto yy194;
+       if (yych != 'p') goto yy31;
+ yy194:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy195:
+       yych = *++p;
+       if (yych == 'P') goto yy199;
+       if (yych == 'p') goto yy199;
+       goto yy31;
+ yy196:
+       yych = *++p;
+       if (yych == 'D') goto yy197;
+       if (yych != 'd') goto yy31;
+ yy197:
+       yych = *++p;
+       if (yych == 'A') goto yy198;
+       if (yych != 'a') goto yy31;
+ yy198:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy199:
+       yych = *++p;
+       if (yych != '.') goto yy31;
+       yych = *++p;
+       if (yych == 'B') goto yy201;
+       if (yych != 'b') goto yy31;
+ yy201:
+       yych = *++p;
+       if (yych == 'E') goto yy202;
+       if (yych != 'e') goto yy31;
+ yy202:
+       yych = *++p;
+       if (yych == 'E') goto yy203;
+       if (yych != 'e') goto yy31;
+ yy203:
+       yych = *++p;
+       if (yych == 'P') goto yy204;
+       if (yych != 'p') goto yy31;
+ yy204:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy205:
+       yych = *++p;
+       if (yych == 'T') goto yy206;
+       if (yych != 't') goto yy31;
+ yy206:
+       yych = *++p;
+       if (yych == 'I') goto yy207;
+       if (yych != 'i') goto yy31;
+ yy207:
+       yych = *++p;
+       if (yych == 'F') goto yy208;
+       if (yych != 'f') goto yy31;
+ yy208:
+       yych = *++p;
+       if (yych == 'Y') goto yy34;
+       if (yych == 'y') goto yy34;
+       goto yy31;
+ yy209:
+       yych = *++p;
+       if (yych == 'A') goto yy210;
+       if (yych != 'a') goto yy31;
+ yy210:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy211:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych == 'M') goto yy223;
+               if (yych <= 'R') goto yy31;
+               goto yy222;
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'l') goto yy31;
+                       goto yy223;
+               } else {
+                       if (yych == 's') goto yy222;
+                       goto yy31;
+               }
+       }
+ yy212:
+       yych = *++p;
+       if (yych == 'Y') goto yy220;
+       if (yych == 'y') goto yy220;
+       goto yy31;
+ yy213:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy214:
+       yych = *++p;
+       if (yych == 'S') goto yy215;
+       if (yych != 's') goto yy31;
+ yy215:
+       yych = *++p;
+       if (yych <= 'N') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'O') goto yy216;
+               if (yych != 'o') goto yy31;
+       }
+ yy216:
+       yych = *++p;
+       if (yych == 'U') goto yy217;
+       if (yych != 'u') goto yy31;
+ yy217:
+       yych = *++p;
+       if (yych == 'R') goto yy218;
+       if (yych != 'r') goto yy31;
+ yy218:
+       yych = *++p;
+       if (yych == 'C') goto yy219;
+       if (yych != 'c') goto yy31;
+ yy219:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy220:
+       yych = *++p;
+       if (yych == 'N') goto yy221;
+       if (yych != 'n') goto yy31;
+ yy221:
+       yych = *++p;
+       if (yych == 'C') goto yy34;
+       if (yych == 'c') goto yy34;
+       goto yy31;
+ yy222:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy223:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy224:
+       yych = *++p;
+       if (yych == 'Y') goto yy244;
+       if (yych == 'y') goto yy244;
+       goto yy31;
+ yy225:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'E') goto yy241;
+               if (yych <= 'N') goto yy31;
+               goto yy242;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy31;
+                       goto yy241;
+               } else {
+                       if (yych == 'o') goto yy242;
+                       goto yy31;
+               }
+       }
+ yy226:
+       yych = *++p;
+       if (yych == 'A') goto yy236;
+       if (yych == 'a') goto yy236;
+       goto yy31;
+ yy227:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'L') goto yy229;
+               if (yych <= 'O') goto yy31;
+               goto yy230;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy31;
+                       goto yy229;
+               } else {
+                       if (yych == 'p') goto yy230;
+                       goto yy31;
+               }
+       }
+ yy228:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy229:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy230:
+       yych = *++p;
+       if (yych == 'A') goto yy231;
+       if (yych != 'a') goto yy31;
+ yy231:
+       yych = *++p;
+       if (yych == 'R') goto yy232;
+       if (yych != 'r') goto yy31;
+ yy232:
+       yych = *++p;
+       if (yych == 'A') goto yy233;
+       if (yych != 'a') goto yy31;
+ yy233:
+       yych = *++p;
+       if (yych == 'Z') goto yy234;
+       if (yych != 'z') goto yy31;
+ yy234:
+       yych = *++p;
+       if (yych == 'Z') goto yy235;
+       if (yych != 'z') goto yy31;
+ yy235:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy236:
+       yych = *++p;
+       if (yych == 'T') goto yy237;
+       if (yych != 't') goto yy31;
+ yy237:
+       yych = *++p;
+       if (yych == 'F') goto yy238;
+       if (yych != 'f') goto yy31;
+ yy238:
+       yych = *++p;
+       if (yych == 'O') goto yy239;
+       if (yych != 'o') goto yy31;
+ yy239:
+       yych = *++p;
+       if (yych == 'R') goto yy240;
+       if (yych != 'r') goto yy31;
+ yy240:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy241:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy242:
+       yych = *++p;
+       if (yych == 'X') goto yy243;
+       if (yych != 'x') goto yy31;
+ yy243:
+       yych = *++p;
+       if (yych == 'Y') goto yy34;
+       if (yych == 'y') goto yy34;
+       goto yy31;
+ yy244:
+       yych = *++p;
+       if (yych == 'C') goto yy34;
+       if (yych == 'c') goto yy34;
+       goto yy31;
+ yy245:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy246:
+       yych = *++p;
+       if (yych == 'A') goto yy247;
+       if (yych != 'a') goto yy31;
+ yy247:
+       yych = *++p;
+       if (yych == 'Q') goto yy248;
+       if (yych != 'q') goto yy31;
+ yy248:
+       yych = *++p;
+       if (yych == 'U') goto yy249;
+       if (yych != 'u') goto yy31;
+ yy249:
+       yych = *++p;
+       if (yych == 'E') goto yy250;
+       if (yych != 'e') goto yy31;
+ yy250:
+       yych = *++p;
+       if (yych == 'L') goto yy251;
+       if (yych != 'l') goto yy31;
+ yy251:
+       yych = *++p;
+       if (yych == 'O') goto yy252;
+       if (yych != 'o') goto yy31;
+ yy252:
+       yych = *++p;
+       if (yych == 'C') goto yy253;
+       if (yych != 'c') goto yy31;
+ yy253:
+       yych = *++p;
+       if (yych == 'K') goto yy254;
+       if (yych != 'k') goto yy31;
+ yy254:
+       yych = *++p;
+       if (yych == 'T') goto yy255;
+       if (yych != 't') goto yy31;
+ yy255:
+       yych = *++p;
+       if (yych == 'O') goto yy256;
+       if (yych != 'o') goto yy31;
+ yy256:
+       yych = *++p;
+       if (yych == 'K') goto yy257;
+       if (yych != 'k') goto yy31;
+ yy257:
+       yych = *++p;
+       if (yych == 'E') goto yy258;
+       if (yych != 'e') goto yy31;
+ yy258:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy259:
+       yych = *++p;
+       if (yych == 'T') goto yy266;
+       if (yych == 't') goto yy266;
+       goto yy31;
+ yy260:
+       yych = *++p;
+       if (yych == 'T') goto yy265;
+       if (yych == 't') goto yy265;
+       goto yy31;
+ yy261:
+       yych = *++p;
+       if (yych <= 'G') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'H') goto yy34;
+               if (yych == 'h') goto yy34;
+               goto yy31;
+       }
+ yy262:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy263:
+       yych = *++p;
+       if (yych == 'W') goto yy264;
+       if (yych != 'w') goto yy31;
+ yy264:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy265:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy266:
+       yych = *++p;
+       if (yych == 'E') goto yy267;
+       if (yych != 'e') goto yy31;
+ yy267:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy268:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy269:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'M') goto yy300;
+               if (yych <= 'O') goto yy31;
+               goto yy299;
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'l') goto yy31;
+                       goto yy300;
+               } else {
+                       if (yych == 'p') goto yy299;
+                       goto yy31;
+               }
+       }
+ yy270:
+       yych = *++p;
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych <= ',') goto yy31;
+                       goto yy292;
+               } else {
+                       if (yych == 'N') goto yy293;
+                       goto yy31;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'R') goto yy291;
+                       if (yych <= 'm') goto yy31;
+                       goto yy293;
+               } else {
+                       if (yych == 'r') goto yy291;
+                       goto yy31;
+               }
+       }
+ yy271:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy272:
+       yych = *++p;
+       if (yych == 'S') goto yy287;
+       if (yych == 's') goto yy287;
+       goto yy31;
+ yy273:
+       yych = *++p;
+       switch (yych) {
+       case 'G':
+       case 'g':       goto yy278;
+       case 'I':
+       case 'i':       goto yy277;
+       case 'P':
+       case 'p':       goto yy279;
+       case 'R':
+       case 'r':       goto yy280;
+       default:        goto yy31;
+       }
+ yy274:
+       yych = *++p;
+       if (yych == 'Q') goto yy276;
+       if (yych == 'q') goto yy276;
+       goto yy31;
+ yy275:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy276:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy277:
+       yych = *++p;
+       if (yych == 'L') goto yy285;
+       if (yych == 'l') goto yy285;
+       goto yy31;
+ yy278:
+       yych = *++p;
+       if (yych == 'N') goto yy283;
+       if (yych == 'n') goto yy283;
+       goto yy31;
+ yy279:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy280:
+       yych = *++p;
+       if (yych == 'K') goto yy281;
+       if (yych != 'k') goto yy31;
+ yy281:
+       yych = *++p;
+       if (yych == 'E') goto yy282;
+       if (yych != 'e') goto yy31;
+ yy282:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy283:
+       yych = *++p;
+       if (yych == 'E') goto yy284;
+       if (yych != 'e') goto yy31;
+ yy284:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy285:
+       yych = *++p;
+       if (yych == 'T') goto yy286;
+       if (yych != 't') goto yy31;
+ yy286:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy287:
+       yych = *++p;
+       if (yych == 'S') goto yy288;
+       if (yych != 's') goto yy31;
+ yy288:
+       yych = *++p;
+       if (yych == 'A') goto yy289;
+       if (yych != 'a') goto yy31;
+ yy289:
+       yych = *++p;
+       if (yych == 'G') goto yy290;
+       if (yych != 'g') goto yy31;
+ yy290:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy291:
+       yych = *++p;
+       if (yych == 'P') goto yy298;
+       if (yych == 'p') goto yy298;
+       goto yy31;
+ yy292:
+       yych = *++p;
+       if (yych == 'H') goto yy295;
+       if (yych == 'h') goto yy295;
+       goto yy31;
+ yy293:
+       yych = *++p;
+       if (yych == 'I') goto yy294;
+       if (yych != 'i') goto yy31;
+ yy294:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy295:
+       yych = *++p;
+       if (yych == 'E') goto yy296;
+       if (yych != 'e') goto yy31;
+ yy296:
+       yych = *++p;
+       if (yych == 'L') goto yy297;
+       if (yych != 'l') goto yy31;
+ yy297:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy298:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy299:
+       yych = *++p;
+       if (yych == 'D') goto yy303;
+       if (yych == 'd') goto yy303;
+       goto yy31;
+ yy300:
+       yych = *++p;
+       if (yych == 'B') goto yy301;
+       if (yych != 'b') goto yy31;
+ yy301:
+       yych = *++p;
+       if (yych == 'L') goto yy302;
+       if (yych != 'l') goto yy31;
+ yy302:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy303:
+       yych = *++p;
+       if (yych == 'A') goto yy304;
+       if (yych != 'a') goto yy31;
+ yy304:
+       yych = *++p;
+       if (yych == 'T') goto yy305;
+       if (yych != 't') goto yy31;
+ yy305:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy306:
+       yych = *++p;
+       if (yych == 'A') goto yy311;
+       if (yych == 'a') goto yy311;
+       goto yy31;
+ yy307:
+       yych = *++p;
+       if (yych == 'S') goto yy308;
+       if (yych != 's') goto yy31;
+ yy308:
+       yych = *++p;
+       if (yych == 'T') goto yy309;
+       if (yych != 't') goto yy31;
+ yy309:
+       yych = *++p;
+       if (yych == 'F') goto yy310;
+       if (yych != 'f') goto yy31;
+ yy310:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy311:
+       yych = *++p;
+       if (yych == 'P') goto yy312;
+       if (yych != 'p') goto yy31;
+ yy312:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy313:
+       yych = *++p;
+       if (yych == 'M') goto yy336;
+       if (yych == 'm') goto yy336;
+       goto yy31;
+ yy314:
+       yych = *++p;
+       if (yych <= 'I') {
+               if (yych == 'C') goto yy325;
+               if (yych <= 'H') goto yy31;
+               goto yy324;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy31;
+                       goto yy325;
+               } else {
+                       if (yych == 'i') goto yy324;
+                       goto yy31;
+               }
+       }
+ yy315:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'N') goto yy34;
+               if (yych <= 'O') goto yy31;
+               goto yy34;
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'm') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych == 'p') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy316:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'A') goto yy322;
+               if (yych <= 'N') goto yy31;
+               goto yy323;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy31;
+                       goto yy322;
+               } else {
+                       if (yych == 'o') goto yy323;
+                       goto yy31;
+               }
+       }
+ yy317:
+       yych = *++p;
+       if (yych == 'F') goto yy321;
+       if (yych == 'f') goto yy321;
+       goto yy31;
+ yy318:
+       yych = *++p;
+       if (yych <= '@') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'A') goto yy320;
+               if (yych == 'a') goto yy320;
+               goto yy31;
+       }
+ yy319:
+       yych = *++p;
+       if (yych == 'X') goto yy34;
+       if (yych == 'x') goto yy34;
+       goto yy31;
+ yy320:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy321:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy322:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy323:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy324:
+       yych = *++p;
+       if (yych == 'S') goto yy326;
+       if (yych == 's') goto yy326;
+       goto yy31;
+ yy325:
+       yych = *++p;
+       if (yych <= ':') {
+               if (yych == '6') goto yy34;
+               if (yych <= '9') goto yy31;
+               goto yy35;
+       } else {
+               if (yych <= 'S') {
+                       if (yych <= 'R') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych == 's') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy326:
+       yych = *++p;
+       if (yych == '.') goto yy327;
+       if (yych == ':') goto yy35;
+       goto yy31;
+ yy327:
+       yych = *++p;
+       if (yych <= 'X') {
+               if (yych <= 'K') {
+                       if (yych == 'B') goto yy330;
+                       goto yy31;
+               } else {
+                       if (yych <= 'L') goto yy328;
+                       if (yych <= 'W') goto yy31;
+                       goto yy329;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych == 'b') goto yy330;
+                       goto yy31;
+               } else {
+                       if (yych <= 'l') goto yy328;
+                       if (yych == 'x') goto yy329;
+                       goto yy31;
+               }
+       }
+ yy328:
+       yych = *++p;
+       if (yych == 'W') goto yy335;
+       if (yych == 'w') goto yy335;
+       goto yy31;
+ yy329:
+       yych = *++p;
+       if (yych == 'P') goto yy333;
+       if (yych == 'p') goto yy333;
+       goto yy31;
+ yy330:
+       yych = *++p;
+       if (yych == 'E') goto yy331;
+       if (yych != 'e') goto yy31;
+ yy331:
+       yych = *++p;
+       if (yych == 'E') goto yy332;
+       if (yych != 'e') goto yy31;
+ yy332:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy333:
+       yych = *++p;
+       if (yych == 'C') goto yy334;
+       if (yych != 'c') goto yy31;
+ yy334:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy335:
+       yych = *++p;
+       if (yych == 'Z') goto yy34;
+       if (yych == 'z') goto yy34;
+       goto yy31;
+ yy336:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy337:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy338:
+       yych = *++p;
+       if (yych == 'T') goto yy341;
+       if (yych == 't') goto yy341;
+       goto yy31;
+ yy339:
+       yych = *++p;
+       if (yych != '2') goto yy31;
+       yych = *++p;
+       if (yych == '3') goto yy34;
+       goto yy31;
+ yy341:
+       yych = *++p;
+       if (yych == 'P') goto yy342;
+       if (yych != 'p') goto yy31;
+ yy342:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy343:
+       yych = *++p;
+       if (yych == 'A') goto yy359;
+       if (yych == 'a') goto yy359;
+       goto yy31;
+ yy344:
+       yych = *++p;
+       if (yych <= 'Z') {
+               if (yych == 'T') goto yy34;
+               if (yych <= 'Y') goto yy31;
+               goto yy350;
+       } else {
+               if (yych <= 't') {
+                       if (yych <= 's') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych == 'z') goto yy350;
+                       goto yy31;
+               }
+       }
+ yy345:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'P') goto yy347;
+               if (yych == 'p') goto yy347;
+               goto yy31;
+       }
+ yy346:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy347:
+       yych = *++p;
+       if (yych == 'H') goto yy348;
+       if (yych != 'h') goto yy31;
+ yy348:
+       yych = *++p;
+       if (yych == 'E') goto yy349;
+       if (yych != 'e') goto yy31;
+ yy349:
+       yych = *++p;
+       if (yych == 'R') goto yy34;
+       if (yych == 'r') goto yy34;
+       goto yy31;
+ yy350:
+       yych = *++p;
+       if (yych == 'M') goto yy351;
+       if (yych != 'm') goto yy31;
+ yy351:
+       yych = *++p;
+       if (yych == 'O') goto yy352;
+       if (yych != 'o') goto yy31;
+ yy352:
+       yych = *++p;
+       if (yych == 'P') goto yy353;
+       if (yych != 'p') goto yy31;
+ yy353:
+       yych = *++p;
+       if (yych == 'R') goto yy354;
+       if (yych != 'r') goto yy31;
+ yy354:
+       yych = *++p;
+       if (yych == 'O') goto yy355;
+       if (yych != 'o') goto yy31;
+ yy355:
+       yych = *++p;
+       if (yych == 'J') goto yy356;
+       if (yych != 'j') goto yy31;
+ yy356:
+       yych = *++p;
+       if (yych == 'E') goto yy357;
+       if (yych != 'e') goto yy31;
+ yy357:
+       yych = *++p;
+       if (yych == 'C') goto yy358;
+       if (yych != 'c') goto yy31;
+ yy358:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy359:
+       yych = *++p;
+       if (yych == 'L') goto yy360;
+       if (yych != 'l') goto yy31;
+ yy360:
+       yych = *++p;
+       if (yych == 'K') goto yy34;
+       if (yych == 'k') goto yy34;
+       goto yy31;
+ yy361:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych <= 'M') {
+                       if (yych == 'L') goto yy371;
+                       goto yy31;
+               } else {
+                       if (yych <= 'N') goto yy372;
+                       if (yych <= 'R') goto yy31;
+                       goto yy373;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych == 'l') goto yy371;
+                       goto yy31;
+               } else {
+                       if (yych <= 'n') goto yy372;
+                       if (yych == 's') goto yy373;
+                       goto yy31;
+               }
+       }
+ yy362:
+       yych = *++p;
+       if (yych == 'E') goto yy370;
+       if (yych == 'e') goto yy370;
+       goto yy31;
+ yy363:
+       yych = *++p;
+       if (yych == 'C') goto yy365;
+       if (yych == 'c') goto yy365;
+       goto yy31;
+ yy364:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy365:
+       yych = *++p;
+       if (yych == 'E') goto yy366;
+       if (yych != 'e') goto yy31;
+ yy366:
+       yych = *++p;
+       if (yych == 'T') goto yy367;
+       if (yych != 't') goto yy31;
+ yy367:
+       yych = *++p;
+       if (yych == 'I') goto yy368;
+       if (yych != 'i') goto yy31;
+ yy368:
+       yych = *++p;
+       if (yych == 'M') goto yy369;
+       if (yych != 'm') goto yy31;
+ yy369:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy370:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy371:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy372:
+       yych = *++p;
+       if (yych == 'G') goto yy374;
+       if (yych == 'g') goto yy374;
+       goto yy31;
+ yy373:
+       yych = *++p;
+       if (yych == 'H') goto yy34;
+       if (yych == 'h') goto yy34;
+       goto yy31;
+ yy374:
+       yych = *++p;
+       if (yych == 'E') goto yy375;
+       if (yych != 'e') goto yy31;
+ yy375:
+       yych = *++p;
+       if (yych == 'R') goto yy34;
+       if (yych == 'r') goto yy34;
+       goto yy31;
+ yy376:
+       yych = *++p;
+       if (yych == 'T') goto yy394;
+       if (yych == 't') goto yy394;
+       goto yy31;
+ yy377:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy378:
+       yych = *++p;
+       if (yych == 'M') goto yy34;
+       if (yych == 'm') goto yy34;
+       goto yy31;
+ yy379:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych == 'P') goto yy34;
+               if (yych <= 'R') goto yy31;
+               goto yy34;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych == 's') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy380:
+       yych = *++p;
+       if (yych == 'I') goto yy388;
+       if (yych == 'i') goto yy388;
+       goto yy31;
+ yy381:
+       yych = *++p;
+       if (yych == 'A') goto yy387;
+       if (yych == 'a') goto yy387;
+       goto yy31;
+ yy382:
+       yych = *++p;
+       if (yych == 'O') goto yy385;
+       if (yych == 'o') goto yy385;
+       goto yy31;
+ yy383:
+       yych = *++p;
+       if (yych == 'A') goto yy384;
+       if (yych != 'a') goto yy31;
+ yy384:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == ':') goto yy35;
+               goto yy31;
+       } else {
+               if (yych <= 'S') goto yy34;
+               if (yych == 's') goto yy34;
+               goto yy31;
+       }
+ yy385:
+       yych = *++p;
+       if (yych == 'U') goto yy386;
+       if (yych != 'u') goto yy31;
+ yy386:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy387:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy388:
+       yych = *++p;
+       if (yych == 'U') goto yy389;
+       if (yych != 'u') goto yy31;
+ yy389:
+       yych = *++p;
+       if (yych == 'M') goto yy390;
+       if (yych != 'm') goto yy31;
+ yy390:
+       yych = *++p;
+       if (yych == 'X') goto yy391;
+       if (yych != 'x') goto yy31;
+ yy391:
+       yych = *++p;
+       if (yych == 'T') goto yy392;
+       if (yych != 't') goto yy31;
+ yy392:
+       yych = *++p;
+       if (yych == 'R') goto yy393;
+       if (yych != 'r') goto yy31;
+ yy393:
+       yych = *++p;
+       if (yych == 'A') goto yy34;
+       if (yych == 'a') goto yy34;
+       goto yy31;
+ yy394:
+       yych = *++p;
+       if (yych == 'A') goto yy395;
+       if (yych != 'a') goto yy31;
+ yy395:
+       yych = *++p;
+       if (yych == 'C') goto yy396;
+       if (yych != 'c') goto yy31;
+ yy396:
+       yych = *++p;
+       if (yych == 'H') goto yy397;
+       if (yych != 'h') goto yy31;
+ yy397:
+       yych = *++p;
+       if (yych == 'M') goto yy398;
+       if (yych != 'm') goto yy31;
+ yy398:
+       yych = *++p;
+       if (yych == 'E') goto yy399;
+       if (yych != 'e') goto yy31;
+ yy399:
+       yych = *++p;
+       if (yych == 'N') goto yy400;
+       if (yych != 'n') goto yy31;
+ yy400:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy401:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy402:
+       yych = *++p;
+       if (yych <= 'V') {
+               if (yych == 'R') goto yy34;
+               if (yych <= 'U') goto yy31;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy31;
+                       goto yy34;
+               } else {
+                       if (yych != 'v') goto yy31;
+               }
+       }
+       yych = *++p;
+       if (yych == 'A') goto yy404;
+       if (yych != 'a') goto yy31;
+ yy404:
+       yych = *++p;
+       if (yych == 'S') goto yy405;
+       if (yych != 's') goto yy31;
+ yy405:
+       yych = *++p;
+       if (yych == 'C') goto yy406;
+       if (yych != 'c') goto yy31;
+ yy406:
+       yych = *++p;
+       if (yych == 'R') goto yy407;
+       if (yych != 'r') goto yy31;
+ yy407:
+       yych = *++p;
+       if (yych == 'I') goto yy408;
+       if (yych != 'i') goto yy31;
+ yy408:
+       yych = *++p;
+       if (yych == 'P') goto yy409;
+       if (yych != 'p') goto yy31;
+ yy409:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy410:
+       yych = *++p;
+       if (yych == 'B') goto yy34;
+       if (yych == 'b') goto yy34;
+       goto yy31;
+ yy411:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy412:
+       yych = *++p;
+       if (yych == 'N') goto yy419;
+       if (yych == 'n') goto yy419;
+       goto yy31;
+ yy413:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy414:
+       yych = *++p;
+       if (yych == 'C') goto yy418;
+       if (yych == 'c') goto yy418;
+       goto yy31;
+ yy415:
+       yych = *++p;
+       if (yych <= 'V') {
+               if (yych == 'T') goto yy417;
+               if (yych <= 'U') goto yy31;
+               goto yy34;
+       } else {
+               if (yych <= 't') {
+                       if (yych <= 's') goto yy31;
+                       goto yy417;
+               } else {
+                       if (yych == 'v') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy416:
+       yych = *++p;
+       if (yych == 'I') goto yy34;
+       if (yych == 'i') goto yy34;
+       goto yy31;
+ yy417:
+       yych = *++p;
+       if (yych == 'A') goto yy34;
+       if (yych == 'a') goto yy34;
+       goto yy31;
+ yy418:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy419:
+       yych = *++p;
+       if (yych == 'A') goto yy420;
+       if (yych != 'a') goto yy31;
+ yy420:
+       yych = *++p;
+       if (yych != '-') goto yy31;
+       yych = *++p;
+       if (yych == 'P') goto yy422;
+       if (yych != 'p') goto yy31;
+ yy422:
+       yych = *++p;
+       if (yych == 'L') goto yy423;
+       if (yych != 'l') goto yy31;
+ yy423:
+       yych = *++p;
+       if (yych == 'A') goto yy424;
+       if (yych != 'a') goto yy31;
+ yy424:
+       yych = *++p;
+       if (yych == 'Y') goto yy425;
+       if (yych != 'y') goto yy31;
+ yy425:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych == 'C') goto yy426;
+               if (yych <= 'R') goto yy31;
+               goto yy427;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy31;
+               } else {
+                       if (yych == 's') goto yy427;
+                       goto yy31;
+               }
+       }
+ yy426:
+       yych = *++p;
+       if (yych == 'O') goto yy432;
+       if (yych == 'o') goto yy432;
+       goto yy31;
+ yy427:
+       yych = *++p;
+       if (yych == 'I') goto yy428;
+       if (yych != 'i') goto yy31;
+ yy428:
+       yych = *++p;
+       if (yych == 'N') goto yy429;
+       if (yych != 'n') goto yy31;
+ yy429:
+       yych = *++p;
+       if (yych == 'G') goto yy430;
+       if (yych != 'g') goto yy31;
+ yy430:
+       yych = *++p;
+       if (yych == 'L') goto yy431;
+       if (yych != 'l') goto yy31;
+ yy431:
+       yych = *++p;
+       if (yych == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ yy432:
+       yych = *++p;
+       if (yych == 'N') goto yy433;
+       if (yych != 'n') goto yy31;
+ yy433:
+       yych = *++p;
+       if (yych == 'T') goto yy434;
+       if (yych != 't') goto yy31;
+ yy434:
+       yych = *++p;
+       if (yych == 'A') goto yy435;
+       if (yych != 'a') goto yy31;
+ yy435:
+       yych = *++p;
+       if (yych == 'I') goto yy436;
+       if (yych != 'i') goto yy31;
+ yy436:
+       yych = *++p;
+       if (yych == 'N') goto yy437;
+       if (yych != 'n') goto yy31;
+ yy437:
+       yych = *++p;
+       if (yych == 'E') goto yy438;
+       if (yych != 'e') goto yy31;
+ yy438:
+       yych = *++p;
+       if (yych == 'R') goto yy34;
+       if (yych == 'r') goto yy34;
+       goto yy31;
+ yy439:
+       yych = *++p;
+       if (yych == 'S') goto yy34;
+       if (yych == 's') goto yy34;
+       goto yy31;
+ yy440:
+       yych = *++p;
+       if (yych <= 'N') {
+               if (yych <= 'A') {
+                       if (yych <= '@') goto yy31;
+                       goto yy462;
+               } else {
+                       if (yych <= 'L') goto yy31;
+                       if (yych <= 'M') goto yy463;
+                       goto yy464;
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych == 'a') goto yy462;
+                       goto yy31;
+               } else {
+                       if (yych <= 'm') goto yy463;
+                       if (yych <= 'n') goto yy464;
+                       goto yy31;
+               }
+       }
+ yy441:
+       yych = *++p;
+       if (yych == 'R') goto yy449;
+       if (yych == 'r') goto yy449;
+       goto yy31;
+ yy442:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'L') goto yy446;
+               if (yych <= 'O') goto yy31;
+               goto yy34;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy31;
+                       goto yy446;
+               } else {
+                       if (yych == 'p') goto yy34;
+                       goto yy31;
+               }
+       }
+ yy443:
+       yych = *++p;
+       if (yych == 'I') goto yy445;
+       if (yych == 'i') goto yy445;
+       goto yy31;
+ yy444:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy445:
+       yych = *++p;
+       if (yych == 'D') goto yy34;
+       if (yych == 'd') goto yy34;
+       goto yy31;
+ yy446:
+       yych = *++p;
+       if (yych == 'L') goto yy447;
+       if (yych != 'l') goto yy31;
+ yy447:
+       yych = *++p;
+       if (yych == 'T') goto yy448;
+       if (yych != 't') goto yy31;
+ yy448:
+       yych = *++p;
+       if (yych == 'O') goto yy34;
+       if (yych == 'o') goto yy34;
+       goto yy31;
+ yy449:
+       yych = *++p;
+       if (yych == 'O') goto yy450;
+       if (yych != 'o') goto yy31;
+ yy450:
+       yych = *++p;
+       if (yych == 'M') goto yy451;
+       if (yych != 'm') goto yy31;
+ yy451:
+       yych = *++p;
+       if (yych == 'E') goto yy452;
+       if (yych != 'e') goto yy31;
+ yy452:
+       yych = *++p;
+       if (yych == '-') goto yy453;
+       if (yych == ':') goto yy35;
+       goto yy31;
+ yy453:
+       yych = *++p;
+       if (yych == 'E') goto yy454;
+       if (yych != 'e') goto yy31;
+ yy454:
+       yych = *++p;
+       if (yych == 'X') goto yy455;
+       if (yych != 'x') goto yy31;
+ yy455:
+       yych = *++p;
+       if (yych == 'T') goto yy456;
+       if (yych != 't') goto yy31;
+ yy456:
+       yych = *++p;
+       if (yych == 'E') goto yy457;
+       if (yych != 'e') goto yy31;
+ yy457:
+       yych = *++p;
+       if (yych == 'N') goto yy458;
+       if (yych != 'n') goto yy31;
+ yy458:
+       yych = *++p;
+       if (yych == 'S') goto yy459;
+       if (yych != 's') goto yy31;
+ yy459:
+       yych = *++p;
+       if (yych == 'I') goto yy460;
+       if (yych != 'i') goto yy31;
+ yy460:
+       yych = *++p;
+       if (yych == 'O') goto yy461;
+       if (yych != 'o') goto yy31;
+ yy461:
+       yych = *++p;
+       if (yych == 'N') goto yy34;
+       if (yych == 'n') goto yy34;
+       goto yy31;
+ yy462:
+       yych = *++p;
+       if (yych == 'P') goto yy34;
+       if (yych == 'p') goto yy34;
+       goto yy31;
+ yy463:
+       yych = *++p;
+       if (yych == '-') goto yy468;
+       goto yy31;
+ yy464:
+       yych = *++p;
+       if (yych == 'T') goto yy465;
+       if (yych != 't') goto yy31;
+ yy465:
+       yych = *++p;
+       if (yych == 'E') goto yy466;
+       if (yych != 'e') goto yy31;
+ yy466:
+       yych = *++p;
+       if (yych == 'N') goto yy467;
+       if (yych != 'n') goto yy31;
+ yy467:
+       yych = *++p;
+       if (yych == 'T') goto yy34;
+       if (yych == 't') goto yy34;
+       goto yy31;
+ yy468:
+       yych = *++p;
+       if (yych == 'E') goto yy469;
+       if (yych != 'e') goto yy31;
+ yy469:
+       yych = *++p;
+       if (yych == 'V') goto yy470;
+       if (yych != 'v') goto yy31;
+ yy470:
+       yych = *++p;
+       if (yych == 'E') goto yy471;
+       if (yych != 'e') goto yy31;
+ yy471:
+       yych = *++p;
+       if (yych == 'N') goto yy472;
+       if (yych != 'n') goto yy31;
+ yy472:
+       yych = *++p;
+       if (yych == 'T') goto yy473;
+       if (yych != 't') goto yy31;
+ yy473:
+       yych = *++p;
+       if (yych == 'B') goto yy474;
+       if (yych != 'b') goto yy31;
+ yy474:
+       yych = *++p;
+       if (yych == 'R') goto yy475;
+       if (yych != 'r') goto yy31;
+ yy475:
+       yych = *++p;
+       if (yych == 'I') goto yy476;
+       if (yych != 'i') goto yy31;
+ yy476:
+       yych = *++p;
+       if (yych == 'T') goto yy477;
+       if (yych != 't') goto yy31;
+ yy477:
+       yych = *++p;
+       if (yych == 'E') goto yy478;
+       if (yych != 'e') goto yy31;
+ yy478:
+       yych = *++p;
+       if (yych != '-') goto yy31;
+       yych = *++p;
+       if (yych == 'A') goto yy480;
+       if (yych != 'a') goto yy31;
+ yy480:
+       yych = *++p;
+       if (yych == 'T') goto yy481;
+       if (yych != 't') goto yy31;
+ yy481:
+       yych = *++p;
+       if (yych == 'T') goto yy482;
+       if (yych != 't') goto yy31;
+ yy482:
+       yych = *++p;
+       if (yych == 'E') goto yy483;
+       if (yych != 'e') goto yy31;
+ yy483:
+       yych = *++p;
+       if (yych == 'N') goto yy484;
+       if (yych != 'n') goto yy31;
+ yy484:
+       yych = *++p;
+       if (yych == 'D') goto yy485;
+       if (yych != 'd') goto yy31;
+ yy485:
+       yych = *++p;
+       if (yych == 'E') goto yy486;
+       if (yych != 'e') goto yy31;
+ yy486:
+       ++p;
+       if ((yych = *p) == 'E') goto yy34;
+       if (yych == 'e') goto yy34;
+       goto yy31;
+ }
+ }
+ // Try to match email autolink after first <, returning num of chars matched.
+ int _scan_autolink_email(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 128,   0, 128, 128, 128, 128, 128, 
+                 0,   0, 128, 128,   0, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128,   0,   0,   0, 128,   0, 128, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0,   0,   0, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych <= ',') {
+               if (yych <= '!') {
+                       if (yych == '\n') goto yy489;
+                       if (yych <= ' ') goto yy491;
+                       goto yy490;
+               } else {
+                       if (yych <= '\'') {
+                               if (yych <= '"') goto yy491;
+                               goto yy490;
+                       } else {
+                               if (yych <= ')') goto yy491;
+                               if (yych <= '+') goto yy490;
+                               goto yy491;
+                       }
+               }
+       } else {
+               if (yych <= '?') {
+                       if (yych <= '<') {
+                               if (yych <= '9') goto yy490;
+                               goto yy491;
+                       } else {
+                               if (yych == '>') goto yy491;
+                               goto yy490;
+                       }
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych <= '@') goto yy491;
+                               goto yy490;
+                       } else {
+                               if (yych <= ']') goto yy491;
+                               if (yych <= '~') goto yy490;
+                               goto yy491;
+                       }
+               }
+       }
+ yy489:
+       { return 0; }
+ yy490:
+       yych = *(marker = ++p);
+       if (yych <= ',') {
+               if (yych <= '"') {
+                       if (yych == '!') goto yy495;
+                       goto yy489;
+               } else {
+                       if (yych <= '\'') goto yy495;
+                       if (yych <= ')') goto yy489;
+                       if (yych <= '+') goto yy495;
+                       goto yy489;
+               }
+       } else {
+               if (yych <= '>') {
+                       if (yych <= '9') goto yy495;
+                       if (yych == '=') goto yy495;
+                       goto yy489;
+               } else {
+                       if (yych <= 'Z') goto yy495;
+                       if (yych <= ']') goto yy489;
+                       if (yych <= '~') goto yy495;
+                       goto yy489;
+               }
+       }
+ yy491:
+       yych = *++p;
+       goto yy489;
+ yy492:
+       yych = *++p;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy493;
+               if (yych <= '9') goto yy496;
+       } else {
+               if (yych <= 'Z') goto yy496;
+               if (yych <= '`') goto yy493;
+               if (yych <= 'z') goto yy496;
+       }
+ yy493:
+       p = marker;
+       goto yy489;
+ yy494:
+       ++p;
+       yych = *p;
+ yy495:
+       if (yybm[0+yych] & 128) {
+               goto yy494;
+       }
+       if (yych <= '>') goto yy493;
+       if (yych <= '@') goto yy492;
+       goto yy493;
+ yy496:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy498;
 -                      goto yy493;
++                      if (yych <= '-') goto yy498;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy498;
++                      if (yych >= ':') goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy498;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -      if (yych <= '9') {
 -              if (yych == '-') goto yy626;
 -              if (yych <= '/') goto yy493;
 -              goto yy627;
++                      if (yych >= '{') goto yy493;
+               }
+       }
+       yych = *++p;
 -                      goto yy627;
++      if (yych <= '=') {
++              if (yych <= '.') {
++                      if (yych <= ',') goto yy493;
++                      if (yych <= '-') goto yy627;
++                      goto yy499;
++              } else {
++                      if (yych <= '/') goto yy493;
++                      if (yych <= '9') goto yy626;
++                      goto yy493;
++              }
+       } else {
+               if (yych <= 'Z') {
++                      if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy627;
++                      goto yy626;
+               } else {
+                       if (yych <= '`') goto yy493;
 -      if (yych <= '=') {
 -              if (yych <= '.') {
 -                      if (yych <= ',') goto yy493;
 -                      if (yych <= '-') goto yy626;
 -              } else {
 -                      if (yych <= '/') goto yy493;
 -                      if (yych <= '9') goto yy627;
 -                      goto yy493;
 -              }
++                      if (yych <= 'z') goto yy626;
+                       goto yy493;
+               }
+       }
+ yy498:
+       yych = *++p;
 -                      if (yych <= '>') goto yy500;
++      if (yych <= '9') {
++              if (yych == '-') goto yy627;
++              if (yych <= '/') goto yy493;
++              goto yy626;
+       } else {
+               if (yych <= 'Z') {
 -                      goto yy627;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy627;
++                      goto yy626;
+               } else {
+                       if (yych <= '`') goto yy493;
 -                      if (yych >= '.') goto yy499;
++                      if (yych <= 'z') goto yy626;
+                       goto yy493;
+               }
+       }
+ yy499:
+       ++p;
+       yych = *p;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy493;
+               if (yych <= '9') goto yy502;
+               goto yy493;
+       } else {
+               if (yych <= 'Z') goto yy502;
+               if (yych <= '`') goto yy493;
+               if (yych <= 'z') goto yy502;
+               goto yy493;
+       }
+ yy500:
+       ++p;
+       { return (p - start); }
+ yy502:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy504;
 -                      goto yy493;
++                      if (yych <= '-') goto yy504;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy504;
 -              } else {
 -                      if (yych <= '`') goto yy493;
 -                      if (yych <= 'z') goto yy504;
 -                      goto yy493;
 -              }
 -      }
 -      ++p;
 -      yych = *p;
 -      if (yych <= '9') {
 -              if (yych == '-') goto yy505;
 -              if (yych <= '/') goto yy493;
 -              goto yy506;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy493;
 -                      goto yy506;
++                      if (yych >= ':') goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy506;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy504:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy506;
++                      if (yych <= '-') goto yy506;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy506;
++                      if (yych <= '9') goto yy505;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy506;
++                      goto yy505;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy505:
++                      if (yych <= 'z') goto yy505;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy507;
++yy504:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy508;
++              if (yych == '-') goto yy506;
+               if (yych <= '/') goto yy493;
 -                      goto yy508;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy508;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy506:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy505:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy508;
++                      if (yych <= '-') goto yy508;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy508;
++                      if (yych <= '9') goto yy507;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy508;
++                      goto yy507;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy507:
++                      if (yych <= 'z') goto yy507;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy509;
++yy506:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy510;
++              if (yych == '-') goto yy508;
+               if (yych <= '/') goto yy493;
 -                      goto yy510;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy510;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy508:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy507:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy510;
++                      if (yych <= '-') goto yy510;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy510;
++                      if (yych <= '9') goto yy509;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy510;
++                      goto yy509;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy509:
++                      if (yych <= 'z') goto yy509;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy511;
++yy508:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy512;
++              if (yych == '-') goto yy510;
+               if (yych <= '/') goto yy493;
 -                      goto yy512;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy512;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy510:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy509:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy512;
++                      if (yych <= '-') goto yy512;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy512;
++                      if (yych <= '9') goto yy511;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy512;
++                      goto yy511;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy511:
++                      if (yych <= 'z') goto yy511;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy513;
++yy510:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy514;
++              if (yych == '-') goto yy512;
+               if (yych <= '/') goto yy493;
 -                      goto yy514;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy514;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy512:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy511:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy514;
++                      if (yych <= '-') goto yy514;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy514;
++                      if (yych <= '9') goto yy513;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy514;
++                      goto yy513;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy513:
++                      if (yych <= 'z') goto yy513;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy515;
++yy512:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy516;
++              if (yych == '-') goto yy514;
+               if (yych <= '/') goto yy493;
 -                      goto yy516;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy516;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy514:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy513:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy516;
++                      if (yych <= '-') goto yy516;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy516;
++                      if (yych <= '9') goto yy515;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy516;
++                      goto yy515;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy515:
++                      if (yych <= 'z') goto yy515;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy517;
++yy514:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy518;
++              if (yych == '-') goto yy516;
+               if (yych <= '/') goto yy493;
 -                      goto yy518;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy518;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy516:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy515:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy518;
++                      if (yych <= '-') goto yy518;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy518;
++                      if (yych <= '9') goto yy517;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy518;
++                      goto yy517;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy517:
++                      if (yych <= 'z') goto yy517;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy519;
++yy516:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy520;
++              if (yych == '-') goto yy518;
+               if (yych <= '/') goto yy493;
 -                      goto yy520;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy520;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy518:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy517:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy520;
++                      if (yych <= '-') goto yy520;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy520;
++                      if (yych <= '9') goto yy519;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy520;
++                      goto yy519;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy519:
++                      if (yych <= 'z') goto yy519;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy521;
++yy518:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy522;
++              if (yych == '-') goto yy520;
+               if (yych <= '/') goto yy493;
 -                      goto yy522;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy522;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy520:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy519:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy522;
++                      if (yych <= '-') goto yy522;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy522;
++                      if (yych <= '9') goto yy521;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy522;
++                      goto yy521;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy521:
++                      if (yych <= 'z') goto yy521;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy523;
++yy520:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy524;
++              if (yych == '-') goto yy522;
+               if (yych <= '/') goto yy493;
 -                      goto yy524;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy524;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy522:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy521:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy524;
++                      if (yych <= '-') goto yy524;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy524;
++                      if (yych <= '9') goto yy523;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy524;
++                      goto yy523;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy523:
++                      if (yych <= 'z') goto yy523;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy525;
++yy522:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy526;
++              if (yych == '-') goto yy524;
+               if (yych <= '/') goto yy493;
 -                      goto yy526;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy526;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy524:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy523:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy526;
++                      if (yych <= '-') goto yy526;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy526;
++                      if (yych <= '9') goto yy525;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy526;
++                      goto yy525;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy525:
++                      if (yych <= 'z') goto yy525;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy527;
++yy524:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy528;
++              if (yych == '-') goto yy526;
+               if (yych <= '/') goto yy493;
 -                      goto yy528;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy528;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy526:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy525:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy528;
++                      if (yych <= '-') goto yy528;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy528;
++                      if (yych <= '9') goto yy527;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy528;
++                      goto yy527;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy527:
++                      if (yych <= 'z') goto yy527;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy529;
++yy526:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy530;
++              if (yych == '-') goto yy528;
+               if (yych <= '/') goto yy493;
 -                      goto yy530;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy530;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy528:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy527:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy530;
++                      if (yych <= '-') goto yy530;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy530;
++                      if (yych <= '9') goto yy529;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy530;
++                      goto yy529;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy529:
++                      if (yych <= 'z') goto yy529;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy531;
++yy528:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy532;
++              if (yych == '-') goto yy530;
+               if (yych <= '/') goto yy493;
 -                      goto yy532;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy532;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy530:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy529:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy532;
++                      if (yych <= '-') goto yy532;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy532;
++                      if (yych <= '9') goto yy531;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy532;
++                      goto yy531;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy531:
++                      if (yych <= 'z') goto yy531;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy533;
++yy530:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy534;
++              if (yych == '-') goto yy532;
+               if (yych <= '/') goto yy493;
 -                      goto yy534;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy534;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy532:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy531:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy534;
++                      if (yych <= '-') goto yy534;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy534;
++                      if (yych <= '9') goto yy533;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy534;
++                      goto yy533;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy533:
++                      if (yych <= 'z') goto yy533;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy535;
++yy532:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy536;
++              if (yych == '-') goto yy534;
+               if (yych <= '/') goto yy493;
 -                      goto yy536;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy536;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy534:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy533:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy536;
++                      if (yych <= '-') goto yy536;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy536;
++                      if (yych <= '9') goto yy535;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy536;
++                      goto yy535;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy535:
++                      if (yych <= 'z') goto yy535;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy537;
++yy534:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy538;
++              if (yych == '-') goto yy536;
+               if (yych <= '/') goto yy493;
 -                      goto yy538;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy538;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy536:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy535:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy538;
++                      if (yych <= '-') goto yy538;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy538;
++                      if (yych <= '9') goto yy537;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy538;
++                      goto yy537;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy537:
++                      if (yych <= 'z') goto yy537;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy539;
++yy536:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy540;
++              if (yych == '-') goto yy538;
+               if (yych <= '/') goto yy493;
 -                      goto yy540;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy540;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy538:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy537:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy540;
++                      if (yych <= '-') goto yy540;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy540;
++                      if (yych <= '9') goto yy539;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy540;
++                      goto yy539;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy539:
++                      if (yych <= 'z') goto yy539;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy541;
++yy538:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy542;
++              if (yych == '-') goto yy540;
+               if (yych <= '/') goto yy493;
 -                      goto yy542;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy542;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy540:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy539:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy542;
++                      if (yych <= '-') goto yy542;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy542;
++                      if (yych <= '9') goto yy541;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy542;
++                      goto yy541;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy541:
++                      if (yych <= 'z') goto yy541;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy543;
++yy540:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy544;
++              if (yych == '-') goto yy542;
+               if (yych <= '/') goto yy493;
 -                      goto yy544;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy544;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy542:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy541:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy544;
++                      if (yych <= '-') goto yy544;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy544;
++                      if (yych <= '9') goto yy543;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy544;
++                      goto yy543;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy543:
++                      if (yych <= 'z') goto yy543;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy545;
++yy542:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy546;
++              if (yych == '-') goto yy544;
+               if (yych <= '/') goto yy493;
 -                      goto yy546;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy546;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy544:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy543:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy546;
++                      if (yych <= '-') goto yy546;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy546;
++                      if (yych <= '9') goto yy545;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy546;
++                      goto yy545;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy545:
++                      if (yych <= 'z') goto yy545;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy547;
++yy544:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy548;
++              if (yych == '-') goto yy546;
+               if (yych <= '/') goto yy493;
 -                      goto yy548;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy548;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy546:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy545:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy548;
++                      if (yych <= '-') goto yy548;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy548;
++                      if (yych <= '9') goto yy547;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy548;
++                      goto yy547;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy547:
++                      if (yych <= 'z') goto yy547;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy549;
++yy546:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy550;
++              if (yych == '-') goto yy548;
+               if (yych <= '/') goto yy493;
 -                      goto yy550;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy550;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy548:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy547:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy550;
++                      if (yych <= '-') goto yy550;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy550;
++                      if (yych <= '9') goto yy549;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy550;
++                      goto yy549;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy549:
++                      if (yych <= 'z') goto yy549;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy551;
++yy548:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy552;
++              if (yych == '-') goto yy550;
+               if (yych <= '/') goto yy493;
 -                      goto yy552;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy552;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy550:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy549:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy552;
++                      if (yych <= '-') goto yy552;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy552;
++                      if (yych <= '9') goto yy551;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy552;
++                      goto yy551;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy551:
++                      if (yych <= 'z') goto yy551;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy553;
++yy550:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy554;
++              if (yych == '-') goto yy552;
+               if (yych <= '/') goto yy493;
 -                      goto yy554;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy554;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy552:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy551:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy554;
++                      if (yych <= '-') goto yy554;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy554;
++                      if (yych <= '9') goto yy553;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy554;
++                      goto yy553;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy553:
++                      if (yych <= 'z') goto yy553;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy555;
++yy552:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy556;
++              if (yych == '-') goto yy554;
+               if (yych <= '/') goto yy493;
 -                      goto yy556;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy556;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy554:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy553:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy556;
++                      if (yych <= '-') goto yy556;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy556;
++                      if (yych <= '9') goto yy555;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy556;
++                      goto yy555;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy555:
++                      if (yych <= 'z') goto yy555;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy557;
++yy554:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy558;
++              if (yych == '-') goto yy556;
+               if (yych <= '/') goto yy493;
 -                      goto yy558;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy558;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy556:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy555:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy558;
++                      if (yych <= '-') goto yy558;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy558;
++                      if (yych <= '9') goto yy557;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy558;
++                      goto yy557;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy557:
++                      if (yych <= 'z') goto yy557;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy559;
++yy556:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy560;
++              if (yych == '-') goto yy558;
+               if (yych <= '/') goto yy493;
 -                      goto yy560;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy560;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy558:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy557:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy560;
++                      if (yych <= '-') goto yy560;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy560;
++                      if (yych <= '9') goto yy559;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy560;
++                      goto yy559;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy559:
++                      if (yych <= 'z') goto yy559;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy561;
++yy558:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy562;
++              if (yych == '-') goto yy560;
+               if (yych <= '/') goto yy493;
 -                      goto yy562;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy562;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy560:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy559:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy562;
++                      if (yych <= '-') goto yy562;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy562;
++                      if (yych <= '9') goto yy561;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy562;
++                      goto yy561;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy561:
++                      if (yych <= 'z') goto yy561;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy563;
++yy560:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy564;
++              if (yych == '-') goto yy562;
+               if (yych <= '/') goto yy493;
 -                      goto yy564;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy564;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy562:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy561:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy564;
++                      if (yych <= '-') goto yy564;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy564;
++                      if (yych <= '9') goto yy563;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy564;
++                      goto yy563;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy563:
++                      if (yych <= 'z') goto yy563;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy565;
++yy562:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy566;
++              if (yych == '-') goto yy564;
+               if (yych <= '/') goto yy493;
 -                      goto yy566;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy566;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy564:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy563:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy566;
++                      if (yych <= '-') goto yy566;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy566;
++                      if (yych <= '9') goto yy565;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy566;
++                      goto yy565;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy565:
++                      if (yych <= 'z') goto yy565;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy567;
++yy564:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy568;
++              if (yych == '-') goto yy566;
+               if (yych <= '/') goto yy493;
 -                      goto yy568;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy568;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy566:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy565:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy568;
++                      if (yych <= '-') goto yy568;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy568;
++                      if (yych <= '9') goto yy567;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy568;
++                      goto yy567;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy567:
++                      if (yych <= 'z') goto yy567;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy569;
++yy566:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy570;
++              if (yych == '-') goto yy568;
+               if (yych <= '/') goto yy493;
 -                      goto yy570;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy570;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy568:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy567:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy570;
++                      if (yych <= '-') goto yy570;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy570;
++                      if (yych <= '9') goto yy569;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy570;
++                      goto yy569;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy569:
++                      if (yych <= 'z') goto yy569;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy571;
++yy568:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy572;
++              if (yych == '-') goto yy570;
+               if (yych <= '/') goto yy493;
 -                      goto yy572;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy572;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy570:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy569:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy572;
++                      if (yych <= '-') goto yy572;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy572;
++                      if (yych <= '9') goto yy571;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy572;
++                      goto yy571;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy571:
++                      if (yych <= 'z') goto yy571;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy573;
++yy570:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy574;
++              if (yych == '-') goto yy572;
+               if (yych <= '/') goto yy493;
 -                      goto yy574;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy574;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy572:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy571:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy574;
++                      if (yych <= '-') goto yy574;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy574;
++                      if (yych <= '9') goto yy573;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy574;
++                      goto yy573;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy573:
++                      if (yych <= 'z') goto yy573;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy575;
++yy572:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy576;
++              if (yych == '-') goto yy574;
+               if (yych <= '/') goto yy493;
 -                      goto yy576;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy576;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy574:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy573:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy576;
++                      if (yych <= '-') goto yy576;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy576;
++                      if (yych <= '9') goto yy575;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy576;
++                      goto yy575;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy575:
++                      if (yych <= 'z') goto yy575;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy577;
++yy574:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy578;
++              if (yych == '-') goto yy576;
+               if (yych <= '/') goto yy493;
 -                      goto yy578;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy578;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy576:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy575:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy578;
++                      if (yych <= '-') goto yy578;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy578;
++                      if (yych <= '9') goto yy577;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy578;
++                      goto yy577;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy577:
++                      if (yych <= 'z') goto yy577;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy579;
++yy576:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy580;
++              if (yych == '-') goto yy578;
+               if (yych <= '/') goto yy493;
 -                      goto yy580;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy580;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy578:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy577:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy580;
++                      if (yych <= '-') goto yy580;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy580;
++                      if (yych <= '9') goto yy579;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy580;
++                      goto yy579;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy579:
++                      if (yych <= 'z') goto yy579;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy581;
++yy578:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy582;
++              if (yych == '-') goto yy580;
+               if (yych <= '/') goto yy493;
 -                      goto yy582;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy582;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy580:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy579:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy582;
++                      if (yych <= '-') goto yy582;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy582;
++                      if (yych <= '9') goto yy581;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy582;
++                      goto yy581;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy581:
++                      if (yych <= 'z') goto yy581;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy583;
++yy580:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy584;
++              if (yych == '-') goto yy582;
+               if (yych <= '/') goto yy493;
 -                      goto yy584;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy584;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy582:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy581:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy584;
++                      if (yych <= '-') goto yy584;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy584;
++                      if (yych <= '9') goto yy583;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy584;
++                      goto yy583;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy583:
++                      if (yych <= 'z') goto yy583;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy585;
++yy582:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy586;
++              if (yych == '-') goto yy584;
+               if (yych <= '/') goto yy493;
 -                      goto yy586;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy586;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy584:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy583:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy586;
++                      if (yych <= '-') goto yy586;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy586;
++                      if (yych <= '9') goto yy585;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy586;
++                      goto yy585;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy585:
++                      if (yych <= 'z') goto yy585;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy587;
++yy584:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy588;
++              if (yych == '-') goto yy586;
+               if (yych <= '/') goto yy493;
 -                      goto yy588;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy588;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy586:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy585:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy588;
++                      if (yych <= '-') goto yy588;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy588;
++                      if (yych <= '9') goto yy587;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy588;
++                      goto yy587;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy587:
++                      if (yych <= 'z') goto yy587;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy589;
++yy586:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy590;
++              if (yych == '-') goto yy588;
+               if (yych <= '/') goto yy493;
 -                      goto yy590;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy590;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy588:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy587:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy590;
++                      if (yych <= '-') goto yy590;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy590;
++                      if (yych <= '9') goto yy589;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy590;
++                      goto yy589;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy589:
++                      if (yych <= 'z') goto yy589;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy591;
++yy588:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy592;
++              if (yych == '-') goto yy590;
+               if (yych <= '/') goto yy493;
 -                      goto yy592;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy592;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy590:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy589:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy592;
++                      if (yych <= '-') goto yy592;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy592;
++                      if (yych <= '9') goto yy591;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy592;
++                      goto yy591;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy591:
++                      if (yych <= 'z') goto yy591;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy593;
++yy590:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy594;
++              if (yych == '-') goto yy592;
+               if (yych <= '/') goto yy493;
 -                      goto yy594;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy594;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy592:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy591:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy594;
++                      if (yych <= '-') goto yy594;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy594;
++                      if (yych <= '9') goto yy593;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy594;
++                      goto yy593;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy593:
++                      if (yych <= 'z') goto yy593;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy595;
++yy592:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy596;
++              if (yych == '-') goto yy594;
+               if (yych <= '/') goto yy493;
 -                      goto yy596;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy596;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy594:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy593:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy596;
++                      if (yych <= '-') goto yy596;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy596;
++                      if (yych <= '9') goto yy595;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy596;
++                      goto yy595;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy595:
++                      if (yych <= 'z') goto yy595;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy597;
++yy594:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy598;
++              if (yych == '-') goto yy596;
+               if (yych <= '/') goto yy493;
 -                      goto yy598;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy598;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy596:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy595:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy598;
++                      if (yych <= '-') goto yy598;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy598;
++                      if (yych <= '9') goto yy597;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy598;
++                      goto yy597;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy597:
++                      if (yych <= 'z') goto yy597;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy599;
++yy596:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy600;
++              if (yych == '-') goto yy598;
+               if (yych <= '/') goto yy493;
 -                      goto yy600;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy600;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy598:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy597:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy600;
++                      if (yych <= '-') goto yy600;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy600;
++                      if (yych <= '9') goto yy599;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy600;
++                      goto yy599;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy599:
++                      if (yych <= 'z') goto yy599;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy601;
++yy598:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy602;
++              if (yych == '-') goto yy600;
+               if (yych <= '/') goto yy493;
 -                      goto yy602;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy602;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy600:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy599:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy602;
++                      if (yych <= '-') goto yy602;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy602;
++                      if (yych <= '9') goto yy601;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy602;
++                      goto yy601;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy601:
++                      if (yych <= 'z') goto yy601;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy603;
++yy600:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy604;
++              if (yych == '-') goto yy602;
+               if (yych <= '/') goto yy493;
 -                      goto yy604;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy604;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy602:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy601:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy604;
++                      if (yych <= '-') goto yy604;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy604;
++                      if (yych <= '9') goto yy603;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy604;
++                      goto yy603;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy603:
++                      if (yych <= 'z') goto yy603;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy605;
++yy602:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy606;
++              if (yych == '-') goto yy604;
+               if (yych <= '/') goto yy493;
 -                      goto yy606;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy606;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy604:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy603:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy606;
++                      if (yych <= '-') goto yy606;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy606;
++                      if (yych <= '9') goto yy605;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy606;
++                      goto yy605;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy605:
++                      if (yych <= 'z') goto yy605;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy607;
++yy604:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy608;
++              if (yych == '-') goto yy606;
+               if (yych <= '/') goto yy493;
 -                      goto yy608;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy608;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy606:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy605:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy608;
++                      if (yych <= '-') goto yy608;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy608;
++                      if (yych <= '9') goto yy607;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy608;
++                      goto yy607;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy607:
++                      if (yych <= 'z') goto yy607;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy609;
++yy606:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy610;
++              if (yych == '-') goto yy608;
+               if (yych <= '/') goto yy493;
 -                      goto yy610;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy610;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy608:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy607:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy610;
++                      if (yych <= '-') goto yy610;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy610;
++                      if (yych <= '9') goto yy609;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy610;
++                      goto yy609;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy609:
++                      if (yych <= 'z') goto yy609;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy611;
++yy608:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy612;
++              if (yych == '-') goto yy610;
+               if (yych <= '/') goto yy493;
 -                      goto yy612;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy612;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy610:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy609:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy612;
++                      if (yych <= '-') goto yy612;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy612;
++                      if (yych <= '9') goto yy611;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy612;
++                      goto yy611;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy611:
++                      if (yych <= 'z') goto yy611;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy613;
++yy610:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy614;
++              if (yych == '-') goto yy612;
+               if (yych <= '/') goto yy493;
 -                      goto yy614;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy614;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy612:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy611:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy614;
++                      if (yych <= '-') goto yy614;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy614;
++                      if (yych <= '9') goto yy613;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy614;
++                      goto yy613;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy613:
++                      if (yych <= 'z') goto yy613;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy615;
++yy612:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy616;
++              if (yych == '-') goto yy614;
+               if (yych <= '/') goto yy493;
 -                      goto yy616;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy616;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy614:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy613:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy616;
++                      if (yych <= '-') goto yy616;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy616;
++                      if (yych <= '9') goto yy615;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy616;
++                      goto yy615;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy615:
++                      if (yych <= 'z') goto yy615;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy617;
++yy614:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy618;
++              if (yych == '-') goto yy616;
+               if (yych <= '/') goto yy493;
 -                      goto yy618;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy618;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy616:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy615:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy618;
++                      if (yych <= '-') goto yy618;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy618;
++                      if (yych <= '9') goto yy617;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy618;
++                      goto yy617;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy617:
++                      if (yych <= 'z') goto yy617;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy619;
++yy616:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy620;
++              if (yych == '-') goto yy618;
+               if (yych <= '/') goto yy493;
 -                      goto yy620;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy620;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy618:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy617:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy620;
++                      if (yych <= '-') goto yy620;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy620;
++                      if (yych <= '9') goto yy619;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy620;
++                      goto yy619;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy619:
++                      if (yych <= 'z') goto yy619;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy621;
++yy618:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy622;
++              if (yych == '-') goto yy620;
+               if (yych <= '/') goto yy493;
 -                      goto yy622;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy622;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy620:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy619:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy622;
++                      if (yych <= '-') goto yy622;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy622;
++                      if (yych <= '9') goto yy621;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy622;
++                      goto yy621;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy621:
++                      if (yych <= 'z') goto yy621;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy623;
++yy620:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
 -              goto yy624;
++              if (yych == '-') goto yy622;
+               if (yych <= '/') goto yy493;
 -                      goto yy624;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy624;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy622:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy621:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -      yych = *++p;
 -      if (yych <= '9') {
 -              if (yych == '-') goto yy628;
 -              if (yych <= '/') goto yy493;
 -              goto yy629;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy493;
 -                      goto yy629;
 -              } else {
 -                      if (yych <= '`') goto yy493;
 -                      if (yych <= 'z') goto yy629;
 -                      goto yy493;
 -              }
 -      }
 -yy627:
++                      if (yych <= '-') goto yy623;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
+                       if (yych <= '9') goto yy624;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
+                       goto yy624;
+               } else {
+                       if (yych <= '`') goto yy493;
+                       if (yych <= 'z') goto yy624;
+                       goto yy493;
+               }
+       }
++yy622:
++      ++p;
++      yych = *p;
++      if (yych <= '9') {
++              if (yych == '-') goto yy623;
++              if (yych <= '/') goto yy493;
++              goto yy624;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy493;
++                      goto yy624;
++              } else {
++                      if (yych <= '`') goto yy493;
++                      if (yych <= 'z') goto yy624;
++                      goto yy493;
++              }
++      }
+ yy623:
+       ++p;
+       yych = *p;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy493;
+               if (yych <= '9') goto yy625;
+               goto yy493;
+       } else {
+               if (yych <= 'Z') goto yy625;
+               if (yych <= '`') goto yy493;
+               if (yych <= 'z') goto yy625;
+               goto yy493;
+       }
+ yy624:
+       ++p;
+       yych = *p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= '-') goto yy493;
+                       goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
+                       if (yych >= ':') goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
+                       if (yych >= '{') goto yy493;
+               }
+       }
+ yy625:
+       ++p;
+       yych = *p;
+       if (yych == '.') goto yy499;
+       if (yych == '>') goto yy500;
+       goto yy493;
+ yy626:
 -                      if (yych >= '.') goto yy499;
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy629;
++                      if (yych <= '-') goto yy629;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy629;
++                      if (yych <= '9') goto yy628;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy629;
++                      goto yy628;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy628:
++                      if (yych <= 'z') goto yy628;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy630;
++yy627:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy631;
++              if (yych == '-') goto yy629;
+               if (yych <= '/') goto yy493;
 -                      goto yy631;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy631;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy629:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy628:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy631;
++                      if (yych <= '-') goto yy631;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy631;
++                      if (yych <= '9') goto yy630;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy631;
++                      goto yy630;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy630:
++                      if (yych <= 'z') goto yy630;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy632;
++yy629:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy633;
++              if (yych == '-') goto yy631;
+               if (yych <= '/') goto yy493;
 -                      goto yy633;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy633;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy631:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy630:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy633;
++                      if (yych <= '-') goto yy633;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy633;
++                      if (yych <= '9') goto yy632;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy633;
++                      goto yy632;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy632:
++                      if (yych <= 'z') goto yy632;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy634;
++yy631:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy635;
++              if (yych == '-') goto yy633;
+               if (yych <= '/') goto yy493;
 -                      goto yy635;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy635;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy633:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy632:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy635;
++                      if (yych <= '-') goto yy635;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy635;
++                      if (yych <= '9') goto yy634;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy635;
++                      goto yy634;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy634:
++                      if (yych <= 'z') goto yy634;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy636;
++yy633:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy637;
++              if (yych == '-') goto yy635;
+               if (yych <= '/') goto yy493;
 -                      goto yy637;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy637;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy635:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy634:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy637;
++                      if (yych <= '-') goto yy637;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy637;
++                      if (yych <= '9') goto yy636;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy637;
++                      goto yy636;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy636:
++                      if (yych <= 'z') goto yy636;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy638;
++yy635:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy639;
++              if (yych == '-') goto yy637;
+               if (yych <= '/') goto yy493;
 -                      goto yy639;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy639;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy637:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy636:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy639;
++                      if (yych <= '-') goto yy639;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy639;
++                      if (yych <= '9') goto yy638;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy639;
++                      goto yy638;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy638:
++                      if (yych <= 'z') goto yy638;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy640;
++yy637:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy641;
++              if (yych == '-') goto yy639;
+               if (yych <= '/') goto yy493;
 -                      goto yy641;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy641;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy639:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy638:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy641;
++                      if (yych <= '-') goto yy641;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy641;
++                      if (yych <= '9') goto yy640;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy641;
++                      goto yy640;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy640:
++                      if (yych <= 'z') goto yy640;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy642;
++yy639:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy643;
++              if (yych == '-') goto yy641;
+               if (yych <= '/') goto yy493;
 -                      goto yy643;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy643;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy641:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy640:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy643;
++                      if (yych <= '-') goto yy643;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy643;
++                      if (yych <= '9') goto yy642;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy643;
++                      goto yy642;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy642:
++                      if (yych <= 'z') goto yy642;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy644;
++yy641:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy645;
++              if (yych == '-') goto yy643;
+               if (yych <= '/') goto yy493;
 -                      goto yy645;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy645;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy643:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy642:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy645;
++                      if (yych <= '-') goto yy645;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy645;
++                      if (yych <= '9') goto yy644;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy645;
++                      goto yy644;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy644:
++                      if (yych <= 'z') goto yy644;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy646;
++yy643:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy647;
++              if (yych == '-') goto yy645;
+               if (yych <= '/') goto yy493;
 -                      goto yy647;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy647;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy645:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy644:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy647;
++                      if (yych <= '-') goto yy647;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy647;
++                      if (yych <= '9') goto yy646;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy647;
++                      goto yy646;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy646:
++                      if (yych <= 'z') goto yy646;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy648;
++yy645:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy649;
++              if (yych == '-') goto yy647;
+               if (yych <= '/') goto yy493;
 -                      goto yy649;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy649;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy647:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy646:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy649;
++                      if (yych <= '-') goto yy649;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy649;
++                      if (yych <= '9') goto yy648;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy649;
++                      goto yy648;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy648:
++                      if (yych <= 'z') goto yy648;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy650;
++yy647:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy651;
++              if (yych == '-') goto yy649;
+               if (yych <= '/') goto yy493;
 -                      goto yy651;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy651;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy649:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy648:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy651;
++                      if (yych <= '-') goto yy651;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy651;
++                      if (yych <= '9') goto yy650;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy651;
++                      goto yy650;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy650:
++                      if (yych <= 'z') goto yy650;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy652;
++yy649:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy653;
++              if (yych == '-') goto yy651;
+               if (yych <= '/') goto yy493;
 -                      goto yy653;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy653;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy651:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy650:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy653;
++                      if (yych <= '-') goto yy653;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy653;
++                      if (yych <= '9') goto yy652;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy653;
++                      goto yy652;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy652:
++                      if (yych <= 'z') goto yy652;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy654;
++yy651:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy655;
++              if (yych == '-') goto yy653;
+               if (yych <= '/') goto yy493;
 -                      goto yy655;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy655;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy653:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy652:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy655;
++                      if (yych <= '-') goto yy655;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy655;
++                      if (yych <= '9') goto yy654;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy655;
++                      goto yy654;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy654:
++                      if (yych <= 'z') goto yy654;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy656;
++yy653:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy657;
++              if (yych == '-') goto yy655;
+               if (yych <= '/') goto yy493;
 -                      goto yy657;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy657;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy655:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy654:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy657;
++                      if (yych <= '-') goto yy657;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy657;
++                      if (yych <= '9') goto yy656;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy657;
++                      goto yy656;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy656:
++                      if (yych <= 'z') goto yy656;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy658;
++yy655:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy659;
++              if (yych == '-') goto yy657;
+               if (yych <= '/') goto yy493;
 -                      goto yy659;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy659;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy657:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy656:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy659;
++                      if (yych <= '-') goto yy659;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy659;
++                      if (yych <= '9') goto yy658;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy659;
++                      goto yy658;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy658:
++                      if (yych <= 'z') goto yy658;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy660;
++yy657:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy661;
++              if (yych == '-') goto yy659;
+               if (yych <= '/') goto yy493;
 -                      goto yy661;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy661;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy659:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy658:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy661;
++                      if (yych <= '-') goto yy661;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy661;
++                      if (yych <= '9') goto yy660;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy661;
++                      goto yy660;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy660:
++                      if (yych <= 'z') goto yy660;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy662;
++yy659:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy663;
++              if (yych == '-') goto yy661;
+               if (yych <= '/') goto yy493;
 -                      goto yy663;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy663;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy661:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy660:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy663;
++                      if (yych <= '-') goto yy663;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy663;
++                      if (yych <= '9') goto yy662;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy663;
++                      goto yy662;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy662:
++                      if (yych <= 'z') goto yy662;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy664;
++yy661:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy665;
++              if (yych == '-') goto yy663;
+               if (yych <= '/') goto yy493;
 -                      goto yy665;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy665;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy663:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy662:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy665;
++                      if (yych <= '-') goto yy665;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy665;
++                      if (yych <= '9') goto yy664;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy665;
++                      goto yy664;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy664:
++                      if (yych <= 'z') goto yy664;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy666;
++yy663:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy667;
++              if (yych == '-') goto yy665;
+               if (yych <= '/') goto yy493;
 -                      goto yy667;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy667;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy665:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy664:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy667;
++                      if (yych <= '-') goto yy667;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy667;
++                      if (yych <= '9') goto yy666;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy667;
++                      goto yy666;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy666:
++                      if (yych <= 'z') goto yy666;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy668;
++yy665:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy669;
++              if (yych == '-') goto yy667;
+               if (yych <= '/') goto yy493;
 -                      goto yy669;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy669;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy667:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy666:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy669;
++                      if (yych <= '-') goto yy669;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy669;
++                      if (yych <= '9') goto yy668;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy669;
++                      goto yy668;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy668:
++                      if (yych <= 'z') goto yy668;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy670;
++yy667:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy671;
++              if (yych == '-') goto yy669;
+               if (yych <= '/') goto yy493;
 -                      goto yy671;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy671;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy669:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy668:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy671;
++                      if (yych <= '-') goto yy671;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy671;
++                      if (yych <= '9') goto yy670;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy671;
++                      goto yy670;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy670:
++                      if (yych <= 'z') goto yy670;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy672;
++yy669:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy673;
++              if (yych == '-') goto yy671;
+               if (yych <= '/') goto yy493;
 -                      goto yy673;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy673;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy671:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy670:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy673;
++                      if (yych <= '-') goto yy673;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy673;
++                      if (yych <= '9') goto yy672;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy673;
++                      goto yy672;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy672:
++                      if (yych <= 'z') goto yy672;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy674;
++yy671:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy675;
++              if (yych == '-') goto yy673;
+               if (yych <= '/') goto yy493;
 -                      goto yy675;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy675;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy673:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy672:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy675;
++                      if (yych <= '-') goto yy675;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy675;
++                      if (yych <= '9') goto yy674;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy675;
++                      goto yy674;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy674:
++                      if (yych <= 'z') goto yy674;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy676;
++yy673:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy677;
++              if (yych == '-') goto yy675;
+               if (yych <= '/') goto yy493;
 -                      goto yy677;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy677;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy675:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy674:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy677;
++                      if (yych <= '-') goto yy677;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy677;
++                      if (yych <= '9') goto yy676;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy677;
++                      goto yy676;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy676:
++                      if (yych <= 'z') goto yy676;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy678;
++yy675:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy679;
++              if (yych == '-') goto yy677;
+               if (yych <= '/') goto yy493;
 -                      goto yy679;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy679;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy677:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy676:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy679;
++                      if (yych <= '-') goto yy679;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy679;
++                      if (yych <= '9') goto yy678;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy679;
++                      goto yy678;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy678:
++                      if (yych <= 'z') goto yy678;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy680;
++yy677:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy681;
++              if (yych == '-') goto yy679;
+               if (yych <= '/') goto yy493;
 -                      goto yy681;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy681;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy679:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy678:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy681;
++                      if (yych <= '-') goto yy681;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy681;
++                      if (yych <= '9') goto yy680;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy681;
++                      goto yy680;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy680:
++                      if (yych <= 'z') goto yy680;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy682;
++yy679:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy683;
++              if (yych == '-') goto yy681;
+               if (yych <= '/') goto yy493;
 -                      goto yy683;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy683;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy681:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy680:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy683;
++                      if (yych <= '-') goto yy683;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy683;
++                      if (yych <= '9') goto yy682;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy683;
++                      goto yy682;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy682:
++                      if (yych <= 'z') goto yy682;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy684;
++yy681:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy685;
++              if (yych == '-') goto yy683;
+               if (yych <= '/') goto yy493;
 -                      goto yy685;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy685;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy683:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy682:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy685;
++                      if (yych <= '-') goto yy685;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy685;
++                      if (yych <= '9') goto yy684;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy685;
++                      goto yy684;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy684:
++                      if (yych <= 'z') goto yy684;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy686;
++yy683:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy687;
++              if (yych == '-') goto yy685;
+               if (yych <= '/') goto yy493;
 -                      goto yy687;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy687;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy685:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy684:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy687;
++                      if (yych <= '-') goto yy687;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy687;
++                      if (yych <= '9') goto yy686;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy687;
++                      goto yy686;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy686:
++                      if (yych <= 'z') goto yy686;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy688;
++yy685:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy689;
++              if (yych == '-') goto yy687;
+               if (yych <= '/') goto yy493;
 -                      goto yy689;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy689;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy687:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy686:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy689;
++                      if (yych <= '-') goto yy689;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy689;
++                      if (yych <= '9') goto yy688;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy689;
++                      goto yy688;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy688:
++                      if (yych <= 'z') goto yy688;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy690;
++yy687:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy691;
++              if (yych == '-') goto yy689;
+               if (yych <= '/') goto yy493;
 -                      goto yy691;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy691;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy689:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy688:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy691;
++                      if (yych <= '-') goto yy691;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy691;
++                      if (yych <= '9') goto yy690;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy691;
++                      goto yy690;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy690:
++                      if (yych <= 'z') goto yy690;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy692;
++yy689:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy693;
++              if (yych == '-') goto yy691;
+               if (yych <= '/') goto yy493;
 -                      goto yy693;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy693;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy691:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy690:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy693;
++                      if (yych <= '-') goto yy693;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy693;
++                      if (yych <= '9') goto yy692;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy693;
++                      goto yy692;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy692:
++                      if (yych <= 'z') goto yy692;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy694;
++yy691:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy695;
++              if (yych == '-') goto yy693;
+               if (yych <= '/') goto yy493;
 -                      goto yy695;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy695;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy693:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy692:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy695;
++                      if (yych <= '-') goto yy695;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy695;
++                      if (yych <= '9') goto yy694;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy695;
++                      goto yy694;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy694:
++                      if (yych <= 'z') goto yy694;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy696;
++yy693:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy697;
++              if (yych == '-') goto yy695;
+               if (yych <= '/') goto yy493;
 -                      goto yy697;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy697;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy695:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy694:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy697;
++                      if (yych <= '-') goto yy697;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy697;
++                      if (yych <= '9') goto yy696;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy697;
++                      goto yy696;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy696:
++                      if (yych <= 'z') goto yy696;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy698;
++yy695:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy699;
++              if (yych == '-') goto yy697;
+               if (yych <= '/') goto yy493;
 -                      goto yy699;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy699;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy697:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy696:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy699;
++                      if (yych <= '-') goto yy699;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy699;
++                      if (yych <= '9') goto yy698;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy699;
++                      goto yy698;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy698:
++                      if (yych <= 'z') goto yy698;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy700;
++yy697:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy701;
++              if (yych == '-') goto yy699;
+               if (yych <= '/') goto yy493;
 -                      goto yy701;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy701;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy699:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy698:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy701;
++                      if (yych <= '-') goto yy701;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy701;
++                      if (yych <= '9') goto yy700;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy701;
++                      goto yy700;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy700:
++                      if (yych <= 'z') goto yy700;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy702;
++yy699:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy703;
++              if (yych == '-') goto yy701;
+               if (yych <= '/') goto yy493;
 -                      goto yy703;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy703;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy701:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy700:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy703;
++                      if (yych <= '-') goto yy703;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy703;
++                      if (yych <= '9') goto yy702;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy703;
++                      goto yy702;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy702:
++                      if (yych <= 'z') goto yy702;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy704;
++yy701:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy705;
++              if (yych == '-') goto yy703;
+               if (yych <= '/') goto yy493;
 -                      goto yy705;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy705;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy703:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy702:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy705;
++                      if (yych <= '-') goto yy705;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy705;
++                      if (yych <= '9') goto yy704;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy705;
++                      goto yy704;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy704:
++                      if (yych <= 'z') goto yy704;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy706;
++yy703:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy707;
++              if (yych == '-') goto yy705;
+               if (yych <= '/') goto yy493;
 -                      goto yy707;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy707;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy705:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy704:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy707;
++                      if (yych <= '-') goto yy707;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy707;
++                      if (yych <= '9') goto yy706;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy707;
++                      goto yy706;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy706:
++                      if (yych <= 'z') goto yy706;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy708;
++yy705:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy709;
++              if (yych == '-') goto yy707;
+               if (yych <= '/') goto yy493;
 -                      goto yy709;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy709;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy707:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy706:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy709;
++                      if (yych <= '-') goto yy709;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy709;
++                      if (yych <= '9') goto yy708;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy709;
++                      goto yy708;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy708:
++                      if (yych <= 'z') goto yy708;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy710;
++yy707:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy711;
++              if (yych == '-') goto yy709;
+               if (yych <= '/') goto yy493;
 -                      goto yy711;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy711;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy709:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy708:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy711;
++                      if (yych <= '-') goto yy711;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy711;
++                      if (yych <= '9') goto yy710;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy711;
++                      goto yy710;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy710:
++                      if (yych <= 'z') goto yy710;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy712;
++yy709:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy713;
++              if (yych == '-') goto yy711;
+               if (yych <= '/') goto yy493;
 -                      goto yy713;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy713;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy711:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy710:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy713;
++                      if (yych <= '-') goto yy713;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy713;
++                      if (yych <= '9') goto yy712;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy713;
++                      goto yy712;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy712:
++                      if (yych <= 'z') goto yy712;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy714;
++yy711:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy715;
++              if (yych == '-') goto yy713;
+               if (yych <= '/') goto yy493;
 -                      goto yy715;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy715;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy713:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy712:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy715;
++                      if (yych <= '-') goto yy715;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy715;
++                      if (yych <= '9') goto yy714;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy715;
++                      goto yy714;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy714:
++                      if (yych <= 'z') goto yy714;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy716;
++yy713:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy717;
++              if (yych == '-') goto yy715;
+               if (yych <= '/') goto yy493;
 -                      goto yy717;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy717;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy715:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy714:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy717;
++                      if (yych <= '-') goto yy717;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy717;
++                      if (yych <= '9') goto yy716;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy717;
++                      goto yy716;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy716:
++                      if (yych <= 'z') goto yy716;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy718;
++yy715:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy719;
++              if (yych == '-') goto yy717;
+               if (yych <= '/') goto yy493;
 -                      goto yy719;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy719;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy717:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy716:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy719;
++                      if (yych <= '-') goto yy719;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy719;
++                      if (yych <= '9') goto yy718;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy719;
++                      goto yy718;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy718:
++                      if (yych <= 'z') goto yy718;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy720;
++yy717:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy721;
++              if (yych == '-') goto yy719;
+               if (yych <= '/') goto yy493;
 -                      goto yy721;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy721;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy719:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy718:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy721;
++                      if (yych <= '-') goto yy721;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy721;
++                      if (yych <= '9') goto yy720;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy721;
++                      goto yy720;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy720:
++                      if (yych <= 'z') goto yy720;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy722;
++yy719:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy723;
++              if (yych == '-') goto yy721;
+               if (yych <= '/') goto yy493;
 -                      goto yy723;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy723;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy721:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy720:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy723;
++                      if (yych <= '-') goto yy723;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy723;
++                      if (yych <= '9') goto yy722;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy723;
++                      goto yy722;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy722:
++                      if (yych <= 'z') goto yy722;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy724;
++yy721:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy725;
++              if (yych == '-') goto yy723;
+               if (yych <= '/') goto yy493;
 -                      goto yy725;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy725;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy723:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy722:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy725;
++                      if (yych <= '-') goto yy725;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy725;
++                      if (yych <= '9') goto yy724;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy725;
++                      goto yy724;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy724:
++                      if (yych <= 'z') goto yy724;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy726;
++yy723:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy727;
++              if (yych == '-') goto yy725;
+               if (yych <= '/') goto yy493;
 -                      goto yy727;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy727;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy725:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy724:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy727;
++                      if (yych <= '-') goto yy727;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy727;
++                      if (yych <= '9') goto yy726;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy727;
++                      goto yy726;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy726:
++                      if (yych <= 'z') goto yy726;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy728;
++yy725:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy729;
++              if (yych == '-') goto yy727;
+               if (yych <= '/') goto yy493;
 -                      goto yy729;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy729;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy727:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy726:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy729;
++                      if (yych <= '-') goto yy729;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy729;
++                      if (yych <= '9') goto yy728;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy729;
++                      goto yy728;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy728:
++                      if (yych <= 'z') goto yy728;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy730;
++yy727:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy731;
++              if (yych == '-') goto yy729;
+               if (yych <= '/') goto yy493;
 -                      goto yy731;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy731;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy729:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy728:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy731;
++                      if (yych <= '-') goto yy731;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy731;
++                      if (yych <= '9') goto yy730;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy731;
++                      goto yy730;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy730:
++                      if (yych <= 'z') goto yy730;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy732;
++yy729:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy733;
++              if (yych == '-') goto yy731;
+               if (yych <= '/') goto yy493;
 -                      goto yy733;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy733;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy731:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy730:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy733;
++                      if (yych <= '-') goto yy733;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy733;
++                      if (yych <= '9') goto yy732;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy733;
++                      goto yy732;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy732:
++                      if (yych <= 'z') goto yy732;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy734;
++yy731:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy735;
++              if (yych == '-') goto yy733;
+               if (yych <= '/') goto yy493;
 -                      goto yy735;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy735;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy733:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy732:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy735;
++                      if (yych <= '-') goto yy735;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy735;
++                      if (yych <= '9') goto yy734;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy735;
++                      goto yy734;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy734:
++                      if (yych <= 'z') goto yy734;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy736;
++yy733:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy737;
++              if (yych == '-') goto yy735;
+               if (yych <= '/') goto yy493;
 -                      goto yy737;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy737;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy735:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy734:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy737;
++                      if (yych <= '-') goto yy737;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy737;
++                      if (yych <= '9') goto yy736;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy737;
++                      goto yy736;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy736:
++                      if (yych <= 'z') goto yy736;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy738;
++yy735:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy739;
++              if (yych == '-') goto yy737;
+               if (yych <= '/') goto yy493;
 -                      goto yy739;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy739;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy737:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy736:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy739;
++                      if (yych <= '-') goto yy739;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy739;
++                      if (yych <= '9') goto yy738;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy739;
++                      goto yy738;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy738:
++                      if (yych <= 'z') goto yy738;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy740;
++yy737:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy741;
++              if (yych == '-') goto yy739;
+               if (yych <= '/') goto yy493;
 -                      goto yy741;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy741;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy739:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy738:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy741;
++                      if (yych <= '-') goto yy741;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy741;
++                      if (yych <= '9') goto yy740;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy741;
++                      goto yy740;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy740:
++                      if (yych <= 'z') goto yy740;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy742;
++yy739:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy743;
++              if (yych == '-') goto yy741;
+               if (yych <= '/') goto yy493;
 -                      goto yy743;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy743;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy741:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy740:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                      if (yych <= '9') goto yy743;
++                      if (yych <= '-') goto yy743;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
 -                      goto yy743;
++                      if (yych <= '9') goto yy742;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy743;
++                      goto yy742;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy742:
++                      if (yych <= 'z') goto yy742;
+                       goto yy493;
+               }
+       }
 -              if (yych == '-') goto yy744;
++yy741:
+       yych = *++p;
+       if (yych <= '9') {
 -              goto yy745;
++              if (yych == '-') goto yy743;
+               if (yych <= '/') goto yy493;
 -                      goto yy745;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy493;
 -                      if (yych <= 'z') goto yy745;
 -                      goto yy493;
+               } else {
+                       if (yych <= '`') goto yy493;
 -yy743:
++                      if (yych >= '{') goto yy493;
+               }
+       }
 -                      if (yych >= '.') goto yy499;
++yy742:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy493;
 -                0,  32,   0,   0,   0,   0,   0,   0, 
++                      if (yych <= '-') goto yy744;
++                      goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
+                       if (yych <= '9') goto yy745;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
+                       goto yy745;
+               } else {
+                       if (yych <= '`') goto yy493;
+                       if (yych <= 'z') goto yy745;
+                       goto yy493;
+               }
+       }
++yy743:
++      yych = *++p;
++      if (yych <= '9') {
++              if (yych == '-') goto yy744;
++              if (yych <= '/') goto yy493;
++              goto yy745;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy493;
++                      goto yy745;
++              } else {
++                      if (yych <= '`') goto yy493;
++                      if (yych <= 'z') goto yy745;
++                      goto yy493;
++              }
++      }
+ yy744:
+       yych = *++p;
+       if (yych <= '@') {
+               if (yych <= '/') goto yy493;
+               if (yych <= '9') goto yy625;
+               goto yy493;
+       } else {
+               if (yych <= 'Z') goto yy625;
+               if (yych <= '`') goto yy493;
+               if (yych <= 'z') goto yy625;
+               goto yy493;
+       }
+ yy745:
+       ++p;
+       if ((yych = *p) <= '=') {
+               if (yych <= '.') {
+                       if (yych <= '-') goto yy493;
+                       goto yy499;
+               } else {
+                       if (yych <= '/') goto yy493;
+                       if (yych <= '9') goto yy625;
+                       goto yy493;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '>') goto yy500;
+                       if (yych <= '@') goto yy493;
+                       goto yy625;
+               } else {
+                       if (yych <= '`') goto yy493;
+                       if (yych <= 'z') goto yy625;
+                       goto yy493;
+               }
+       }
+ }
+ }
+ // Try to match an HTML tag after first <, returning num of chars matched.
+ int _scan_html_tag(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+               /* table 1 .. 8: 0 */
+                 0, 230, 230, 230, 230, 230, 230, 230, 
+               230, 199, 199, 199, 199, 199, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               199, 230,  70, 230, 230, 230, 230, 134, 
+               230, 230, 230, 230, 230, 246, 246, 230, 
+               254, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 246, 230, 198, 198, 196, 230, 
+               230, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 230, 230, 226, 230, 246, 
+               198, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 254, 254, 254, 254, 254, 
+               254, 254, 254, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               230, 230, 230, 230, 230, 230, 230, 230, 
+               /* table 9 .. 11: 256 */
+                 0, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160,  32, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 128, 
+               160, 224, 224, 224, 224, 224, 224, 224, 
+               224, 224, 224, 224, 224, 224, 224, 224, 
+               224, 224, 224, 224, 224, 224, 224, 224, 
+               224, 224, 224, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+       };
+       yych = *p;
+       if (yych <= '/') {
+               if (yych <= ' ') {
+                       if (yych != '\n') goto yy753;
+               } else {
+                       if (yych <= '!') goto yy751;
+                       if (yych <= '.') goto yy753;
+                       goto yy750;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '?') goto yy752;
+                       goto yy753;
+               } else {
+                       if (yych <= 'Z') goto yy749;
+                       if (yych <= '`') goto yy753;
+                       if (yych <= 'z') goto yy749;
+                       goto yy753;
+               }
+       }
+ yy748:
+       { return 0; }
+ yy749:
+       yych = *(marker = ++p);
+       if (yych <= '9') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x08) goto yy748;
+                       if (yych <= '\r') goto yy790;
+                       goto yy748;
+               } else {
+                       if (yych <= ' ') goto yy790;
+                       if (yych <= '.') goto yy748;
+                       if (yych <= '/') goto yy792;
+                       goto yy788;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '>') goto yy758;
+                       goto yy748;
+               } else {
+                       if (yych <= 'Z') goto yy788;
+                       if (yych <= '`') goto yy748;
+                       if (yych <= 'z') goto yy788;
+                       goto yy748;
+               }
+       }
+ yy750:
+       yych = *(marker = ++p);
+       if (yych <= '@') goto yy748;
+       if (yych <= 'Z') goto yy784;
+       if (yych <= '`') goto yy748;
+       if (yych <= 'z') goto yy784;
+       goto yy748;
+ yy751:
+       yych = *(marker = ++p);
+       if (yybm[256+yych] & 64) {
+               goto yy761;
+       }
+       if (yych == '-') goto yy763;
+       if (yych <= '@') goto yy748;
+       if (yych <= '[') goto yy760;
+       goto yy748;
+ yy752:
+       yych = *(marker = ++p);
+       if (yych <= 0x00) goto yy748;
+       goto yy755;
+ yy753:
+       yych = *++p;
+       goto yy748;
+ yy754:
+       ++p;
+       yych = *p;
+ yy755:
+       if (yybm[256+yych] & 32) {
+               goto yy754;
+       }
+       if (yych >= 0x01) goto yy757;
+ yy756:
+       p = marker;
+       goto yy748;
+ yy757:
+       ++p;
+       yych = *p;
+       if (yych <= 0x00) goto yy756;
+       if (yych != '>') goto yy754;
+ yy758:
+       ++p;
+       { return (p - start); }
+ yy760:
+       yych = *++p;
+       if (yych == 'C') goto yy775;
+       if (yych == 'c') goto yy775;
+       goto yy756;
+ yy761:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 1) {
+               goto yy771;
+       }
+       if (yych <= '@') goto yy756;
+       if (yych <= 'Z') goto yy761;
+       goto yy756;
+ yy763:
+       yych = *++p;
+       if (yych != '-') goto yy756;
+       yych = *++p;
+       if (yych == '-') goto yy765;
+       if (yych == '>') goto yy756;
+       goto yy767;
+ yy765:
+       yych = *++p;
+       if (yych == '-') goto yy770;
+       if (yych == '>') goto yy756;
+       goto yy767;
+ yy766:
+       ++p;
+       yych = *p;
+ yy767:
+       if (yybm[256+yych] & 128) {
+               goto yy766;
+       }
+       if (yych <= 0x00) goto yy756;
+       ++p;
+       yych = *p;
+       if (yybm[256+yych] & 128) {
+               goto yy766;
+       }
+       if (yych <= 0x00) goto yy756;
+       yych = *++p;
+       if (yych == '>') goto yy758;
+       goto yy756;
+ yy770:
+       yych = *++p;
+       if (yych == '>') goto yy758;
+       goto yy756;
+ yy771:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 1) {
+               goto yy771;
+       }
+       if (yych <= 0x00) goto yy756;
+       if (yych == '>') goto yy758;
+ yy773:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 2) {
+               goto yy773;
+       }
+       if (yych <= 0x00) goto yy756;
+       goto yy758;
+ yy775:
+       yych = *++p;
+       if (yych == 'D') goto yy776;
+       if (yych != 'd') goto yy756;
+ yy776:
+       yych = *++p;
+       if (yych == 'A') goto yy777;
+       if (yych != 'a') goto yy756;
+ yy777:
+       yych = *++p;
+       if (yych == 'T') goto yy778;
+       if (yych != 't') goto yy756;
+ yy778:
+       yych = *++p;
+       if (yych == 'A') goto yy779;
+       if (yych != 'a') goto yy756;
+ yy779:
+       yych = *++p;
+       if (yych != '[') goto yy756;
+ yy780:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 4) {
+               goto yy780;
+       }
+       if (yych <= 0x00) goto yy756;
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 4) {
+               goto yy780;
+       }
+       if (yych <= 0x00) goto yy756;
+       ++p;
+       yych = *p;
+       if (yych <= 0x00) goto yy756;
+       if (yych == '>') goto yy758;
+       goto yy780;
+ yy784:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 8) {
+               goto yy784;
+       }
+       if (yych <= 0x1F) {
+               if (yych <= 0x08) goto yy756;
+               if (yych >= 0x0E) goto yy756;
+       } else {
+               if (yych <= ' ') goto yy786;
+               if (yych == '>') goto yy758;
+               goto yy756;
+       }
+ yy786:
+       ++p;
+       yych = *p;
+       if (yych <= 0x1F) {
+               if (yych <= 0x08) goto yy756;
+               if (yych <= '\r') goto yy786;
+               goto yy756;
+       } else {
+               if (yych <= ' ') goto yy786;
+               if (yych == '>') goto yy758;
+               goto yy756;
+       }
+ yy788:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x08) goto yy756;
+                       if (yych >= 0x0E) goto yy756;
+               } else {
+                       if (yych <= ' ') goto yy790;
+                       if (yych <= '.') goto yy756;
+                       if (yych <= '/') goto yy792;
+                       goto yy788;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '>') goto yy758;
+                       goto yy756;
+               } else {
+                       if (yych <= 'Z') goto yy788;
+                       if (yych <= '`') goto yy756;
+                       if (yych <= 'z') goto yy788;
+                       goto yy756;
+               }
+       }
+ yy790:
+       ++p;
+       yych = *p;
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) goto yy756;
+                       if (yych <= '\r') goto yy790;
+                       if (yych <= 0x1F) goto yy756;
+                       goto yy790;
+               } else {
+                       if (yych == '/') goto yy792;
+                       if (yych <= '9') goto yy756;
+                       goto yy793;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych == '>') goto yy758;
+                       if (yych <= '@') goto yy756;
+                       goto yy793;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy756;
+                               goto yy793;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych <= 'z') goto yy793;
+                               goto yy756;
+                       }
+               }
+       }
+ yy792:
+       yych = *++p;
+       if (yych == '>') goto yy758;
+       goto yy756;
+ yy793:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 16) {
+               goto yy793;
+       }
+       if (yych <= ',') {
+               if (yych <= '\r') {
+                       if (yych <= 0x08) goto yy756;
+               } else {
+                       if (yych != ' ') goto yy756;
+               }
+       } else {
+               if (yych <= '<') {
+                       if (yych <= '/') goto yy792;
+                       goto yy756;
+               } else {
+                       if (yych <= '=') goto yy797;
+                       if (yych <= '>') goto yy758;
+                       goto yy756;
+               }
+       }
+ yy795:
+       ++p;
+       yych = *p;
+       if (yych <= '<') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) goto yy756;
+                       if (yych <= '\r') goto yy795;
+                       if (yych <= 0x1F) goto yy756;
+                       goto yy795;
+               } else {
+                       if (yych <= '/') {
+                               if (yych <= '.') goto yy756;
+                               goto yy792;
+                       } else {
+                               if (yych == ':') goto yy793;
+                               goto yy756;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '=') goto yy797;
+                       if (yych <= '>') goto yy758;
+                       if (yych <= '@') goto yy756;
+                       goto yy793;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy756;
+                               goto yy793;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych <= 'z') goto yy793;
+                               goto yy756;
+                       }
+               }
+       }
+ yy797:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy799;
+       }
+       if (yych <= 0x00) goto yy756;
+       if (yych <= ' ') goto yy798;
+       if (yych <= '"') goto yy803;
+       if (yych <= '\'') goto yy801;
+       goto yy756;
+ yy798:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy799;
+       }
+       if (yych <= '"') {
+               if (yych <= 0x00) goto yy756;
+               if (yych <= ' ') goto yy812;
+               goto yy803;
+       } else {
+               if (yych <= '\'') goto yy801;
+               if (yych == '>') goto yy758;
+               goto yy756;
+       }
+ yy799:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy799;
+       }
+       if (yych <= 0x00) goto yy756;
+       if (yych <= ' ') goto yy806;
+       if (yych == '>') goto yy758;
+       goto yy756;
+ yy801:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
+               goto yy801;
+       }
+       if (yych <= 0x00) goto yy756;
+       goto yy805;
+ yy803:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy803;
+       }
+       if (yych <= 0x00) goto yy756;
+ yy805:
+       ++p;
+       yych = *p;
+       if (yych <= ' ') {
+               if (yych <= 0x08) goto yy756;
+               if (yych <= '\r') goto yy790;
+               if (yych <= 0x1F) goto yy756;
+               goto yy790;
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '.') goto yy756;
+                       goto yy792;
+               } else {
+                       if (yych == '>') goto yy758;
+                       goto yy756;
+               }
+       }
+ yy806:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy756;
+                               goto yy799;
+                       } else {
+                               if (yych <= '\r') goto yy806;
+                               if (yych <= 0x1F) goto yy799;
+                               goto yy806;
+                       }
+               } else {
+                       if (yych <= '"') {
+                               if (yych <= '!') goto yy799;
+                               goto yy756;
+                       } else {
+                               if (yych == '\'') goto yy756;
+                               goto yy799;
+                       }
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych <= ';') {
+                               if (yych >= ';') goto yy799;
+                       } else {
+                               if (yych <= '=') goto yy756;
+                               if (yych <= '>') goto yy758;
+                               goto yy799;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= 'Z') goto yy808;
+                               if (yych <= '^') goto yy799;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych >= '{') goto yy799;
+                       }
+               }
+       }
+ yy808:
+       ++p;
+       yych = *p;
+       if (yych <= '/') {
+               if (yych <= '!') {
+                       if (yych <= '\r') {
+                               if (yych <= 0x00) goto yy756;
+                               if (yych <= 0x08) goto yy799;
+                       } else {
+                               if (yych != ' ') goto yy799;
+                       }
+               } else {
+                       if (yych <= '\'') {
+                               if (yych <= '"') goto yy756;
+                               if (yych <= '&') goto yy799;
+                               goto yy756;
+                       } else {
+                               if (yych <= ',') goto yy799;
+                               if (yych <= '.') goto yy808;
+                               goto yy799;
+                       }
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych <= '<') {
+                               if (yych <= ':') goto yy808;
+                               if (yych <= ';') goto yy799;
+                               goto yy756;
+                       } else {
+                               if (yych <= '=') goto yy797;
+                               if (yych <= '>') goto yy758;
+                               goto yy799;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= 'Z') goto yy808;
+                               if (yych <= '^') goto yy799;
+                               goto yy808;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych <= 'z') goto yy808;
+                               goto yy799;
+                       }
+               }
+       }
+ yy810:
+       ++p;
+       yych = *p;
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy756;
+                               goto yy799;
+                       } else {
+                               if (yych <= '\r') goto yy810;
+                               if (yych <= 0x1F) goto yy799;
+                               goto yy810;
+                       }
+               } else {
+                       if (yych <= '&') {
+                               if (yych == '"') goto yy756;
+                               goto yy799;
+                       } else {
+                               if (yych <= '\'') goto yy756;
+                               if (yych <= '9') goto yy799;
+                               goto yy808;
+                       }
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych <= '<') {
+                               if (yych <= ';') goto yy799;
+                               goto yy756;
+                       } else {
+                               if (yych <= '=') goto yy797;
+                               if (yych <= '>') goto yy758;
+                               goto yy799;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= 'Z') goto yy808;
+                               if (yych <= '^') goto yy799;
+                               goto yy808;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych <= 'z') goto yy808;
+                               goto yy799;
+                       }
+               }
+       }
+ yy812:
+       ++p;
+       yych = *p;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy756;
+                               goto yy799;
+                       } else {
+                               if (yych <= '\r') goto yy812;
+                               if (yych <= 0x1F) goto yy799;
+                               goto yy812;
+                       }
+               } else {
+                       if (yych <= '"') {
+                               if (yych <= '!') goto yy799;
+                               goto yy803;
+                       } else {
+                               if (yych == '\'') goto yy801;
+                               goto yy799;
+                       }
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych <= ';') {
+                               if (yych <= ':') goto yy808;
+                               goto yy799;
+                       } else {
+                               if (yych <= '=') goto yy756;
+                               if (yych <= '>') goto yy758;
+                               goto yy799;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= 'Z') goto yy808;
+                               if (yych <= '^') goto yy799;
+                               goto yy808;
+                       } else {
+                               if (yych <= '`') goto yy756;
+                               if (yych <= 'z') goto yy808;
+                               goto yy799;
+                       }
+               }
+       }
+ }
+ }
+ // Try to match an HTML block tag including first <,
+ // returning num of chars matched.
+ int _scan_html_block_tag(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       yych = *p;
+       if (yych == '\n') goto yy816;
+       if (yych == '<') goto yy817;
+       goto yy818;
+ yy816:
+       { return 0; }
+ yy817:
+       yych = *(marker = ++p);
+       switch (yych) {
+       case '!':
+       case '?':       goto yy819;
+       case '/':       goto yy838;
+       case 'A':
+       case 'a':       goto yy823;
+       case 'B':
+       case 'b':       goto yy826;
+       case 'C':
+       case 'c':       goto yy830;
+       case 'D':
+       case 'd':       goto yy831;
+       case 'E':
+       case 'e':       goto yy834;
+       case 'F':
+       case 'f':       goto yy835;
+       case 'H':
+       case 'h':       goto yy824;
+       case 'I':
+       case 'i':       goto yy825;
+       case 'L':
+       case 'l':       goto yy827;
+       case 'M':
+       case 'm':       goto yy828;
+       case 'O':
+       case 'o':       goto yy829;
+       case 'P':
+       case 'p':       goto yy821;
+       case 'S':
+       case 's':       goto yy832;
+       case 'T':
+       case 't':       goto yy833;
+       case 'U':
+       case 'u':       goto yy836;
+       case 'V':
+       case 'v':       goto yy837;
+       default:        goto yy816;
+       }
+ yy818:
+       yych = *++p;
+       goto yy816;
+ yy819:
+       ++p;
+       { return (p - start); }
+ yy821:
+       yych = *++p;
+       if (yych <= '/') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x08) goto yy822;
+                       if (yych <= '\r') goto yy982;
+               } else {
+                       if (yych <= ' ') goto yy982;
+                       if (yych >= '/') goto yy982;
+               }
+       } else {
+               if (yych <= 'Q') {
+                       if (yych == '>') goto yy982;
+               } else {
+                       if (yych <= 'R') goto yy1095;
+                       if (yych == 'r') goto yy1095;
+               }
+       }
+ yy822:
+       p = marker;
+       goto yy816;
+ yy823:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych <= 'Q') goto yy822;
+               if (yych <= 'R') goto yy1088;
+               goto yy1087;
+       } else {
+               if (yych <= 'q') goto yy822;
+               if (yych <= 'r') goto yy1088;
+               if (yych <= 's') goto yy1087;
+               goto yy822;
+       }
+ yy824:
+       yych = *++p;
+       if (yych <= 'Q') {
+               if (yych <= 'D') {
+                       if (yych <= '0') goto yy822;
+                       if (yych <= '6') goto yy981;
+                       goto yy822;
+               } else {
+                       if (yych <= 'E') goto yy1080;
+                       if (yych == 'G') goto yy1079;
+                       goto yy822;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'R') goto yy981;
+                       if (yych == 'e') goto yy1080;
+                       goto yy822;
+               } else {
+                       if (yych <= 'g') goto yy1079;
+                       if (yych == 'r') goto yy981;
+                       goto yy822;
+               }
+       }
+ yy825:
+       yych = *++p;
+       if (yych == 'F') goto yy1075;
+       if (yych == 'f') goto yy1075;
+       goto yy822;
+ yy826:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych <= 'N') {
+                       if (yych == 'L') goto yy1063;
+                       goto yy822;
+               } else {
+                       if (yych <= 'O') goto yy1062;
+                       if (yych <= 'T') goto yy822;
+                       goto yy1061;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'l') goto yy1063;
+                       goto yy822;
+               } else {
+                       if (yych <= 'o') goto yy1062;
+                       if (yych == 'u') goto yy1061;
+                       goto yy822;
+               }
+       }
+ yy827:
+       yych = *++p;
+       if (yych == 'I') goto yy981;
+       if (yych == 'i') goto yy981;
+       goto yy822;
+ yy828:
+       yych = *++p;
+       if (yych == 'A') goto yy1060;
+       if (yych == 'a') goto yy1060;
+       goto yy822;
+ yy829:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych <= 'K') {
+                       if (yych == 'B') goto yy1053;
+                       goto yy822;
+               } else {
+                       if (yych <= 'L') goto yy981;
+                       if (yych <= 'T') goto yy822;
+                       goto yy1052;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych == 'b') goto yy1053;
+                       goto yy822;
+               } else {
+                       if (yych <= 'l') goto yy981;
+                       if (yych == 'u') goto yy1052;
+                       goto yy822;
+               }
+       }
+ yy830:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'A') goto yy1039;
+               if (yych <= 'N') goto yy822;
+               goto yy1038;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy822;
+                       goto yy1039;
+               } else {
+                       if (yych == 'o') goto yy1038;
+                       goto yy822;
+               }
+       }
+ yy831:
+       yych = *++p;
+       if (yych <= 'T') {
+               if (yych <= 'I') {
+                       if (yych == 'D') goto yy981;
+                       if (yych <= 'H') goto yy822;
+                       goto yy1037;
+               } else {
+                       if (yych == 'L') goto yy981;
+                       if (yych <= 'S') goto yy822;
+                       goto yy981;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych == 'd') goto yy981;
+                       if (yych <= 'h') goto yy822;
+                       goto yy1037;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= 'k') goto yy822;
+                               goto yy981;
+                       } else {
+                               if (yych == 't') goto yy981;
+                               goto yy822;
+                       }
+               }
+       }
+ yy832:
+       yych = *++p;
+       if (yych <= 'T') {
+               if (yych <= 'D') {
+                       if (yych == 'C') goto yy1026;
+                       goto yy822;
+               } else {
+                       if (yych <= 'E') goto yy1027;
+                       if (yych <= 'S') goto yy822;
+                       goto yy1025;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'c') goto yy1026;
+                       goto yy822;
+               } else {
+                       if (yych <= 'e') goto yy1027;
+                       if (yych == 't') goto yy1025;
+                       goto yy822;
+               }
+       }
+ yy833:
+       yych = *++p;
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy1011;
+       case 'B':
+       case 'b':       goto yy1010;
+       case 'D':
+       case 'R':
+       case 'd':
+       case 'r':       goto yy981;
+       case 'E':
+       case 'e':       goto yy1009;
+       case 'F':
+       case 'f':       goto yy1008;
+       case 'H':
+       case 'h':       goto yy1007;
+       default:        goto yy822;
+       }
+ yy834:
+       yych = *++p;
+       if (yych == 'M') goto yy1004;
+       if (yych == 'm') goto yy1004;
+       goto yy822;
+ yy835:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'I') goto yy985;
+               if (yych <= 'N') goto yy822;
+               goto yy984;
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'h') goto yy822;
+                       goto yy985;
+               } else {
+                       if (yych == 'o') goto yy984;
+                       goto yy822;
+               }
+       }
+ yy836:
+       yych = *++p;
+       if (yych == 'L') goto yy981;
+       if (yych == 'l') goto yy981;
+       goto yy822;
+ yy837:
+       yych = *++p;
+       if (yych == 'I') goto yy978;
+       if (yych == 'i') goto yy978;
+       goto yy822;
+ yy838:
+       yych = *++p;
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy840;
+       case 'B':
+       case 'b':       goto yy843;
+       case 'C':
+       case 'c':       goto yy847;
+       case 'D':
+       case 'd':       goto yy848;
+       case 'E':
+       case 'e':       goto yy851;
+       case 'F':
+       case 'f':       goto yy852;
+       case 'H':
+       case 'h':       goto yy841;
+       case 'I':
+       case 'i':       goto yy842;
+       case 'L':
+       case 'l':       goto yy844;
+       case 'M':
+       case 'm':       goto yy845;
+       case 'O':
+       case 'o':       goto yy846;
+       case 'P':
+       case 'p':       goto yy839;
+       case 'S':
+       case 's':       goto yy849;
+       case 'T':
+       case 't':       goto yy850;
+       case 'U':
+       case 'u':       goto yy853;
+       case 'V':
+       case 'v':       goto yy854;
+       default:        goto yy822;
+       }
+ yy839:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '\r') {
+                       if (yych <= 0x08) goto yy822;
+                       goto yy859;
+               } else {
+                       if (yych == ' ') goto yy859;
+                       goto yy822;
+               }
+       } else {
+               if (yych <= 'R') {
+                       if (yych <= '>') goto yy859;
+                       if (yych <= 'Q') goto yy822;
+                       goto yy972;
+               } else {
+                       if (yych == 'r') goto yy972;
+                       goto yy822;
+               }
+       }
+ yy840:
+       yych = *++p;
+       if (yych <= 'S') {
+               if (yych <= 'Q') goto yy822;
+               if (yych <= 'R') goto yy965;
+               goto yy964;
+       } else {
+               if (yych <= 'q') goto yy822;
+               if (yych <= 'r') goto yy965;
+               if (yych <= 's') goto yy964;
+               goto yy822;
+       }
+ yy841:
+       yych = *++p;
+       if (yych <= 'Q') {
+               if (yych <= 'D') {
+                       if (yych <= '0') goto yy822;
+                       if (yych <= '6') goto yy858;
+                       goto yy822;
+               } else {
+                       if (yych <= 'E') goto yy957;
+                       if (yych == 'G') goto yy956;
+                       goto yy822;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'R') goto yy858;
+                       if (yych == 'e') goto yy957;
+                       goto yy822;
+               } else {
+                       if (yych <= 'g') goto yy956;
+                       if (yych == 'r') goto yy858;
+                       goto yy822;
+               }
+       }
+ yy842:
+       yych = *++p;
+       if (yych == 'F') goto yy952;
+       if (yych == 'f') goto yy952;
+       goto yy822;
+ yy843:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych <= 'N') {
+                       if (yych == 'L') goto yy940;
+                       goto yy822;
+               } else {
+                       if (yych <= 'O') goto yy939;
+                       if (yych <= 'T') goto yy822;
+                       goto yy938;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'l') goto yy940;
+                       goto yy822;
+               } else {
+                       if (yych <= 'o') goto yy939;
+                       if (yych == 'u') goto yy938;
+                       goto yy822;
+               }
+       }
+ yy844:
+       yych = *++p;
+       if (yych == 'I') goto yy858;
+       if (yych == 'i') goto yy858;
+       goto yy822;
+ yy845:
+       yych = *++p;
+       if (yych == 'A') goto yy937;
+       if (yych == 'a') goto yy937;
+       goto yy822;
+ yy846:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych <= 'K') {
+                       if (yych == 'B') goto yy930;
+                       goto yy822;
+               } else {
+                       if (yych <= 'L') goto yy858;
+                       if (yych <= 'T') goto yy822;
+                       goto yy929;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych == 'b') goto yy930;
+                       goto yy822;
+               } else {
+                       if (yych <= 'l') goto yy858;
+                       if (yych == 'u') goto yy929;
+                       goto yy822;
+               }
+       }
+ yy847:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'A') goto yy916;
+               if (yych <= 'N') goto yy822;
+               goto yy915;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy822;
+                       goto yy916;
+               } else {
+                       if (yych == 'o') goto yy915;
+                       goto yy822;
+               }
+       }
+ yy848:
+       yych = *++p;
+       if (yych <= 'T') {
+               if (yych <= 'I') {
+                       if (yych == 'D') goto yy858;
+                       if (yych <= 'H') goto yy822;
+                       goto yy914;
+               } else {
+                       if (yych == 'L') goto yy858;
+                       if (yych <= 'S') goto yy822;
+                       goto yy858;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych == 'd') goto yy858;
+                       if (yych <= 'h') goto yy822;
+                       goto yy914;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= 'k') goto yy822;
+                               goto yy858;
+                       } else {
+                               if (yych == 't') goto yy858;
+                               goto yy822;
+                       }
+               }
+       }
+ yy849:
+       yych = *++p;
+       if (yych <= 'T') {
+               if (yych <= 'D') {
+                       if (yych == 'C') goto yy903;
+                       goto yy822;
+               } else {
+                       if (yych <= 'E') goto yy904;
+                       if (yych <= 'S') goto yy822;
+                       goto yy902;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'c') goto yy903;
+                       goto yy822;
+               } else {
+                       if (yych <= 'e') goto yy904;
+                       if (yych == 't') goto yy902;
+                       goto yy822;
+               }
+       }
+ yy850:
+       yych = *++p;
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy888;
+       case 'B':
+       case 'b':       goto yy887;
+       case 'D':
+       case 'R':
+       case 'd':
+       case 'r':       goto yy858;
+       case 'E':
+       case 'e':       goto yy886;
+       case 'F':
+       case 'f':       goto yy885;
+       case 'H':
+       case 'h':       goto yy884;
+       default:        goto yy822;
+       }
+ yy851:
+       yych = *++p;
+       if (yych == 'M') goto yy881;
+       if (yych == 'm') goto yy881;
+       goto yy822;
+ yy852:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'I') goto yy862;
+               if (yych <= 'N') goto yy822;
+               goto yy861;
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'h') goto yy822;
+                       goto yy862;
+               } else {
+                       if (yych == 'o') goto yy861;
+                       goto yy822;
+               }
+       }
+ yy853:
+       yych = *++p;
+       if (yych == 'L') goto yy858;
+       if (yych == 'l') goto yy858;
+       goto yy822;
+ yy854:
+       yych = *++p;
+       if (yych == 'I') goto yy855;
+       if (yych != 'i') goto yy822;
+ yy855:
+       yych = *++p;
+       if (yych == 'D') goto yy856;
+       if (yych != 'd') goto yy822;
+ yy856:
+       yych = *++p;
+       if (yych == 'E') goto yy857;
+       if (yych != 'e') goto yy822;
+ yy857:
+       yych = *++p;
+       if (yych == 'O') goto yy858;
+       if (yych != 'o') goto yy822;
+ yy858:
+       yych = *++p;
+       if (yych <= 0x1F) {
+               if (yych <= 0x08) goto yy822;
+               if (yych >= 0x0E) goto yy822;
+       } else {
+               if (yych <= ' ') goto yy859;
+               if (yych != '>') goto yy822;
+       }
+ yy859:
+       ++p;
+       { return (p - start); }
+ yy861:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == 'O') goto yy877;
+               if (yych <= 'Q') goto yy822;
+               goto yy878;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy822;
+                       goto yy877;
+               } else {
+                       if (yych == 'r') goto yy878;
+                       goto yy822;
+               }
+       }
+ yy862:
+       yych = *++p;
+       if (yych <= 'G') {
+               if (yych == 'E') goto yy863;
+               if (yych <= 'F') goto yy822;
+               goto yy864;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy822;
+               } else {
+                       if (yych == 'g') goto yy864;
+                       goto yy822;
+               }
+       }
+ yy863:
+       yych = *++p;
+       if (yych == 'L') goto yy873;
+       if (yych == 'l') goto yy873;
+       goto yy822;
+ yy864:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych == 'C') goto yy866;
+               if (yych <= 'T') goto yy822;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy822;
+                       goto yy866;
+               } else {
+                       if (yych != 'u') goto yy822;
+               }
+       }
+       yych = *++p;
+       if (yych == 'R') goto yy872;
+       if (yych == 'r') goto yy872;
+       goto yy822;
+ yy866:
+       yych = *++p;
+       if (yych == 'A') goto yy867;
+       if (yych != 'a') goto yy822;
+ yy867:
+       yych = *++p;
+       if (yych == 'P') goto yy868;
+       if (yych != 'p') goto yy822;
+ yy868:
+       yych = *++p;
+       if (yych == 'T') goto yy869;
+       if (yych != 't') goto yy822;
+ yy869:
+       yych = *++p;
+       if (yych == 'I') goto yy870;
+       if (yych != 'i') goto yy822;
+ yy870:
+       yych = *++p;
+       if (yych == 'O') goto yy871;
+       if (yych != 'o') goto yy822;
+ yy871:
+       yych = *++p;
+       if (yych == 'N') goto yy858;
+       if (yych == 'n') goto yy858;
+       goto yy822;
+ yy872:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy873:
+       yych = *++p;
+       if (yych == 'D') goto yy874;
+       if (yych != 'd') goto yy822;
+ yy874:
+       yych = *++p;
+       if (yych == 'S') goto yy875;
+       if (yych != 's') goto yy822;
+ yy875:
+       yych = *++p;
+       if (yych == 'E') goto yy876;
+       if (yych != 'e') goto yy822;
+ yy876:
+       yych = *++p;
+       if (yych == 'T') goto yy858;
+       if (yych == 't') goto yy858;
+       goto yy822;
+ yy877:
+       yych = *++p;
+       if (yych == 'T') goto yy879;
+       if (yych == 't') goto yy879;
+       goto yy822;
+ yy878:
+       yych = *++p;
+       if (yych == 'M') goto yy858;
+       if (yych == 'm') goto yy858;
+       goto yy822;
+ yy879:
+       yych = *++p;
+       if (yych == 'E') goto yy880;
+       if (yych != 'e') goto yy822;
+ yy880:
+       yych = *++p;
+       if (yych == 'R') goto yy858;
+       if (yych == 'r') goto yy858;
+       goto yy822;
+ yy881:
+       yych = *++p;
+       if (yych == 'B') goto yy882;
+       if (yych != 'b') goto yy822;
+ yy882:
+       yych = *++p;
+       if (yych == 'E') goto yy883;
+       if (yych != 'e') goto yy822;
+ yy883:
+       yych = *++p;
+       if (yych == 'D') goto yy858;
+       if (yych == 'd') goto yy858;
+       goto yy822;
+ yy884:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '\r') {
+                       if (yych <= 0x08) goto yy822;
+                       goto yy859;
+               } else {
+                       if (yych == ' ') goto yy859;
+                       goto yy822;
+               }
+       } else {
+               if (yych <= 'E') {
+                       if (yych <= '>') goto yy859;
+                       if (yych <= 'D') goto yy822;
+                       goto yy900;
+               } else {
+                       if (yych == 'e') goto yy900;
+                       goto yy822;
+               }
+       }
+ yy885:
+       yych = *++p;
+       if (yych == 'O') goto yy898;
+       if (yych == 'o') goto yy898;
+       goto yy822;
+ yy886:
+       yych = *++p;
+       if (yych == 'X') goto yy893;
+       if (yych == 'x') goto yy893;
+       goto yy822;
+ yy887:
+       yych = *++p;
+       if (yych == 'O') goto yy891;
+       if (yych == 'o') goto yy891;
+       goto yy822;
+ yy888:
+       yych = *++p;
+       if (yych == 'B') goto yy889;
+       if (yych != 'b') goto yy822;
+ yy889:
+       yych = *++p;
+       if (yych == 'L') goto yy890;
+       if (yych != 'l') goto yy822;
+ yy890:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy891:
+       yych = *++p;
+       if (yych == 'D') goto yy892;
+       if (yych != 'd') goto yy822;
+ yy892:
+       yych = *++p;
+       if (yych == 'Y') goto yy858;
+       if (yych == 'y') goto yy858;
+       goto yy822;
+ yy893:
+       yych = *++p;
+       if (yych == 'T') goto yy894;
+       if (yych != 't') goto yy822;
+ yy894:
+       yych = *++p;
+       if (yych == 'A') goto yy895;
+       if (yych != 'a') goto yy822;
+ yy895:
+       yych = *++p;
+       if (yych == 'R') goto yy896;
+       if (yych != 'r') goto yy822;
+ yy896:
+       yych = *++p;
+       if (yych == 'E') goto yy897;
+       if (yych != 'e') goto yy822;
+ yy897:
+       yych = *++p;
+       if (yych == 'A') goto yy858;
+       if (yych == 'a') goto yy858;
+       goto yy822;
+ yy898:
+       yych = *++p;
+       if (yych == 'O') goto yy899;
+       if (yych != 'o') goto yy822;
+ yy899:
+       yych = *++p;
+       if (yych == 'T') goto yy858;
+       if (yych == 't') goto yy858;
+       goto yy822;
+ yy900:
+       yych = *++p;
+       if (yych == 'A') goto yy901;
+       if (yych != 'a') goto yy822;
+ yy901:
+       yych = *++p;
+       if (yych == 'D') goto yy858;
+       if (yych == 'd') goto yy858;
+       goto yy822;
+ yy902:
+       yych = *++p;
+       if (yych == 'Y') goto yy912;
+       if (yych == 'y') goto yy912;
+       goto yy822;
+ yy903:
+       yych = *++p;
+       if (yych == 'R') goto yy909;
+       if (yych == 'r') goto yy909;
+       goto yy822;
+ yy904:
+       yych = *++p;
+       if (yych == 'C') goto yy905;
+       if (yych != 'c') goto yy822;
+ yy905:
+       yych = *++p;
+       if (yych == 'T') goto yy906;
+       if (yych != 't') goto yy822;
+ yy906:
+       yych = *++p;
+       if (yych == 'I') goto yy907;
+       if (yych != 'i') goto yy822;
+ yy907:
+       yych = *++p;
+       if (yych == 'O') goto yy908;
+       if (yych != 'o') goto yy822;
+ yy908:
+       yych = *++p;
+       if (yych == 'N') goto yy858;
+       if (yych == 'n') goto yy858;
+       goto yy822;
+ yy909:
+       yych = *++p;
+       if (yych == 'I') goto yy910;
+       if (yych != 'i') goto yy822;
+ yy910:
+       yych = *++p;
+       if (yych == 'P') goto yy911;
+       if (yych != 'p') goto yy822;
+ yy911:
+       yych = *++p;
+       if (yych == 'T') goto yy858;
+       if (yych == 't') goto yy858;
+       goto yy822;
+ yy912:
+       yych = *++p;
+       if (yych == 'L') goto yy913;
+       if (yych != 'l') goto yy822;
+ yy913:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy914:
+       yych = *++p;
+       if (yych == 'V') goto yy858;
+       if (yych == 'v') goto yy858;
+       goto yy822;
+ yy915:
+       yych = *++p;
+       if (yych == 'L') goto yy924;
+       if (yych == 'l') goto yy924;
+       goto yy822;
+ yy916:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'N') goto yy917;
+               if (yych <= 'O') goto yy822;
+               goto yy918;
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'm') goto yy822;
+               } else {
+                       if (yych == 'p') goto yy918;
+                       goto yy822;
+               }
+       }
+ yy917:
+       yych = *++p;
+       if (yych == 'V') goto yy922;
+       if (yych == 'v') goto yy922;
+       goto yy822;
+ yy918:
+       yych = *++p;
+       if (yych == 'T') goto yy919;
+       if (yych != 't') goto yy822;
+ yy919:
+       yych = *++p;
+       if (yych == 'I') goto yy920;
+       if (yych != 'i') goto yy822;
+ yy920:
+       yych = *++p;
+       if (yych == 'O') goto yy921;
+       if (yych != 'o') goto yy822;
+ yy921:
+       yych = *++p;
+       if (yych == 'N') goto yy858;
+       if (yych == 'n') goto yy858;
+       goto yy822;
+ yy922:
+       yych = *++p;
+       if (yych == 'A') goto yy923;
+       if (yych != 'a') goto yy822;
+ yy923:
+       yych = *++p;
+       if (yych == 'S') goto yy858;
+       if (yych == 's') goto yy858;
+       goto yy822;
+ yy924:
+       yych = *++p;
+       if (yych <= '=') {
+               if (yych <= '\r') {
+                       if (yych <= 0x08) goto yy822;
+                       goto yy859;
+               } else {
+                       if (yych == ' ') goto yy859;
+                       goto yy822;
+               }
+       } else {
+               if (yych <= 'G') {
+                       if (yych <= '>') goto yy859;
+                       if (yych <= 'F') goto yy822;
+               } else {
+                       if (yych != 'g') goto yy822;
+               }
+       }
+       yych = *++p;
+       if (yych == 'R') goto yy926;
+       if (yych != 'r') goto yy822;
+ yy926:
+       yych = *++p;
+       if (yych == 'O') goto yy927;
+       if (yych != 'o') goto yy822;
+ yy927:
+       yych = *++p;
+       if (yych == 'U') goto yy928;
+       if (yych != 'u') goto yy822;
+ yy928:
+       yych = *++p;
+       if (yych == 'P') goto yy858;
+       if (yych == 'p') goto yy858;
+       goto yy822;
+ yy929:
+       yych = *++p;
+       if (yych == 'T') goto yy934;
+       if (yych == 't') goto yy934;
+       goto yy822;
+ yy930:
+       yych = *++p;
+       if (yych == 'J') goto yy931;
+       if (yych != 'j') goto yy822;
+ yy931:
+       yych = *++p;
+       if (yych == 'E') goto yy932;
+       if (yych != 'e') goto yy822;
+ yy932:
+       yych = *++p;
+       if (yych == 'C') goto yy933;
+       if (yych != 'c') goto yy822;
+ yy933:
+       yych = *++p;
+       if (yych == 'T') goto yy858;
+       if (yych == 't') goto yy858;
+       goto yy822;
+ yy934:
+       yych = *++p;
+       if (yych == 'P') goto yy935;
+       if (yych != 'p') goto yy822;
+ yy935:
+       yych = *++p;
+       if (yych == 'U') goto yy936;
+       if (yych != 'u') goto yy822;
+ yy936:
+       yych = *++p;
+       if (yych == 'T') goto yy858;
+       if (yych == 't') goto yy858;
+       goto yy822;
+ yy937:
+       yych = *++p;
+       if (yych == 'P') goto yy858;
+       if (yych == 'p') goto yy858;
+       goto yy822;
+ yy938:
+       yych = *++p;
+       if (yych == 'T') goto yy949;
+       if (yych == 't') goto yy949;
+       goto yy822;
+ yy939:
+       yych = *++p;
+       if (yych == 'D') goto yy948;
+       if (yych == 'd') goto yy948;
+       goto yy822;
+ yy940:
+       yych = *++p;
+       if (yych == 'O') goto yy941;
+       if (yych != 'o') goto yy822;
+ yy941:
+       yych = *++p;
+       if (yych == 'C') goto yy942;
+       if (yych != 'c') goto yy822;
+ yy942:
+       yych = *++p;
+       if (yych == 'K') goto yy943;
+       if (yych != 'k') goto yy822;
+ yy943:
+       yych = *++p;
+       if (yych == 'Q') goto yy944;
+       if (yych != 'q') goto yy822;
+ yy944:
+       yych = *++p;
+       if (yych == 'U') goto yy945;
+       if (yych != 'u') goto yy822;
+ yy945:
+       yych = *++p;
+       if (yych == 'O') goto yy946;
+       if (yych != 'o') goto yy822;
+ yy946:
+       yych = *++p;
+       if (yych == 'T') goto yy947;
+       if (yych != 't') goto yy822;
+ yy947:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy948:
+       yych = *++p;
+       if (yych == 'Y') goto yy858;
+       if (yych == 'y') goto yy858;
+       goto yy822;
+ yy949:
+       yych = *++p;
+       if (yych == 'T') goto yy950;
+       if (yych != 't') goto yy822;
+ yy950:
+       yych = *++p;
+       if (yych == 'O') goto yy951;
+       if (yych != 'o') goto yy822;
+ yy951:
+       yych = *++p;
+       if (yych == 'N') goto yy858;
+       if (yych == 'n') goto yy858;
+       goto yy822;
+ yy952:
+       yych = *++p;
+       if (yych == 'R') goto yy953;
+       if (yych != 'r') goto yy822;
+ yy953:
+       yych = *++p;
+       if (yych == 'A') goto yy954;
+       if (yych != 'a') goto yy822;
+ yy954:
+       yych = *++p;
+       if (yych == 'M') goto yy955;
+       if (yych != 'm') goto yy822;
+ yy955:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy956:
+       yych = *++p;
+       if (yych == 'R') goto yy961;
+       if (yych == 'r') goto yy961;
+       goto yy822;
+ yy957:
+       yych = *++p;
+       if (yych == 'A') goto yy958;
+       if (yych != 'a') goto yy822;
+ yy958:
+       yych = *++p;
+       if (yych == 'D') goto yy959;
+       if (yych != 'd') goto yy822;
+ yy959:
+       yych = *++p;
+       if (yych == 'E') goto yy960;
+       if (yych != 'e') goto yy822;
+ yy960:
+       yych = *++p;
+       if (yych == 'R') goto yy858;
+       if (yych == 'r') goto yy858;
+       goto yy822;
+ yy961:
+       yych = *++p;
+       if (yych == 'O') goto yy962;
+       if (yych != 'o') goto yy822;
+ yy962:
+       yych = *++p;
+       if (yych == 'U') goto yy963;
+       if (yych != 'u') goto yy822;
+ yy963:
+       yych = *++p;
+       if (yych == 'P') goto yy858;
+       if (yych == 'p') goto yy858;
+       goto yy822;
+ yy964:
+       yych = *++p;
+       if (yych == 'I') goto yy970;
+       if (yych == 'i') goto yy970;
+       goto yy822;
+ yy965:
+       yych = *++p;
+       if (yych == 'T') goto yy966;
+       if (yych != 't') goto yy822;
+ yy966:
+       yych = *++p;
+       if (yych == 'I') goto yy967;
+       if (yych != 'i') goto yy822;
+ yy967:
+       yych = *++p;
+       if (yych == 'C') goto yy968;
+       if (yych != 'c') goto yy822;
+ yy968:
+       yych = *++p;
+       if (yych == 'L') goto yy969;
+       if (yych != 'l') goto yy822;
+ yy969:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy970:
+       yych = *++p;
+       if (yych == 'D') goto yy971;
+       if (yych != 'd') goto yy822;
+ yy971:
+       yych = *++p;
+       if (yych == 'E') goto yy858;
+       if (yych == 'e') goto yy858;
+       goto yy822;
+ yy972:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'E') goto yy858;
+               if (yych <= 'N') goto yy822;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy822;
+                       goto yy858;
+               } else {
+                       if (yych != 'o') goto yy822;
+               }
+       }
+       yych = *++p;
+       if (yych == 'G') goto yy974;
+       if (yych != 'g') goto yy822;
+ yy974:
+       yych = *++p;
+       if (yych == 'R') goto yy975;
+       if (yych != 'r') goto yy822;
+ yy975:
+       yych = *++p;
+       if (yych == 'E') goto yy976;
+       if (yych != 'e') goto yy822;
+ yy976:
+       yych = *++p;
+       if (yych == 'S') goto yy977;
+       if (yych != 's') goto yy822;
+ yy977:
+       yych = *++p;
+       if (yych == 'S') goto yy858;
+       if (yych == 's') goto yy858;
+       goto yy822;
+ yy978:
+       yych = *++p;
+       if (yych == 'D') goto yy979;
+       if (yych != 'd') goto yy822;
+ yy979:
+       yych = *++p;
+       if (yych == 'E') goto yy980;
+       if (yych != 'e') goto yy822;
+ yy980:
+       yych = *++p;
+       if (yych == 'O') goto yy981;
+       if (yych != 'o') goto yy822;
+ yy981:
+       yych = *++p;
+       if (yych <= ' ') {
+               if (yych <= 0x08) goto yy822;
+               if (yych <= '\r') goto yy982;
+               if (yych <= 0x1F) goto yy822;
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '.') goto yy822;
+               } else {
+                       if (yych != '>') goto yy822;
+               }
+       }
+ yy982:
+       ++p;
+       { return (p - start); }
+ yy984:
+       yych = *++p;
+       if (yych <= 'R') {
+               if (yych == 'O') goto yy1000;
+               if (yych <= 'Q') goto yy822;
+               goto yy1001;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy822;
+                       goto yy1000;
+               } else {
+                       if (yych == 'r') goto yy1001;
+                       goto yy822;
+               }
+       }
+ yy985:
+       yych = *++p;
+       if (yych <= 'G') {
+               if (yych == 'E') goto yy986;
+               if (yych <= 'F') goto yy822;
+               goto yy987;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy822;
+               } else {
+                       if (yych == 'g') goto yy987;
+                       goto yy822;
+               }
+       }
+ yy986:
+       yych = *++p;
+       if (yych == 'L') goto yy996;
+       if (yych == 'l') goto yy996;
+       goto yy822;
+ yy987:
+       yych = *++p;
+       if (yych <= 'U') {
+               if (yych == 'C') goto yy989;
+               if (yych <= 'T') goto yy822;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy822;
+                       goto yy989;
+               } else {
+                       if (yych != 'u') goto yy822;
+               }
+       }
+       yych = *++p;
+       if (yych == 'R') goto yy995;
+       if (yych == 'r') goto yy995;
+       goto yy822;
+ yy989:
+       yych = *++p;
+       if (yych == 'A') goto yy990;
+       if (yych != 'a') goto yy822;
+ yy990:
+       yych = *++p;
+       if (yych == 'P') goto yy991;
+       if (yych != 'p') goto yy822;
+ yy991:
+       yych = *++p;
+       if (yych == 'T') goto yy992;
+       if (yych != 't') goto yy822;
+ yy992:
+       yych = *++p;
+       if (yych == 'I') goto yy993;
+       if (yych != 'i') goto yy822;
+ yy993:
+       yych = *++p;
+       if (yych == 'O') goto yy994;
+       if (yych != 'o') goto yy822;
+ yy994:
+       yych = *++p;
+       if (yych == 'N') goto yy981;
+       if (yych == 'n') goto yy981;
+       goto yy822;
+ yy995:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy996:
+       yych = *++p;
+       if (yych == 'D') goto yy997;
+       if (yych != 'd') goto yy822;
+ yy997:
+       yych = *++p;
+       if (yych == 'S') goto yy998;
+       if (yych != 's') goto yy822;
+ yy998:
+       yych = *++p;
+       if (yych == 'E') goto yy999;
+       if (yych != 'e') goto yy822;
+ yy999:
+       yych = *++p;
+       if (yych == 'T') goto yy981;
+       if (yych == 't') goto yy981;
+       goto yy822;
+ yy1000:
+       yych = *++p;
+       if (yych == 'T') goto yy1002;
+       if (yych == 't') goto yy1002;
+       goto yy822;
+ yy1001:
+       yych = *++p;
+       if (yych == 'M') goto yy981;
+       if (yych == 'm') goto yy981;
+       goto yy822;
+ yy1002:
+       yych = *++p;
+       if (yych == 'E') goto yy1003;
+       if (yych != 'e') goto yy822;
+ yy1003:
+       yych = *++p;
+       if (yych == 'R') goto yy981;
+       if (yych == 'r') goto yy981;
+       goto yy822;
+ yy1004:
+       yych = *++p;
+       if (yych == 'B') goto yy1005;
+       if (yych != 'b') goto yy822;
+ yy1005:
+       yych = *++p;
+       if (yych == 'E') goto yy1006;
+       if (yych != 'e') goto yy822;
+ yy1006:
+       yych = *++p;
+       if (yych == 'D') goto yy981;
+       if (yych == 'd') goto yy981;
+       goto yy822;
+ yy1007:
+       yych = *++p;
+       if (yych <= '/') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x08) goto yy822;
+                       if (yych <= '\r') goto yy982;
+                       goto yy822;
+               } else {
+                       if (yych <= ' ') goto yy982;
+                       if (yych <= '.') goto yy822;
+                       goto yy982;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych == '>') goto yy982;
+                       goto yy822;
+               } else {
+                       if (yych <= 'E') goto yy1023;
+                       if (yych == 'e') goto yy1023;
+                       goto yy822;
+               }
+       }
+ yy1008:
+       yych = *++p;
+       if (yych == 'O') goto yy1021;
+       if (yych == 'o') goto yy1021;
+       goto yy822;
+ yy1009:
+       yych = *++p;
+       if (yych == 'X') goto yy1016;
+       if (yych == 'x') goto yy1016;
+       goto yy822;
+ yy1010:
+       yych = *++p;
+       if (yych == 'O') goto yy1014;
+       if (yych == 'o') goto yy1014;
+       goto yy822;
+ yy1011:
+       yych = *++p;
+       if (yych == 'B') goto yy1012;
+       if (yych != 'b') goto yy822;
+ yy1012:
+       yych = *++p;
+       if (yych == 'L') goto yy1013;
+       if (yych != 'l') goto yy822;
+ yy1013:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1014:
+       yych = *++p;
+       if (yych == 'D') goto yy1015;
+       if (yych != 'd') goto yy822;
+ yy1015:
+       yych = *++p;
+       if (yych == 'Y') goto yy981;
+       if (yych == 'y') goto yy981;
+       goto yy822;
+ yy1016:
+       yych = *++p;
+       if (yych == 'T') goto yy1017;
+       if (yych != 't') goto yy822;
+ yy1017:
+       yych = *++p;
+       if (yych == 'A') goto yy1018;
+       if (yych != 'a') goto yy822;
+ yy1018:
+       yych = *++p;
+       if (yych == 'R') goto yy1019;
+       if (yych != 'r') goto yy822;
+ yy1019:
+       yych = *++p;
+       if (yych == 'E') goto yy1020;
+       if (yych != 'e') goto yy822;
+ yy1020:
+       yych = *++p;
+       if (yych == 'A') goto yy981;
+       if (yych == 'a') goto yy981;
+       goto yy822;
+ yy1021:
+       yych = *++p;
+       if (yych == 'O') goto yy1022;
+       if (yych != 'o') goto yy822;
+ yy1022:
+       yych = *++p;
+       if (yych == 'T') goto yy981;
+       if (yych == 't') goto yy981;
+       goto yy822;
+ yy1023:
+       yych = *++p;
+       if (yych == 'A') goto yy1024;
+       if (yych != 'a') goto yy822;
+ yy1024:
+       yych = *++p;
+       if (yych == 'D') goto yy981;
+       if (yych == 'd') goto yy981;
+       goto yy822;
+ yy1025:
+       yych = *++p;
+       if (yych == 'Y') goto yy1035;
+       if (yych == 'y') goto yy1035;
+       goto yy822;
+ yy1026:
+       yych = *++p;
+       if (yych == 'R') goto yy1032;
+       if (yych == 'r') goto yy1032;
+       goto yy822;
+ yy1027:
+       yych = *++p;
+       if (yych == 'C') goto yy1028;
+       if (yych != 'c') goto yy822;
+ yy1028:
+       yych = *++p;
+       if (yych == 'T') goto yy1029;
+       if (yych != 't') goto yy822;
+ yy1029:
+       yych = *++p;
+       if (yych == 'I') goto yy1030;
+       if (yych != 'i') goto yy822;
+ yy1030:
+       yych = *++p;
+       if (yych == 'O') goto yy1031;
+       if (yych != 'o') goto yy822;
+ yy1031:
+       yych = *++p;
+       if (yych == 'N') goto yy981;
+       if (yych == 'n') goto yy981;
+       goto yy822;
+ yy1032:
+       yych = *++p;
+       if (yych == 'I') goto yy1033;
+       if (yych != 'i') goto yy822;
+ yy1033:
+       yych = *++p;
+       if (yych == 'P') goto yy1034;
+       if (yych != 'p') goto yy822;
+ yy1034:
+       yych = *++p;
+       if (yych == 'T') goto yy981;
+       if (yych == 't') goto yy981;
+       goto yy822;
+ yy1035:
+       yych = *++p;
+       if (yych == 'L') goto yy1036;
+       if (yych != 'l') goto yy822;
+ yy1036:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1037:
+       yych = *++p;
+       if (yych == 'V') goto yy981;
+       if (yych == 'v') goto yy981;
+       goto yy822;
+ yy1038:
+       yych = *++p;
+       if (yych == 'L') goto yy1047;
+       if (yych == 'l') goto yy1047;
+       goto yy822;
+ yy1039:
+       yych = *++p;
+       if (yych <= 'P') {
+               if (yych == 'N') goto yy1040;
+               if (yych <= 'O') goto yy822;
+               goto yy1041;
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'm') goto yy822;
+               } else {
+                       if (yych == 'p') goto yy1041;
+                       goto yy822;
+               }
+       }
+ yy1040:
+       yych = *++p;
+       if (yych == 'V') goto yy1045;
+       if (yych == 'v') goto yy1045;
+       goto yy822;
+ yy1041:
+       yych = *++p;
+       if (yych == 'T') goto yy1042;
+       if (yych != 't') goto yy822;
+ yy1042:
+       yych = *++p;
+       if (yych == 'I') goto yy1043;
+       if (yych != 'i') goto yy822;
+ yy1043:
+       yych = *++p;
+       if (yych == 'O') goto yy1044;
+       if (yych != 'o') goto yy822;
+ yy1044:
+       yych = *++p;
+       if (yych == 'N') goto yy981;
+       if (yych == 'n') goto yy981;
+       goto yy822;
+ yy1045:
+       yych = *++p;
+       if (yych == 'A') goto yy1046;
+       if (yych != 'a') goto yy822;
+ yy1046:
+       yych = *++p;
+       if (yych == 'S') goto yy981;
+       if (yych == 's') goto yy981;
+       goto yy822;
+ yy1047:
+       yych = *++p;
+       if (yych <= '/') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x08) goto yy822;
+                       if (yych <= '\r') goto yy982;
+                       goto yy822;
+               } else {
+                       if (yych <= ' ') goto yy982;
+                       if (yych <= '.') goto yy822;
+                       goto yy982;
+               }
+       } else {
+               if (yych <= 'F') {
+                       if (yych == '>') goto yy982;
+                       goto yy822;
+               } else {
+                       if (yych <= 'G') goto yy1048;
+                       if (yych != 'g') goto yy822;
+               }
+       }
+ yy1048:
+       yych = *++p;
+       if (yych == 'R') goto yy1049;
+       if (yych != 'r') goto yy822;
+ yy1049:
+       yych = *++p;
+       if (yych == 'O') goto yy1050;
+       if (yych != 'o') goto yy822;
+ yy1050:
+       yych = *++p;
+       if (yych == 'U') goto yy1051;
+       if (yych != 'u') goto yy822;
+ yy1051:
+       yych = *++p;
+       if (yych == 'P') goto yy981;
+       if (yych == 'p') goto yy981;
+       goto yy822;
+ yy1052:
+       yych = *++p;
+       if (yych == 'T') goto yy1057;
+       if (yych == 't') goto yy1057;
+       goto yy822;
+ yy1053:
+       yych = *++p;
+       if (yych == 'J') goto yy1054;
+       if (yych != 'j') goto yy822;
+ yy1054:
+       yych = *++p;
+       if (yych == 'E') goto yy1055;
+       if (yych != 'e') goto yy822;
+ yy1055:
+       yych = *++p;
+       if (yych == 'C') goto yy1056;
+       if (yych != 'c') goto yy822;
+ yy1056:
+       yych = *++p;
+       if (yych == 'T') goto yy981;
+       if (yych == 't') goto yy981;
+       goto yy822;
+ yy1057:
+       yych = *++p;
+       if (yych == 'P') goto yy1058;
+       if (yych != 'p') goto yy822;
+ yy1058:
+       yych = *++p;
+       if (yych == 'U') goto yy1059;
+       if (yych != 'u') goto yy822;
+ yy1059:
+       yych = *++p;
+       if (yych == 'T') goto yy981;
+       if (yych == 't') goto yy981;
+       goto yy822;
+ yy1060:
+       yych = *++p;
+       if (yych == 'P') goto yy981;
+       if (yych == 'p') goto yy981;
+       goto yy822;
+ yy1061:
+       yych = *++p;
+       if (yych == 'T') goto yy1072;
+       if (yych == 't') goto yy1072;
+       goto yy822;
+ yy1062:
+       yych = *++p;
+       if (yych == 'D') goto yy1071;
+       if (yych == 'd') goto yy1071;
+       goto yy822;
+ yy1063:
+       yych = *++p;
+       if (yych == 'O') goto yy1064;
+       if (yych != 'o') goto yy822;
+ yy1064:
+       yych = *++p;
+       if (yych == 'C') goto yy1065;
+       if (yych != 'c') goto yy822;
+ yy1065:
+       yych = *++p;
+       if (yych == 'K') goto yy1066;
+       if (yych != 'k') goto yy822;
+ yy1066:
+       yych = *++p;
+       if (yych == 'Q') goto yy1067;
+       if (yych != 'q') goto yy822;
+ yy1067:
+       yych = *++p;
+       if (yych == 'U') goto yy1068;
+       if (yych != 'u') goto yy822;
+ yy1068:
+       yych = *++p;
+       if (yych == 'O') goto yy1069;
+       if (yych != 'o') goto yy822;
+ yy1069:
+       yych = *++p;
+       if (yych == 'T') goto yy1070;
+       if (yych != 't') goto yy822;
+ yy1070:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1071:
+       yych = *++p;
+       if (yych == 'Y') goto yy981;
+       if (yych == 'y') goto yy981;
+       goto yy822;
+ yy1072:
+       yych = *++p;
+       if (yych == 'T') goto yy1073;
+       if (yych != 't') goto yy822;
+ yy1073:
+       yych = *++p;
+       if (yych == 'O') goto yy1074;
+       if (yych != 'o') goto yy822;
+ yy1074:
+       yych = *++p;
+       if (yych == 'N') goto yy981;
+       if (yych == 'n') goto yy981;
+       goto yy822;
+ yy1075:
+       yych = *++p;
+       if (yych == 'R') goto yy1076;
+       if (yych != 'r') goto yy822;
+ yy1076:
+       yych = *++p;
+       if (yych == 'A') goto yy1077;
+       if (yych != 'a') goto yy822;
+ yy1077:
+       yych = *++p;
+       if (yych == 'M') goto yy1078;
+       if (yych != 'm') goto yy822;
+ yy1078:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1079:
+       yych = *++p;
+       if (yych == 'R') goto yy1084;
+       if (yych == 'r') goto yy1084;
+       goto yy822;
+ yy1080:
+       yych = *++p;
+       if (yych == 'A') goto yy1081;
+       if (yych != 'a') goto yy822;
+ yy1081:
+       yych = *++p;
+       if (yych == 'D') goto yy1082;
+       if (yych != 'd') goto yy822;
+ yy1082:
+       yych = *++p;
+       if (yych == 'E') goto yy1083;
+       if (yych != 'e') goto yy822;
+ yy1083:
+       yych = *++p;
+       if (yych == 'R') goto yy981;
+       if (yych == 'r') goto yy981;
+       goto yy822;
+ yy1084:
+       yych = *++p;
+       if (yych == 'O') goto yy1085;
+       if (yych != 'o') goto yy822;
+ yy1085:
+       yych = *++p;
+       if (yych == 'U') goto yy1086;
+       if (yych != 'u') goto yy822;
+ yy1086:
+       yych = *++p;
+       if (yych == 'P') goto yy981;
+       if (yych == 'p') goto yy981;
+       goto yy822;
+ yy1087:
+       yych = *++p;
+       if (yych == 'I') goto yy1093;
+       if (yych == 'i') goto yy1093;
+       goto yy822;
+ yy1088:
+       yych = *++p;
+       if (yych == 'T') goto yy1089;
+       if (yych != 't') goto yy822;
+ yy1089:
+       yych = *++p;
+       if (yych == 'I') goto yy1090;
+       if (yych != 'i') goto yy822;
+ yy1090:
+       yych = *++p;
+       if (yych == 'C') goto yy1091;
+       if (yych != 'c') goto yy822;
+ yy1091:
+       yych = *++p;
+       if (yych == 'L') goto yy1092;
+       if (yych != 'l') goto yy822;
+ yy1092:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1093:
+       yych = *++p;
+       if (yych == 'D') goto yy1094;
+       if (yych != 'd') goto yy822;
+ yy1094:
+       yych = *++p;
+       if (yych == 'E') goto yy981;
+       if (yych == 'e') goto yy981;
+       goto yy822;
+ yy1095:
+       yych = *++p;
+       if (yych <= 'O') {
+               if (yych == 'E') goto yy981;
+               if (yych <= 'N') goto yy822;
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'd') goto yy822;
+                       goto yy981;
+               } else {
+                       if (yych != 'o') goto yy822;
+               }
+       }
+       yych = *++p;
+       if (yych == 'G') goto yy1097;
+       if (yych != 'g') goto yy822;
+ yy1097:
+       yych = *++p;
+       if (yych == 'R') goto yy1098;
+       if (yych != 'r') goto yy822;
+ yy1098:
+       yych = *++p;
+       if (yych == 'E') goto yy1099;
+       if (yych != 'e') goto yy822;
+ yy1099:
+       yych = *++p;
+       if (yych == 'S') goto yy1100;
+       if (yych != 's') goto yy822;
+ yy1100:
+       ++p;
+       if ((yych = *p) == 'S') goto yy981;
+       if (yych == 's') goto yy981;
+       goto yy822;
+ }
+ }
+ // Try to match a URL in a link or reference, return number of chars matched.
+ // This may optionally be contained in <..>; otherwise
+ // whitespace and unbalanced right parentheses aren't allowed.
+ // Newlines aren't ever allowed.
+ int _scan_link_url(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       unsigned int yyaccept = 0;
+       static const unsigned char yybm[] = {
+                 0,  64,  64,  64,  64,  64,  64,  64, 
+                64,  64,   8,  64,  64,  64,  64,  64, 
+                64,  64,  64,  64,  64,  64,  64,  64, 
+                64,  64,  64,  64,  64,  64,  64,  64, 
+                72, 112, 112, 112, 112, 112, 112, 112, 
+                64,  64, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112,  16, 112,  16, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 128, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+               112, 112, 112, 112, 112, 112, 112, 112, 
+       };
+       yych = *p;
+       if (yych <= '(') {
+               if (yych <= 0x1F) {
+                       if (yych == '\n') goto yy1104;
+                       goto yy1112;
+               } else {
+                       if (yych <= ' ') goto yy1106;
+                       if (yych <= '\'') goto yy1108;
+                       goto yy1111;
+               }
+       } else {
+               if (yych <= '<') {
+                       if (yych <= ')') goto yy1112;
+                       if (yych <= ';') goto yy1108;
+                       goto yy1107;
+               } else {
+                       if (yych == '\\') goto yy1109;
+                       goto yy1108;
+               }
+       }
+ yy1103:
+       { return (p - start); }
+ yy1104:
+       yyaccept = 0;
+       marker = ++p;
+       yych = *p;
+ yy1105:
+       if (yybm[0+yych] & 8) {
+               goto yy1104;
+       }
+       if (yych <= ')') {
+               if (yych <= 0x1F) goto yy1103;
+               if (yych <= '\'') goto yy1117;
+               if (yych <= '(') goto yy1113;
+               goto yy1103;
+       } else {
+               if (yych <= '<') {
+                       if (yych <= ';') goto yy1117;
+                       goto yy1120;
+               } else {
+                       if (yych == '\\') goto yy1119;
+                       goto yy1117;
+               }
+       }
+ yy1106:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       goto yy1105;
+ yy1107:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       if (yybm[0+yych] & 32) {
+               goto yy1120;
+       }
+       if (yych <= ' ') {
+               if (yych <= 0x00) goto yy1103;
+               if (yych == '\n') goto yy1103;
+               goto yy1127;
+       } else {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy1125;
+                       goto yy1127;
+               } else {
+                       if (yych <= '<') goto yy1117;
+                       if (yych <= '>') goto yy1122;
+                       goto yy1124;
+               }
+       }
+ yy1108:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       goto yy1118;
+ yy1109:
+       ++p;
+       if ((yych = *p) <= '@') {
+               if (yych <= ' ') goto yy1110;
+               if (yych <= '/') goto yy1117;
+               if (yych >= ':') goto yy1117;
+       } else {
+               if (yych <= '`') {
+                       if (yych >= '[') goto yy1117;
+               } else {
+                       if (yych <= 'z') goto yy1110;
+                       if (yych <= '~') goto yy1117;
+               }
+       }
+ yy1110:
+       { return 0; }
+ yy1111:
+       yyaccept = 1;
+       yych = *(marker = ++p);
+       if (yych <= ' ') goto yy1110;
+       if (yych == '(') goto yy1110;
+       goto yy1114;
+ yy1112:
+       yych = *++p;
+       goto yy1110;
+ yy1113:
+       ++p;
+       yych = *p;
+ yy1114:
+       if (yybm[0+yych] & 16) {
+               goto yy1113;
+       }
+       if (yych <= '(') goto yy1115;
+       if (yych <= ')') goto yy1117;
+       goto yy1116;
+ yy1115:
+       p = marker;
+       if (yyaccept <= 1) {
+               if (yyaccept == 0) {
+                       goto yy1103;
+               } else {
+                       goto yy1110;
+               }
+       } else {
+               goto yy1123;
+       }
+ yy1116:
+       ++p;
+       yych = *p;
+       if (yych <= '@') {
+               if (yych <= ' ') goto yy1115;
+               if (yych <= '/') goto yy1113;
+               if (yych <= '9') goto yy1115;
+               goto yy1113;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy1115;
+                       goto yy1113;
+               } else {
+                       if (yych <= 'z') goto yy1115;
+                       if (yych <= '~') goto yy1113;
+                       goto yy1115;
+               }
+       }
+ yy1117:
+       yyaccept = 0;
+       marker = ++p;
+       yych = *p;
+ yy1118:
+       if (yych <= '(') {
+               if (yych <= ' ') goto yy1103;
+               if (yych <= '\'') goto yy1117;
+               goto yy1113;
+       } else {
+               if (yych <= ')') goto yy1103;
+               if (yych != '\\') goto yy1117;
+       }
+ yy1119:
+       ++p;
+       yych = *p;
+       if (yych <= '@') {
+               if (yych <= ' ') goto yy1115;
+               if (yych <= '/') goto yy1117;
+               if (yych <= '9') goto yy1115;
+               goto yy1117;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy1115;
+                       goto yy1117;
+               } else {
+                       if (yych <= 'z') goto yy1115;
+                       if (yych <= '~') goto yy1117;
+                       goto yy1115;
+               }
+       }
+ yy1120:
+       yyaccept = 0;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy1120;
+       }
+       if (yych <= ' ') {
+               if (yych <= 0x00) goto yy1103;
+               if (yych == '\n') goto yy1103;
+               goto yy1127;
+       } else {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy1125;
+                       goto yy1127;
+               } else {
+                       if (yych <= '<') goto yy1117;
+                       if (yych >= '?') goto yy1124;
+               }
+       }
+ yy1122:
+       yyaccept = 2;
+       yych = *(marker = ++p);
+       if (yych <= ' ') goto yy1123;
+       if (yych != ')') goto yy1118;
+ yy1123:
+       { return (p - start); }
+ yy1124:
+       ++p;
+       yych = *p;
+       if (yych <= '>') {
+               if (yych <= ' ') {
+                       if (yych <= 0x00) goto yy1115;
+                       if (yych == '\n') goto yy1115;
+                       goto yy1127;
+               } else {
+                       if (yych <= '/') goto yy1120;
+                       if (yych <= '9') goto yy1127;
+                       if (yych <= '=') goto yy1120;
+                       goto yy1137;
+               }
+       } else {
+               if (yych <= '\\') {
+                       if (yych <= '@') goto yy1120;
+                       if (yych <= 'Z') goto yy1127;
+                       if (yych <= '[') goto yy1120;
+                       goto yy1138;
+               } else {
+                       if (yych <= '`') goto yy1120;
+                       if (yych <= 'z') goto yy1127;
+                       if (yych <= '~') goto yy1120;
+                       goto yy1127;
+               }
+       }
+ yy1125:
+       ++p;
+       yych = *p;
+       if (yych <= ')') {
+               if (yych <= '\n') {
+                       if (yych <= 0x00) goto yy1115;
+                       if (yych >= '\n') goto yy1115;
+               } else {
+                       if (yych <= ' ') goto yy1127;
+                       if (yych <= '\'') goto yy1125;
+                       if (yych >= ')') goto yy1120;
+               }
+       } else {
+               if (yych <= '=') {
+                       if (yych == '<') goto yy1113;
+                       goto yy1125;
+               } else {
+                       if (yych <= '>') goto yy1133;
+                       if (yych == '\\') goto yy1134;
+                       goto yy1125;
+               }
+       }
+ yy1127:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
+               goto yy1127;
+       }
+       if (yych <= '<') goto yy1115;
+       if (yych >= '?') goto yy1130;
+ yy1129:
+       yych = *++p;
+       goto yy1123;
+ yy1130:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy1130;
+       }
+       if (yych <= '\n') {
+               if (yych <= 0x00) goto yy1115;
+               if (yych <= '\t') goto yy1127;
+               goto yy1115;
+       } else {
+               if (yych != '>') goto yy1127;
+       }
+       yyaccept = 2;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
+               goto yy1127;
+       }
+       if (yych <= '<') goto yy1123;
+       if (yych <= '>') goto yy1129;
+       goto yy1130;
+ yy1133:
+       yyaccept = 2;
+       yych = *(marker = ++p);
+       if (yych <= ' ') goto yy1123;
+       if (yych == '(') goto yy1123;
+       goto yy1114;
+ yy1134:
+       ++p;
+       yych = *p;
+       if (yych <= '>') {
+               if (yych <= ' ') {
+                       if (yych <= 0x00) goto yy1115;
+                       if (yych == '\n') goto yy1115;
+                       goto yy1127;
+               } else {
+                       if (yych <= '/') goto yy1125;
+                       if (yych <= '9') goto yy1127;
+                       if (yych <= '=') goto yy1125;
+               }
+       } else {
+               if (yych <= '\\') {
+                       if (yych <= '@') goto yy1125;
+                       if (yych <= 'Z') goto yy1127;
+                       if (yych <= '[') goto yy1125;
+                       goto yy1136;
+               } else {
+                       if (yych <= '`') goto yy1125;
+                       if (yych <= 'z') goto yy1127;
+                       if (yych <= '~') goto yy1125;
+                       goto yy1127;
+               }
+       }
+ yy1135:
+       yyaccept = 2;
+       marker = ++p;
+       yych = *p;
+       if (yych <= ')') {
+               if (yych <= '\n') {
+                       if (yych <= 0x00) goto yy1123;
+                       if (yych <= '\t') goto yy1127;
+                       goto yy1123;
+               } else {
+                       if (yych <= ' ') goto yy1127;
+                       if (yych <= '\'') goto yy1125;
+                       if (yych <= '(') goto yy1127;
+                       goto yy1120;
+               }
+       } else {
+               if (yych <= '=') {
+                       if (yych == '<') goto yy1113;
+                       goto yy1125;
+               } else {
+                       if (yych <= '>') goto yy1133;
+                       if (yych == '\\') goto yy1134;
+                       goto yy1125;
+               }
+       }
+ yy1136:
+       ++p;
+       yych = *p;
+       if (yych <= '(') {
+               if (yych <= '\n') {
+                       if (yych <= 0x00) goto yy1115;
+                       if (yych <= '\t') goto yy1127;
+                       goto yy1115;
+               } else {
+                       if (yych <= ' ') goto yy1127;
+                       if (yych <= '\'') goto yy1125;
+                       goto yy1127;
+               }
+       } else {
+               if (yych <= '>') {
+                       if (yych <= ')') goto yy1120;
+                       if (yych <= '=') goto yy1125;
+                       goto yy1135;
+               } else {
+                       if (yych == '\\') goto yy1134;
+                       goto yy1125;
+               }
+       }
+ yy1137:
+       yyaccept = 2;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy1120;
+       }
+       if (yych <= ' ') {
+               if (yych <= 0x00) goto yy1123;
+               if (yych == '\n') goto yy1123;
+               goto yy1127;
+       } else {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy1125;
+                       goto yy1127;
+               } else {
+                       if (yych <= '<') goto yy1117;
+                       if (yych <= '>') goto yy1122;
+                       goto yy1124;
+               }
+       }
+ yy1138:
+       yyaccept = 0;
+       marker = ++p;
+       yych = *p;
+       if (yych <= '(') {
+               if (yych <= '\n') {
+                       if (yych <= 0x00) goto yy1103;
+                       if (yych <= '\t') goto yy1127;
+                       goto yy1103;
+               } else {
+                       if (yych <= ' ') goto yy1127;
+                       if (yych <= '\'') goto yy1120;
+                       goto yy1125;
+               }
+       } else {
+               if (yych <= '>') {
+                       if (yych <= ')') goto yy1127;
+                       if (yych <= '=') goto yy1120;
+                       goto yy1137;
+               } else {
+                       if (yych == '\\') goto yy1124;
+                       goto yy1120;
+               }
+       }
+ }
+ }
+ // Try to match a link title (in single quotes, in double quotes, or
+ // in parentheses), returning number of chars matched.  Allow one
+ // level of internal nesting (quotes within quotes).
+ int _scan_link_title(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       unsigned int yyaccept = 0;
+       static const unsigned char yybm[] = {
+                 0, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208,  80, 208, 208, 208, 208, 144, 
+               208, 192, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208,  32, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+               208, 208, 208, 208, 208, 208, 208, 208, 
+       };
+       yych = *p;
+       if (yych <= '"') {
+               if (yych == '\n') goto yy1141;
+               if (yych <= '!') goto yy1145;
+               goto yy1142;
+       } else {
+               if (yych <= '&') goto yy1145;
+               if (yych <= '\'') goto yy1143;
+               if (yych <= '(') goto yy1144;
+               goto yy1145;
+       }
+ yy1141:
+       { return 0; }
+ yy1142:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       if (yych <= 0x00) goto yy1141;
+       goto yy1162;
+ yy1143:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       if (yych <= 0x00) goto yy1141;
+       goto yy1155;
+ yy1144:
+       yyaccept = 0;
+       yych = *(marker = ++p);
+       if (yych <= 0x00) goto yy1141;
+       goto yy1147;
+ yy1145:
+       yych = *++p;
+       goto yy1141;
+ yy1146:
+       ++p;
+       yych = *p;
+ yy1147:
+       if (yybm[0+yych] & 16) {
+               goto yy1146;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= ')') goto yy1151;
+       goto yy1149;
+ yy1148:
+       p = marker;
+       if (yyaccept <= 1) {
+               if (yyaccept == 0) {
+                       goto yy1141;
+               } else {
+                       goto yy1152;
+               }
+       } else {
+               if (yyaccept == 2) {
+                       goto yy1159;
+               } else {
+                       goto yy1166;
+               }
+       }
+ yy1149:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 16) {
+               goto yy1146;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= ')') goto yy1153;
+       goto yy1149;
+ yy1151:
+       ++p;
+ yy1152:
+       { return (p - start); }
+ yy1153:
+       yyaccept = 1;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 16) {
+               goto yy1146;
+       }
+       if (yych <= 0x00) goto yy1152;
+       if (yych <= ')') goto yy1151;
+       goto yy1149;
+ yy1154:
+       ++p;
+       yych = *p;
+ yy1155:
+       if (yybm[0+yych] & 64) {
+               goto yy1154;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= '\'') goto yy1158;
+ yy1156:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
+               goto yy1154;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= '\'') goto yy1160;
+       goto yy1156;
+ yy1158:
+       ++p;
+ yy1159:
+       { return (p - start); }
+ yy1160:
+       yyaccept = 2;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
+               goto yy1154;
+       }
+       if (yych <= 0x00) goto yy1159;
+       if (yych <= '\'') goto yy1158;
+       goto yy1156;
+ yy1161:
+       ++p;
+       yych = *p;
+ yy1162:
+       if (yybm[0+yych] & 128) {
+               goto yy1161;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= '"') goto yy1165;
+ yy1163:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy1161;
+       }
+       if (yych <= 0x00) goto yy1148;
+       if (yych <= '"') goto yy1167;
+       goto yy1163;
+ yy1165:
+       ++p;
+ yy1166:
+       { return (p - start); }
+ yy1167:
+       yyaccept = 3;
+       marker = ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy1161;
+       }
+       if (yych <= 0x00) goto yy1166;
+       if (yych <= '"') goto yy1165;
+       goto yy1163;
+ }
+ }
+ // Match space characters, including newlines.
+ int _scan_spacechars(const unsigned char *p)
+ {
+   const unsigned char *start = p; \
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych <= '\n') {
+               if (yych <= 0x08) goto yy1174;
+               if (yych <= '\t') goto yy1171;
+               goto yy1172;
+       } else {
+               if (yych <= '\r') goto yy1171;
+               if (yych == ' ') goto yy1171;
+               goto yy1174;
+       }
+ yy1170:
+       { return (p - start); }
+ yy1171:
+       yych = *++p;
+       goto yy1173;
+ yy1172:
+       ++p;
+       yych = *p;
+ yy1173:
+       if (yybm[0+yych] & 128) {
+               goto yy1172;
+       }
+       goto yy1170;
+ yy1174:
+       ++p;
+       { return 0; }
+ }
+ }
+ // Match ATX header start.
+ int _scan_atx_header_start(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych == '\n') goto yy1178;
+       if (yych == '#') goto yy1179;
+       goto yy1180;
+ yy1178:
+       { return 0; }
+ yy1179:
+       yych = *(marker = ++p);
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       if (yych == '#') goto yy1185;
+       goto yy1178;
+ yy1180:
+       yych = *++p;
+       goto yy1178;
+ yy1181:
+       ++p;
+ yy1182:
+       { return (p - start); }
+ yy1183:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       goto yy1182;
+ yy1185:
+       yych = *++p;
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       if (yych == '#') goto yy1187;
+ yy1186:
+       p = marker;
+       goto yy1178;
+ yy1187:
+       yych = *++p;
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       if (yych != '#') goto yy1186;
+       yych = *++p;
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       if (yych != '#') goto yy1186;
+       yych = *++p;
+       if (yybm[0+yych] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       if (yych != '#') goto yy1186;
+       ++p;
+       if (yybm[0+(yych = *p)] & 128) {
+               goto yy1183;
+       }
+       if (yych == '\n') goto yy1181;
+       goto yy1186;
+ }
+ }
+ // Match sexext header line.  Return 1 for level-1 header,
+ // 2 for level-2, 0 for no match.
+ int _scan_setext_header_line(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                32,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,  64,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0, 128,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych <= ',') {
+               if (yych != '\n') goto yy1196;
+       } else {
+               if (yych <= '-') goto yy1195;
+               if (yych == '=') goto yy1194;
+               goto yy1196;
+       }
+ yy1193:
+       { return 0; }
+ yy1194:
+       yych = *(marker = ++p);
+       if (yybm[0+yych] & 128) {
+               goto yy1208;
+       }
+       if (yych == '\n') goto yy1206;
+       if (yych == ' ') goto yy1204;
+       goto yy1193;
+ yy1195:
+       yych = *(marker = ++p);
+       if (yybm[0+yych] & 32) {
+               goto yy1197;
+       }
+       if (yych == '\n') goto yy1200;
+       if (yych == '-') goto yy1202;
+       goto yy1193;
+ yy1196:
+       yych = *++p;
+       goto yy1193;
+ yy1197:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy1197;
+       }
+       if (yych == '\n') goto yy1200;
+ yy1199:
+       p = marker;
+       goto yy1193;
+ yy1200:
+       ++p;
+       { return 2; }
+ yy1202:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
+               goto yy1197;
+       }
+       if (yych == '\n') goto yy1200;
+       if (yych == '-') goto yy1202;
+       goto yy1199;
+ yy1204:
+       ++p;
+       yych = *p;
+       if (yych == '\n') goto yy1206;
+       if (yych == ' ') goto yy1204;
+       goto yy1199;
+ yy1206:
+       ++p;
+       { return 1; }
+ yy1208:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
+               goto yy1208;
+       }
+       if (yych == '\n') goto yy1206;
+       if (yych == ' ') goto yy1204;
+       goto yy1199;
+ }
+ }
+ // Scan a horizontal rule line: "...three or more hyphens, asterisks,
+ // or underscores on a line by themselves. If you wish, you may use
+ // spaces between the hyphens or asterisks."
+ int _scan_hrule(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
 -                0,   0, 128,   0,   0,  16,   0,   0, 
++                0,  16,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               248,   0,   0,   0,   0,   0,   0,   0, 
 -      if (yych == ' ') goto yy1238;
 -      if (yych == '*') goto yy1240;
++                0,   0, 128,   0,   0,  32,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,  64, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych <= '*') {
+               if (yych == '\n') goto yy1212;
+               if (yych <= ')') goto yy1216;
+               goto yy1213;
+       } else {
+               if (yych <= '-') {
+                       if (yych <= ',') goto yy1216;
+                       goto yy1215;
+               } else {
+                       if (yych == '_') goto yy1214;
+                       goto yy1216;
+               }
+       }
+ yy1212:
+       { return 0; }
+ yy1213:
+       yych = *(marker = ++p);
 -      if (yych == ' ') goto yy1228;
 -      if (yych == '_') goto yy1230;
++      if (yych == ' ') goto yy1242;
++      if (yych == '*') goto yy1244;
+       goto yy1212;
+ yy1214:
+       yych = *(marker = ++p);
 -      if (yybm[0+yych] & 16) {
 -              goto yy1222;
++      if (yych == ' ') goto yy1230;
++      if (yych == '_') goto yy1232;
+       goto yy1212;
+ yy1215:
+       yych = *(marker = ++p);
+       if (yybm[0+yych] & 8) {
+               goto yy1217;
+       }
+       if (yych == '-') goto yy1220;
+       goto yy1212;
+ yy1216:
+       yych = *++p;
+       goto yy1212;
+ yy1217:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 8) {
+               goto yy1217;
+       }
+       if (yych == '-') goto yy1220;
+ yy1219:
+       p = marker;
+       goto yy1212;
+ yy1220:
+       ++p;
+       yych = *p;
+       if (yych == ' ') goto yy1220;
+       if (yych != '-') goto yy1219;
+ yy1222:
+       ++p;
+       yych = *p;
 -      if (yych <= 0x08) goto yy1219;
 -      if (yych <= '\t') goto yy1224;
 -      if (yych <= '\n') goto yy1226;
 -      goto yy1219;
++      if (yych <= 0x1F) {
++              if (yych <= 0x08) goto yy1219;
++              if (yych <= '\t') goto yy1224;
++              if (yych <= '\n') goto yy1226;
++              goto yy1219;
++      } else {
++              if (yych <= ' ') goto yy1222;
++              if (yych == '-') goto yy1228;
++              goto yy1219;
+       }
 -      if (yybm[0+yych] & 32) {
+ yy1224:
+       ++p;
+       yych = *p;
 -      if (yych == ' ') goto yy1228;
 -      if (yych != '_') goto yy1219;
++      if (yybm[0+yych] & 16) {
+               goto yy1224;
+       }
+       if (yych <= 0x08) goto yy1219;
+       if (yych >= '\v') goto yy1219;
+ yy1226:
+       ++p;
+       { return (p - start); }
+ yy1228:
+       ++p;
+       yych = *p;
 -      if (yybm[0+yych] & 64) {
 -              goto yy1232;
 -      }
 -      if (yych <= 0x08) goto yy1219;
 -      if (yych <= '\t') goto yy1234;
 -      if (yych <= '\n') goto yy1236;
 -      goto yy1219;
++      if (yybm[0+yych] & 32) {
++              goto yy1228;
++      }
++      if (yych <= 0x08) goto yy1219;
++      if (yych <= '\t') goto yy1224;
++      if (yych <= '\n') goto yy1226;
++      goto yy1219;
+ yy1230:
+       ++p;
+       yych = *p;
+       if (yych == ' ') goto yy1230;
+       if (yych != '_') goto yy1219;
+ yy1232:
+       ++p;
+       yych = *p;
 -      if (yych <= '\n') {
++      if (yych == ' ') goto yy1232;
++      if (yych != '_') goto yy1219;
+ yy1234:
+       ++p;
+       yych = *p;
 -              if (yych <= '\t') goto yy1234;
++      if (yych <= 0x1F) {
+               if (yych <= 0x08) goto yy1219;
 -              if (yych == ' ') goto yy1234;
++              if (yych <= '\t') goto yy1236;
++              if (yych <= '\n') goto yy1238;
++              goto yy1219;
+       } else {
 -      { return (p - start); }
++              if (yych <= ' ') goto yy1234;
++              if (yych == '_') goto yy1240;
+               goto yy1219;
+       }
+ yy1236:
+       ++p;
 -      if (yych == ' ') goto yy1238;
++      yych = *p;
++      if (yych <= '\n') {
++              if (yych <= 0x08) goto yy1219;
++              if (yych <= '\t') goto yy1236;
++      } else {
++              if (yych == ' ') goto yy1236;
++              goto yy1219;
++      }
+ yy1238:
++      ++p;
++      { return (p - start); }
++yy1240:
++      ++p;
++      yych = *p;
++      if (yybm[0+yych] & 64) {
++              goto yy1240;
++      }
++      if (yych <= 0x08) goto yy1219;
++      if (yych <= '\t') goto yy1236;
++      if (yych <= '\n') goto yy1238;
++      goto yy1219;
++yy1242:
+       ++p;
+       yych = *p;
 -yy1240:
++      if (yych == ' ') goto yy1242;
+       if (yych != '*') goto yy1219;
 -      if (yych == ' ') goto yy1240;
++yy1244:
+       ++p;
+       yych = *p;
 -yy1242:
++      if (yych == ' ') goto yy1244;
+       if (yych != '*') goto yy1219;
 -      if (yybm[0+yych] & 128) {
 -              goto yy1242;
++yy1246:
+       ++p;
+       yych = *p;
 -      if (yych <= 0x08) goto yy1219;
 -      if (yych <= '\t') goto yy1244;
 -      if (yych <= '\n') goto yy1246;
 -      goto yy1219;
 -yy1244:
++      if (yych <= 0x1F) {
++              if (yych <= 0x08) goto yy1219;
++              if (yych <= '\t') goto yy1248;
++              if (yych <= '\n') goto yy1250;
++              goto yy1219;
++      } else {
++              if (yych <= ' ') goto yy1246;
++              if (yych == '*') goto yy1252;
++              goto yy1219;
+       }
 -              if (yych <= '\t') goto yy1244;
++yy1248:
+       ++p;
+       yych = *p;
+       if (yych <= '\n') {
+               if (yych <= 0x08) goto yy1219;
 -              if (yych == ' ') goto yy1244;
++              if (yych <= '\t') goto yy1248;
+       } else {
 -yy1246:
++              if (yych == ' ') goto yy1248;
+               goto yy1219;
+       }
 -              if (yych != '\n') goto yy1253;
++yy1250:
+       ++p;
+       { return (p - start); }
++yy1252:
++      ++p;
++      yych = *p;
++      if (yybm[0+yych] & 128) {
++              goto yy1252;
++      }
++      if (yych <= 0x08) goto yy1219;
++      if (yych <= '\t') goto yy1248;
++      if (yych <= '\n') goto yy1250;
++      goto yy1219;
+ }
+ }
+ // Scan an opening code fence.
+ int _scan_open_code_fence(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160,   0, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+                96, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 144, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+               160, 160, 160, 160, 160, 160, 160, 160, 
+       };
+       yych = *p;
+       if (yych <= '_') {
 -              if (yych <= '`') goto yy1251;
 -              if (yych == '~') goto yy1252;
 -              goto yy1253;
++              if (yych != '\n') goto yy1259;
+       } else {
 -yy1250:
++              if (yych <= '`') goto yy1257;
++              if (yych == '~') goto yy1258;
++              goto yy1259;
+       }
 -yy1251:
++yy1256:
+       { return 0; }
 -      if (yych == '`') goto yy1262;
 -      goto yy1250;
 -yy1252:
++yy1257:
+       yych = *(marker = ++p);
 -      if (yych == '~') goto yy1254;
 -      goto yy1250;
 -yy1253:
++      if (yych == '`') goto yy1268;
++      goto yy1256;
++yy1258:
+       yych = *(marker = ++p);
 -      goto yy1250;
 -yy1254:
++      if (yych == '~') goto yy1260;
++      goto yy1256;
++yy1259:
+       yych = *++p;
 -              goto yy1256;
++      goto yy1256;
++yy1260:
+       yych = *++p;
+       if (yybm[0+yych] & 16) {
 -yy1255:
++              goto yy1262;
+       }
 -      goto yy1250;
 -yy1256:
 -      marker = p + 1;
++yy1261:
+       p = marker;
 -              goto yy1258;
++      goto yy1256;
++yy1262:
+       ++p;
+       yych = *p;
++      marker = p;
+       if (yybm[0+yych] & 32) {
 -      if (yych <= 0x00) goto yy1255;
 -      if (yych <= '\n') goto yy1260;
 -      goto yy1256;
 -yy1258:
++              goto yy1264;
+       }
 -              goto yy1258;
++      if (yych <= 0x00) goto yy1261;
++      if (yych <= '\n') goto yy1266;
++      goto yy1262;
++yy1264:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 32) {
 -      if (yych <= 0x00) goto yy1255;
 -      if (yych >= '\v') goto yy1255;
 -yy1260:
++              goto yy1264;
+       }
 -yy1262:
++      if (yych <= 0x00) goto yy1261;
++      if (yych >= '\v') goto yy1261;
++yy1266:
+       ++p;
+       p = marker;
+       { return (p - start); }
 -              goto yy1263;
++yy1268:
+       yych = *++p;
+       if (yybm[0+yych] & 64) {
 -      goto yy1255;
 -yy1263:
 -      marker = p + 1;
++              goto yy1269;
+       }
 -              goto yy1265;
++      goto yy1261;
++yy1269:
+       ++p;
+       yych = *p;
++      marker = p;
+       if (yybm[0+yych] & 128) {
 -      if (yych <= 0x00) goto yy1255;
 -      if (yych <= '\n') goto yy1267;
 -      goto yy1263;
 -yy1265:
++              goto yy1271;
+       }
 -              goto yy1265;
++      if (yych <= 0x00) goto yy1261;
++      if (yych <= '\n') goto yy1273;
++      goto yy1269;
++yy1271:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 128) {
 -      if (yych <= 0x00) goto yy1255;
 -      if (yych >= '\v') goto yy1255;
 -yy1267:
++              goto yy1271;
+       }
 -              if (yych != '\n') goto yy1274;
++      if (yych <= 0x00) goto yy1261;
++      if (yych >= '\v') goto yy1261;
++yy1273:
+       ++p;
+       p = marker;
+       { return (p - start); }
+ }
+ }
+ // Scan a closing code fence with length at least len.
+ int _scan_close_code_fence(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,  64,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                64,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,  32,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       yych = *p;
+       if (yych <= '_') {
 -              if (yych <= '`') goto yy1272;
 -              if (yych == '~') goto yy1273;
 -              goto yy1274;
++              if (yych != '\n') goto yy1280;
+       } else {
 -yy1271:
++              if (yych <= '`') goto yy1278;
++              if (yych == '~') goto yy1279;
++              goto yy1280;
+       }
 -yy1272:
++yy1277:
+       { return 0; }
 -      if (yych == '`') goto yy1283;
 -      goto yy1271;
 -yy1273:
++yy1278:
+       yych = *(marker = ++p);
 -      if (yych == '~') goto yy1275;
 -      goto yy1271;
 -yy1274:
++      if (yych == '`') goto yy1289;
++      goto yy1277;
++yy1279:
+       yych = *(marker = ++p);
 -      goto yy1271;
 -yy1275:
++      if (yych == '~') goto yy1281;
++      goto yy1277;
++yy1280:
+       yych = *++p;
 -              goto yy1277;
++      goto yy1277;
++yy1281:
+       yych = *++p;
+       if (yybm[0+yych] & 32) {
 -yy1276:
++              goto yy1283;
+       }
 -      goto yy1271;
 -yy1277:
 -      marker = p + 1;
++yy1282:
+       p = marker;
 -              goto yy1279;
++      goto yy1277;
++yy1283:
+       ++p;
+       yych = *p;
++      marker = p;
+       if (yybm[0+yych] & 64) {
 -      if (yych <= 0x08) goto yy1276;
 -      if (yych <= '\n') goto yy1281;
 -      if (yych == '~') goto yy1277;
 -      goto yy1276;
 -yy1279:
++              goto yy1285;
+       }
 -              goto yy1279;
++      if (yych <= 0x08) goto yy1282;
++      if (yych <= '\n') goto yy1287;
++      if (yych == '~') goto yy1283;
++      goto yy1282;
++yy1285:
+       ++p;
+       yych = *p;
+       if (yybm[0+yych] & 64) {
 -      if (yych <= 0x08) goto yy1276;
 -      if (yych >= '\v') goto yy1276;
 -yy1281:
++              goto yy1285;
+       }
 -yy1283:
++      if (yych <= 0x08) goto yy1282;
++      if (yych >= '\v') goto yy1282;
++yy1287:
+       ++p;
+       p = marker;
+       { return (p - start); }
 -              goto yy1284;
++yy1289:
+       yych = *++p;
+       if (yybm[0+yych] & 128) {
 -      goto yy1276;
 -yy1284:
 -      marker = p + 1;
++              goto yy1290;
+       }
 -              goto yy1284;
++      goto yy1282;
++yy1290:
+       ++p;
+       yych = *p;
++      marker = p;
+       if (yybm[0+yych] & 128) {
 -              if (yych <= 0x08) goto yy1276;
 -              if (yych >= '\n') goto yy1288;
++              goto yy1290;
+       }
+       if (yych <= '\n') {
 -              if (yych != ' ') goto yy1276;
++              if (yych <= 0x08) goto yy1282;
++              if (yych >= '\n') goto yy1294;
+       } else {
 -yy1286:
++              if (yych != ' ') goto yy1282;
+       }
 -              if (yych <= 0x08) goto yy1276;
 -              if (yych <= '\t') goto yy1286;
++yy1292:
+       ++p;
+       yych = *p;
+       if (yych <= '\n') {
 -              if (yych == ' ') goto yy1286;
 -              goto yy1276;
++              if (yych <= 0x08) goto yy1282;
++              if (yych <= '\t') goto yy1292;
+       } else {
 -yy1288:
++              if (yych == ' ') goto yy1292;
++              goto yy1282;
+       }
 -      if (yych == '\n') goto yy1292;
 -      if (yych == '&') goto yy1293;
 -      goto yy1294;
 -yy1292:
++yy1294:
+       ++p;
+       p = marker;
+       { return (p - start); }
+ }
+ }
+ // Scans an entity.
+ // Returns number of chars matched.
+ int _scan_entity(const unsigned char *p)
+ {
+   const unsigned char *marker = NULL;
+   const unsigned char *start = p;
+ {
+       unsigned char yych;
+       yych = *p;
 -yy1293:
++      if (yych == '\n') goto yy1298;
++      if (yych == '&') goto yy1299;
++      goto yy1300;
++yy1298:
+       { return 0; }
 -              if (yych == '#') goto yy1295;
 -              goto yy1292;
 -      } else {
 -              if (yych <= 'Z') goto yy1297;
 -              if (yych <= '`') goto yy1292;
 -              if (yych <= 'z') goto yy1297;
 -              goto yy1292;
 -      }
 -yy1294:
 -      yych = *++p;
 -      goto yy1292;
 -yy1295:
 -      yych = *++p;
 -      if (yych <= 'W') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1332;
 -      } else {
 -              if (yych <= 'X') goto yy1331;
 -              if (yych == 'x') goto yy1331;
 -      }
 -yy1296:
 -      p = marker;
 -      goto yy1292;
 -yy1297:
 -      yych = *++p;
 -      if (yych <= '@') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych >= ':') goto yy1296;
++yy1299:
+       yych = *(marker = ++p);
+       if (yych <= '@') {
 -              if (yych <= 'Z') goto yy1298;
 -              if (yych <= '`') goto yy1296;
 -              if (yych >= '{') goto yy1296;
++              if (yych == '#') goto yy1301;
++              goto yy1298;
+       } else {
 -yy1298:
++              if (yych <= 'Z') goto yy1303;
++              if (yych <= '`') goto yy1298;
++              if (yych <= 'z') goto yy1303;
++              goto yy1298;
+       }
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1301;
 -              if (yych <= ':') goto yy1296;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -                      goto yy1301;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych <= 'z') goto yy1301;
 -                      goto yy1296;
 -              }
 -      }
 -yy1299:
 -      ++p;
 -      { return (p - start); }
++yy1300:
+       yych = *++p;
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1302;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++      goto yy1298;
+ yy1301:
+       yych = *++p;
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
 -              }
++      if (yych <= 'W') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1338;
+       } else {
 -      yych = *++p;
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1303;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
 -              }
 -      }
++              if (yych <= 'X') goto yy1337;
++              if (yych == 'x') goto yy1337;
+       }
+ yy1302:
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1304;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++      p = marker;
++      goto yy1298;
+ yy1303:
+       yych = *++p;
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
 -              }
++      if (yych <= '@') {
++              if (yych <= '/') goto yy1302;
++              if (yych >= ':') goto yy1302;
+       } else {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1305;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
 -              }
 -      }
 -yy1305:
 -      yych = *++p;
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1306;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
 -      } else {
 -              if (yych <= 'Z') {
 -                      if (yych <= '@') goto yy1296;
 -              } else {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
 -              }
 -      }
 -yy1306:
 -      yych = *++p;
 -      if (yych <= ';') {
 -              if (yych <= '/') goto yy1296;
++              if (yych <= 'Z') goto yy1304;
++              if (yych <= '`') goto yy1302;
++              if (yych >= '{') goto yy1302;
+       }
+ yy1304:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1307;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
++                      goto yy1307;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych <= 'z') goto yy1307;
++                      goto yy1302;
+               }
+       }
++yy1305:
++      ++p;
++      { return (p - start); }
+ yy1307:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1308;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1308:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1309;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1309:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1310;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1310:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1311;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1311:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1312;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1312:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1313;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1313:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1314;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1314:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1315;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1315:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1316;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1316:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1317;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1317:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1318;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1318:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1319;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1319:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1320;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1320:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1321;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1321:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1322;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1322:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1323;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1323:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1324;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1324:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1325;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1325:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1326;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1326:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1327;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1327:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1328;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1328:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1329;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -              if (yych <= '/') goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1329:
+       yych = *++p;
+       if (yych <= ';') {
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++              if (yych <= '/') goto yy1302;
+               if (yych <= '9') goto yy1330;
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'Z') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= '{') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
+               }
+       }
+ yy1330:
+       yych = *++p;
 -      if (yych <= '@') {
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1339;
 -              goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1331;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
++      }
+ yy1331:
+       yych = *++p;
 -              if (yych <= 'F') goto yy1339;
 -              if (yych <= '`') goto yy1296;
 -              if (yych <= 'f') goto yy1339;
 -              goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1332;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1333;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
+       }
+ yy1332:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1334;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1333;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
++      }
+ yy1333:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1335;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1334;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
++      }
+ yy1334:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1336;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1335;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
++      }
+ yy1335:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1337;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych <= ';') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1336;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
++      } else {
++              if (yych <= 'Z') {
++                      if (yych <= '@') goto yy1302;
++              } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= '{') goto yy1302;
++              }
++      }
+ yy1336:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1338;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
+ yy1337:
+       yych = *++p;
 -      if (yych <= '/') goto yy1296;
 -      if (yych <= '9') goto yy1330;
 -      if (yych == ';') goto yy1299;
 -      goto yy1296;
++      if (yych <= '@') {
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1345;
++              goto yy1302;
++      } else {
++              if (yych <= 'F') goto yy1345;
++              if (yych <= '`') goto yy1302;
++              if (yych <= 'f') goto yy1345;
++              goto yy1302;
++      }
+ yy1338:
+       yych = *++p;
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1340;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1339;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
+ yy1339:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1340;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1340:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1341;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1341:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1342;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1342:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1343;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1343:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1344;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1344:
++      yych = *++p;
++      if (yych <= '/') goto yy1302;
++      if (yych <= '9') goto yy1336;
++      if (yych == ';') goto yy1305;
++      goto yy1302;
++yy1345:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1346;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1340:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1341;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1346:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1347;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1341:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1342;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1347:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1348;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1342:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1343;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1348:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1349;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1343:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1344;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1349:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1350;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1344:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1345;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1350:
+       yych = *++p;
+       if (yych <= ';') {
 -                      if (yych <= '@') goto yy1296;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1351;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych >= 'g') goto yy1296;
++                      if (yych <= '@') goto yy1302;
+               } else {
 -yy1345:
++                      if (yych <= '`') goto yy1302;
++                      if (yych >= 'g') goto yy1302;
+               }
+       }
 -              if (yych <= '/') goto yy1296;
 -              if (yych <= '9') goto yy1330;
 -              if (yych <= ':') goto yy1296;
 -              goto yy1299;
++yy1351:
+       ++p;
+       if ((yych = *p) <= ';') {
 -                      if (yych <= '@') goto yy1296;
 -                      goto yy1330;
++              if (yych <= '/') goto yy1302;
++              if (yych <= '9') goto yy1336;
++              if (yych <= ':') goto yy1302;
++              goto yy1305;
+       } else {
+               if (yych <= 'F') {
 -                      if (yych <= '`') goto yy1296;
 -                      if (yych <= 'f') goto yy1330;
 -                      goto yy1296;
++                      if (yych <= '@') goto yy1302;
++                      goto yy1336;
+               } else {
++                      if (yych <= '`') goto yy1302;
++                      if (yych <= 'f') goto yy1336;
++                      goto yy1302;
+               }
+       }
+ }
+ }
++re2c: warning: line 39: column 20: escape has no effect: '\"' [-Wuseless-escape]
++re2c: warning: line 41: column 23: escape has no effect: '\"' [-Wuseless-escape]
++re2c: warning: line 41: column 28: escape has no effect: '\"' [-Wuseless-escape]
++re2c: warning: line 41: column 37: escape has no effect: '\"' [-Wuseless-escape]
++re2c: warning: line 79: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 94: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 105: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 119: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 133: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 149: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 158: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 170: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 182: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 197: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 209: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 221: rule matches empty string [-Wmatch-empty-string]
++re2c: warning: line 234: rule matches empty string [-Wmatch-empty-string]
index c89fe075591530bc73dd178d34ae725fd7e4f237,0000000000000000000000000000000000000000..b3c58eb516b73582c0a698195a4ed66eed37a4f7
mode 100644,000000..100644
--- /dev/null
@@@ -1,757 -1,0 +1,757 @@@
- 3 [label="scanner_re2c_default.D.re:210"]
 +/* Generated by re2c */
 +
 +digraph re2c {
 +
 +1 -> 2 [label="[0x00]"]
 +1 -> 4 [label="[0x01-0x09][0x0B-$][&-)][+-.][0-0xFF]"]
 +1 -> 6 [label="[0x0A]"]
 +1 -> 8 [label="[%]"]
 +1 -> 9 [label="[*]"]
 +1 -> 10 [label="[/]"]
 +2 -> 3
- 5 [label="scanner_re2c_default.D.re:221"]
++3 [label="scanner_re2c_default.D.re:214"]
 +4 -> 5
- 7 [label="scanner_re2c_default.D.re:197"]
++5 [label="scanner_re2c_default.D.re:225"]
 +6 -> 7 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +6 -> 89 [label="[0x09][ ]"]
 +6 -> 91 [label="[#]"]
- 30 [label="scanner_re2c_default.D.re:83"]
++7 [label="scanner_re2c_default.D.re:201"]
 +8 -> 5 [label="[0x00-z][|-0xFF]"]
 +8 -> 32 [label="[{]"]
 +9 -> 5 [label="[0x00-.][0-0xFF]"]
 +9 -> 84 [label="[/]"]
 +10 -> 5 [label="[0x00-)][+-0xFF]"]
 +10 -> 11 [label="[*]"]
 +11 -> 12 [label="[0x00- ][\"-0xFF]"]
 +11 -> 13 [label="[!]"]
 +12 -> 7 [label="yyaccept=0"]
 +12 -> 5 [label="yyaccept=1"]
 +12 -> 85 [label="yyaccept=2"]
 +13 -> 12 [label="[0x00-f][h][j-l][n-q][s][v-0xFF]"]
 +13 -> 16 [label="[g]"]
 +13 -> 15 [label="[i]"]
 +13 -> 17 [label="[m]"]
 +13 -> 19 [label="[r]"]
 +13 -> 14 [label="[t]"]
 +13 -> 18 [label="[u]"]
 +14 -> 12 [label="[0x00-x][z-0xFF]"]
 +14 -> 74 [label="[y]"]
 +15 -> 12 [label="[0x00-f][h-0xFF]"]
 +15 -> 63 [label="[g]"]
 +16 -> 12 [label="[0x00-d][f-0xFF]"]
 +16 -> 50 [label="[e]"]
 +17 -> 12 [label="[0x00-`][b-0xFF]"]
 +17 -> 42 [label="[a]"]
 +18 -> 12 [label="[0x00-r][t-0xFF]"]
 +18 -> 34 [label="[s]"]
 +19 -> 12 [label="[0x00-d][f-t][v-0xFF]"]
 +19 -> 20 [label="[e]"]
 +19 -> 21 [label="[u]"]
 +20 -> 12 [label="[0x00-1][3-0xFF]"]
 +20 -> 31 [label="[2]"]
 +21 -> 12 [label="[0x00-k][m-0xFF]"]
 +21 -> 22 [label="[l]"]
 +22 -> 12 [label="[0x00-d][f-0xFF]"]
 +22 -> 23 [label="[e]"]
 +23 -> 12 [label="[0x00-r][t-0xFF]"]
 +23 -> 24 [label="[s]"]
 +24 -> 12 [label="[0x00-9][;-0xFF]"]
 +24 -> 25 [label="[:]"]
 +25 -> 12 [label="[0x00-q][s-0xFF]"]
 +25 -> 26 [label="[r]"]
 +26 -> 12 [label="[0x00-d][f-0xFF]"]
 +26 -> 27 [label="[e]"]
 +27 -> 12 [label="[0x00-1][3-0xFF]"]
 +27 -> 28 [label="[2]"]
 +28 -> 12 [label="[0x00-b][d-0xFF]"]
 +28 -> 29 [label="[c]"]
 +29 -> 30
- 41 [label="scanner_re2c_default.D.re:99"]
++30 [label="scanner_re2c_default.D.re:86"]
 +31 -> 12 [label="[0x00-b][d-0xFF]"]
 +31 -> 32 [label="[c]"]
 +32 -> 33
 +33 [label="scanner_re2c_default.D.re:67"]
 +34 -> 12 [label="[0x00-d][f-0xFF]"]
 +34 -> 35 [label="[e]"]
 +35 -> 12 [label="[0x00-9][;-0xFF]"]
 +35 -> 36 [label="[:]"]
 +36 -> 12 [label="[0x00-q][s-0xFF]"]
 +36 -> 37 [label="[r]"]
 +37 -> 12 [label="[0x00-d][f-0xFF]"]
 +37 -> 38 [label="[e]"]
 +38 -> 12 [label="[0x00-1][3-0xFF]"]
 +38 -> 39 [label="[2]"]
 +39 -> 12 [label="[0x00-b][d-0xFF]"]
 +39 -> 40 [label="[c]"]
 +40 -> 41
- 49 [label="scanner_re2c_default.D.re:116"]
++41 [label="scanner_re2c_default.D.re:102"]
 +42 -> 12 [label="[0x00-w][y-0xFF]"]
 +42 -> 43 [label="[x]"]
 +43 -> 12 [label="[0x00-9][;-0xFF]"]
 +43 -> 44 [label="[:]"]
 +44 -> 12 [label="[0x00-q][s-0xFF]"]
 +44 -> 45 [label="[r]"]
 +45 -> 12 [label="[0x00-d][f-0xFF]"]
 +45 -> 46 [label="[e]"]
 +46 -> 12 [label="[0x00-1][3-0xFF]"]
 +46 -> 47 [label="[2]"]
 +47 -> 12 [label="[0x00-b][d-0xFF]"]
 +47 -> 48 [label="[c]"]
 +48 -> 49
- 62 [label="scanner_re2c_default.D.re:130"]
++49 [label="scanner_re2c_default.D.re:120"]
 +50 -> 12 [label="[0x00-s][u-0xFF]"]
 +50 -> 51 [label="[t]"]
 +51 -> 12 [label="[0x00-r][t-0xFF]"]
 +51 -> 52 [label="[s]"]
 +52 -> 12 [label="[0x00-s][u-0xFF]"]
 +52 -> 53 [label="[t]"]
 +53 -> 12 [label="[0x00-`][b-0xFF]"]
 +53 -> 54 [label="[a]"]
 +54 -> 12 [label="[0x00-s][u-0xFF]"]
 +54 -> 55 [label="[t]"]
 +55 -> 12 [label="[0x00-d][f-0xFF]"]
 +55 -> 56 [label="[e]"]
 +56 -> 12 [label="[0x00-9][;-0xFF]"]
 +56 -> 57 [label="[:]"]
 +57 -> 12 [label="[0x00-q][s-0xFF]"]
 +57 -> 58 [label="[r]"]
 +58 -> 12 [label="[0x00-d][f-0xFF]"]
 +58 -> 59 [label="[e]"]
 +59 -> 12 [label="[0x00-1][3-0xFF]"]
 +59 -> 60 [label="[2]"]
 +60 -> 12 [label="[0x00-b][d-0xFF]"]
 +60 -> 61 [label="[c]"]
 +61 -> 62
- 73 [label="scanner_re2c_default.D.re:136"]
++62 [label="scanner_re2c_default.D.re:134"]
 +63 -> 12 [label="[0x00-m][o-0xFF]"]
 +63 -> 64 [label="[n]"]
 +64 -> 12 [label="[0x00-n][p-0xFF]"]
 +64 -> 65 [label="[o]"]
 +65 -> 12 [label="[0x00-q][s-0xFF]"]
 +65 -> 66 [label="[r]"]
 +66 -> 12 [label="[0x00-d][f-0xFF]"]
 +66 -> 67 [label="[e]"]
 +67 -> 12 [label="[0x00-9][;-0xFF]"]
 +67 -> 68 [label="[:]"]
 +68 -> 12 [label="[0x00-q][s-0xFF]"]
 +68 -> 69 [label="[r]"]
 +69 -> 12 [label="[0x00-d][f-0xFF]"]
 +69 -> 70 [label="[e]"]
 +70 -> 12 [label="[0x00-1][3-0xFF]"]
 +70 -> 71 [label="[2]"]
 +71 -> 12 [label="[0x00-b][d-0xFF]"]
 +71 -> 72 [label="[c]"]
 +72 -> 73
- 83 [label="scanner_re2c_default.D.re:141"]
++73 [label="scanner_re2c_default.D.re:140"]
 +74 -> 12 [label="[0x00-o][q-0xFF]"]
 +74 -> 75 [label="[p]"]
 +75 -> 12 [label="[0x00-d][f-0xFF]"]
 +75 -> 76 [label="[e]"]
 +76 -> 12 [label="[0x00-r][t-0xFF]"]
 +76 -> 77 [label="[s]"]
 +77 -> 12 [label="[0x00-9][;-0xFF]"]
 +77 -> 78 [label="[:]"]
 +78 -> 12 [label="[0x00-q][s-0xFF]"]
 +78 -> 79 [label="[r]"]
 +79 -> 12 [label="[0x00-d][f-0xFF]"]
 +79 -> 80 [label="[e]"]
 +80 -> 12 [label="[0x00-1][3-0xFF]"]
 +80 -> 81 [label="[2]"]
 +81 -> 12 [label="[0x00-b][d-0xFF]"]
 +81 -> 82 [label="[c]"]
 +82 -> 83
- 85 [label="scanner_re2c_default.D.re:176"]
++83 [label="scanner_re2c_default.D.re:145"]
 +84 -> 85 [label="[0x00-0x09][0x0B-0x0C][0x0E-0xFF]"]
 +84 -> 87 [label="[0x0A]"]
 +84 -> 86 [label="[0x0D]"]
- 88 [label="scanner_re2c_default.D.re:158"]
++85 [label="scanner_re2c_default.D.re:180"]
 +86 -> 12 [label="[0x00-0x09][0x0B-0xFF]"]
 +86 -> 87 [label="[0x0A]"]
 +87 -> 88
- 104 [label="scanner_re2c_default.D.re:193"]
++88 [label="scanner_re2c_default.D.re:162"]
 +89 -> 90
 +90 -> 12 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +90 -> 89 [label="[0x09][ ]"]
 +90 -> 91 [label="[#]"]
 +91 -> 92
 +92 -> 12 [label="[0x00-0x08][0x0A-0x1F][!-k][m-0xFF]"]
 +92 -> 91 [label="[0x09][ ]"]
 +92 -> 93 [label="[l]"]
 +93 -> 12 [label="[0x00-h][j-0xFF]"]
 +93 -> 94 [label="[i]"]
 +94 -> 12 [label="[0x00-m][o-0xFF]"]
 +94 -> 95 [label="[n]"]
 +95 -> 12 [label="[0x00-d][f-0xFF]"]
 +95 -> 96 [label="[e]"]
 +96 -> 98 [label="[0x00-0][:-0xFF]"]
 +96 -> 12 [label="[1-9]"]
 +97 -> 98
 +98 -> 12 [label="[0x00-0x08][0x0A-0x1F][!-0][:-0xFF]"]
 +98 -> 97 [label="[0x09][ ]"]
 +98 -> 99 [label="[1-9]"]
 +99 -> 100
 +100 -> 12 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-/][:-0xFF]"]
 +100 -> 101 [label="[0x09][ ]"]
 +100 -> 103 [label="[0x0A]"]
 +100 -> 105 [label="[0x0D]"]
 +100 -> 99 [label="[0-9]"]
 +101 -> 102
 +102 -> 12 [label="[0x00-0x08][0x0A-0x1F][!][#-0xFF]"]
 +102 -> 101 [label="[0x09][ ]"]
 +102 -> 106 [label="[\"]"]
 +103 -> 104
- 113 [label="scanner_re2c_default.D.re:441"]
++104 [label="scanner_re2c_default.D.re:197"]
 +105 -> 12 [label="[0x00-0x09][0x0B-0xFF]"]
 +105 -> 103 [label="[0x0A]"]
 +106 -> 107
 +107 -> 106 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +107 -> 12 [label="[0x0A]"]
 +107 -> 109 [label="[\"]"]
 +107 -> 108 [label="[\\]"]
 +108 -> 106 [label="[0x00-0x09][0x0B-0xFF]"]
 +108 -> 12 [label="[0x0A]"]
 +109 -> 12 [label="[0x00-0x09][0x0B-0x0C][0x0E-0xFF]"]
 +109 -> 103 [label="[0x0A]"]
 +109 -> 105 [label="[0x0D]"]
 +}
 +
 +digraph re2c {
 +
 +111 -> 112 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!][#-$][&][-][0-9][@][0x5D-^][`][}-0xFF]"]
 +111 -> 114 [label="[0x09][ ]"]
 +111 -> 116 [label="[0x0A]"]
 +111 -> 118 [label="[0x0D]"]
 +111 -> 119 [label="[\"]"]
 +111 -> 121 [label="[%]"]
 +111 -> 122 [label="[']"]
 +111 -> 124 [label="[(-)][,][;][=->][\\][|]"]
 +111 -> 126 [label="[*]"]
 +111 -> 128 [label="[+][?]"]
 +111 -> 130 [label="[.]"]
 +111 -> 132 [label="[/]"]
 +111 -> 133 [label="[:]"]
 +111 -> 134 [label="[<]"]
 +111 -> 135 [label="[A-Z][_][a-q][s-z]"]
 +111 -> 136 [label="[[]"]
 +111 -> 138 [label="[r]"]
 +111 -> 139 [label="[{]"]
 +112 -> 113
- 115 [label="scanner_re2c_default.D.re:425"]
++113 [label="scanner_re2c_default.D.re:445"]
 +114 -> 248
- 117 [label="scanner_re2c_default.D.re:434"]
++115 [label="scanner_re2c_default.D.re:429"]
 +116 -> 117 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +116 -> 226 [label="[0x09][ ]"]
 +116 -> 228 [label="[#]"]
- 120 [label="scanner_re2c_default.D.re:301"]
++117 [label="scanner_re2c_default.D.re:438"]
 +118 -> 113 [label="[0x00-0x09][0x0B-0xFF]"]
 +118 -> 225 [label="[0x0A]"]
 +119 -> 221 [label="[0x00-0x09][0x0B-0xFF]"]
 +119 -> 120 [label="[0x0A]"]
- 123 [label="scanner_re2c_default.D.re:304"]
++120 [label="scanner_re2c_default.D.re:305"]
 +121 -> 113 [label="[0x00-|][~-0xFF]"]
 +121 -> 213 [label="[}]"]
 +122 -> 216 [label="[0x00-0x09][0x0B-0xFF]"]
 +122 -> 123 [label="[0x0A]"]
- 125 [label="scanner_re2c_default.D.re:330"]
++123 [label="scanner_re2c_default.D.re:308"]
 +124 -> 125
- 127 [label="scanner_re2c_default.D.re:334"]
++125 [label="scanner_re2c_default.D.re:334"]
 +126 -> 127 [label="[0x00-.][0-0xFF]"]
 +126 -> 213 [label="[/]"]
- 129 [label="scanner_re2c_default.D.re:338"]
++127 [label="scanner_re2c_default.D.re:338"]
 +128 -> 129
- 131 [label="scanner_re2c_default.D.re:419"]
++129 [label="scanner_re2c_default.D.re:342"]
 +130 -> 131
- 137 [label="scanner_re2c_default.D.re:320"]
++131 [label="scanner_re2c_default.D.re:423"]
 +132 -> 125 [label="[0x00-)][+-.][0-0xFF]"]
 +132 -> 209 [label="[*]"]
 +132 -> 211 [label="[/]"]
 +133 -> 113 [label="[0x00-<][>-0xFF]"]
 +133 -> 205 [label="[=]"]
 +134 -> 125 [label="[0x00- ][\"-=][?-0xFF]"]
 +134 -> 196 [label="[!]"]
 +134 -> 198 [label="[>]"]
 +135 -> 164
 +136 -> 187 [label="[0x00-0x09][0x0B-0x5D][_-0xFF]"]
 +136 -> 137 [label="[0x0A]"]
 +136 -> 188 [label="[^]"]
- 140 [label="scanner_re2c_default.D.re:245"]
++137 [label="scanner_re2c_default.D.re:324"]
 +138 -> 164 [label="[0x00-d][f-0xFF]"]
 +138 -> 166 [label="[e]"]
 +139 -> 140 [label="[0x00-+][--/][:-@][[-^][`][{-0xFF]"]
 +139 -> 147 [label="[,]"]
 +139 -> 144 [label="[0]"]
 +139 -> 145 [label="[1-9]"]
 +139 -> 141 [label="[A-Z][_][a-z]"]
- 148 [label="scanner_re2c_default.D.re:366"]
++140 [label="scanner_re2c_default.D.re:249"]
 +141 -> 142
 +142 -> 143 [label="[0x00-/][:-@][[-^][`][{-|][~-0xFF]"]
 +142 -> 141 [label="[0-9][A-Z][_][a-z]"]
 +142 -> 161 [label="[}]"]
 +143 -> 117 [label="yyaccept=0"]
 +143 -> 120 [label="yyaccept=1"]
 +143 -> 123 [label="yyaccept=2"]
 +143 -> 125 [label="yyaccept=3"]
 +143 -> 137 [label="yyaccept=4"]
 +143 -> 140 [label="yyaccept=5"]
 +143 -> 148 [label="yyaccept=6"]
 +143 -> 181 [label="yyaccept=7"]
 +144 -> 146 [label="[0x00-+][--0xFF]"]
 +144 -> 158 [label="[,]"]
 +145 -> 146
 +146 -> 143 [label="[0x00-+][--/][:-|][~-0xFF]"]
 +146 -> 151 [label="[,]"]
 +146 -> 145 [label="[0-9]"]
 +146 -> 149 [label="[}]"]
 +147 -> 148
- 150 [label="scanner_re2c_default.D.re:348"]
++148 [label="scanner_re2c_default.D.re:370"]
 +149 -> 150
- 153 [label="scanner_re2c_default.D.re:360"]
++150 [label="scanner_re2c_default.D.re:352"]
 +151 -> 148 [label="[0x00-/][:-|][~-0xFF]"]
 +151 -> 154 [label="[0-9]"]
 +151 -> 152 [label="[}]"]
 +152 -> 153
- 157 [label="scanner_re2c_default.D.re:354"]
++153 [label="scanner_re2c_default.D.re:364"]
 +154 -> 155
 +155 -> 143 [label="[0x00-/][:-|][~-0xFF]"]
 +155 -> 154 [label="[0-9]"]
 +155 -> 156 [label="[}]"]
 +156 -> 157
- 160 [label="scanner_re2c_default.D.re:343"]
++157 [label="scanner_re2c_default.D.re:358"]
 +158 -> 148 [label="[0x00-/][:-|][~-0xFF]"]
 +158 -> 154 [label="[0-9]"]
 +158 -> 159 [label="[}]"]
 +159 -> 160
- 162 [label="scanner_re2c_default.D.re:370"]
++160 [label="scanner_re2c_default.D.re:347"]
 +161 -> 162
- 165 [label="scanner_re2c_default.D.re:399"]
++162 [label="scanner_re2c_default.D.re:374"]
 +163 -> 164
 +164 -> 167 [label="[0x00-0x08][0x0A-0x1F][!-+][--/][:-<][?-@][[-^][`][{-0xFF]"]
 +164 -> 168 [label="[0x09][ ]"]
 +164 -> 169 [label="[,][=->]"]
 +164 -> 163 [label="[0-9][A-Z][_][a-z]"]
- 170 [label="scanner_re2c_default.D.re:393"]
++165 [label="scanner_re2c_default.D.re:403"]
 +166 -> 164 [label="[0x00-1][3-0xFF]"]
 +166 -> 176 [label="[2]"]
 +167 -> 165
 +168 -> 174
 +169 -> 170
- 172 [label="scanner_re2c_default.D.re:387"]
++170 [label="scanner_re2c_default.D.re:397"]
 +171 -> 172
- 181 [label="scanner_re2c_default.D.re:379"]
++172 [label="scanner_re2c_default.D.re:391"]
 +173 -> 174
 +174 -> 171 [label="[0x00-0x08][0x0A-0x1F][!-+][--<][?-0xFF]"]
 +174 -> 173 [label="[0x09][ ]"]
 +174 -> 175 [label="[,][=->]"]
 +175 -> 170
 +176 -> 164 [label="[0x00-b][d-0xFF]"]
 +176 -> 177 [label="[c]"]
 +177 -> 164 [label="[0x00-9][;-0xFF]"]
 +177 -> 178 [label="[:]"]
 +178 -> 165 [label="[0x00-@][[-^][`][{-0xFF]"]
 +178 -> 179 [label="[A-Z][_][a-z]"]
 +179 -> 180
 +180 -> 181 [label="[0x00-/][;-?][[-^][`][{-0xFF]"]
 +180 -> 179 [label="[0-9][A-Z][_][a-z]"]
 +180 -> 183 [label="[:]"]
 +180 -> 182 [label="[@]"]
- 192 [label="scanner_re2c_default.D.re:314"]
++181 [label="scanner_re2c_default.D.re:383"]
 +182 -> 143 [label="[0x00-@][[-^][`][{-0xFF]"]
 +182 -> 184 [label="[A-Z][_][a-z]"]
 +183 -> 143 [label="[0x00-@][[-^][`][{-0xFF]"]
 +183 -> 179 [label="[A-Z][_][a-z]"]
 +184 -> 185
 +185 -> 181 [label="[0x00-/][:-@][[-^][`][{-0xFF]"]
 +185 -> 184 [label="[0-9][A-Z][_][a-z]"]
 +186 -> 187
 +187 -> 186 [label="[0x00-0x09][0x0B-[][^-0xFF]"]
 +187 -> 143 [label="[0x0A]"]
 +187 -> 190 [label="[\\]"]
 +187 -> 191 [label="[0x5D]"]
 +188 -> 189
 +189 -> 188 [label="[0x00-0x09][0x0B-[][^-0xFF]"]
 +189 -> 143 [label="[0x0A]"]
 +189 -> 193 [label="[\\]"]
 +189 -> 194 [label="[0x5D]"]
 +190 -> 186 [label="[0x00-0x09][0x0B-0xFF]"]
 +190 -> 143 [label="[0x0A]"]
 +191 -> 192
- 195 [label="scanner_re2c_default.D.re:308"]
++192 [label="scanner_re2c_default.D.re:318"]
 +193 -> 188 [label="[0x00-0x09][0x0B-0xFF]"]
 +193 -> 143 [label="[0x0A]"]
 +194 -> 195
- 197 [label="scanner_re2c_default.D.re:327"]
++195 [label="scanner_re2c_default.D.re:312"]
 +196 -> 197
- 202 [label="scanner_re2c_default.D.re:324"]
++197 [label="scanner_re2c_default.D.re:331"]
 +198 -> 200
 +199 -> 200
 +200 -> 143 [label="[0x00-0x08][0x0A-0x1F][!-9][;-<][>-z][|-0xFF]"]
 +200 -> 199 [label="[0x09][ ]"]
 +200 -> 204 [label="[:]"]
 +200 -> 203 [label="[=]"]
 +200 -> 201 [label="[{]"]
 +201 -> 202
- 206 [label="scanner_re2c_default.D.re:254"]
++202 [label="scanner_re2c_default.D.re:328"]
 +203 -> 143 [label="[0x00-=][?-0xFF]"]
 +203 -> 201 [label="[>]"]
 +204 -> 143 [label="[0x00-<][>-0xFF]"]
 +204 -> 201 [label="[=]"]
 +205 -> 206 [label="[0x00-=][?-0xFF]"]
 +205 -> 207 [label="[>]"]
- 208 [label="scanner_re2c_default.D.re:250"]
++206 [label="scanner_re2c_default.D.re:258"]
 +207 -> 208
- 210 [label="scanner_re2c_default.D.re:264"]
++208 [label="scanner_re2c_default.D.re:254"]
 +209 -> 210
- 212 [label="scanner_re2c_default.D.re:261"]
++210 [label="scanner_re2c_default.D.re:268"]
 +211 -> 212
- 214 [label="scanner_re2c_default.D.re:270"]
++212 [label="scanner_re2c_default.D.re:265"]
 +213 -> 214
- 219 [label="scanner_re2c_default.D.re:288"]
++214 [label="scanner_re2c_default.D.re:274"]
 +215 -> 216
 +216 -> 215 [label="[0x00-0x09][0x0B-&][(-[][0x5D-0xFF]"]
 +216 -> 143 [label="[0x0A]"]
 +216 -> 218 [label="[']"]
 +216 -> 217 [label="[\\]"]
 +217 -> 215 [label="[0x00-0x09][0x0B-0xFF]"]
 +217 -> 143 [label="[0x0A]"]
 +218 -> 219
- 224 [label="scanner_re2c_default.D.re:275"]
++219 [label="scanner_re2c_default.D.re:292"]
 +220 -> 221
 +221 -> 220 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +221 -> 143 [label="[0x0A]"]
 +221 -> 223 [label="[\"]"]
 +221 -> 222 [label="[\\]"]
 +222 -> 220 [label="[0x00-0x09][0x0B-0xFF]"]
 +222 -> 143 [label="[0x0A]"]
 +223 -> 224
- 241 [label="scanner_re2c_default.D.re:429"]
++224 [label="scanner_re2c_default.D.re:279"]
 +225 -> 117 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +225 -> 226 [label="[0x09][ ]"]
 +225 -> 228 [label="[#]"]
 +226 -> 227
 +227 -> 143 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +227 -> 226 [label="[0x09][ ]"]
 +227 -> 228 [label="[#]"]
 +228 -> 229
 +229 -> 143 [label="[0x00-0x08][0x0A-0x1F][!-k][m-0xFF]"]
 +229 -> 228 [label="[0x09][ ]"]
 +229 -> 230 [label="[l]"]
 +230 -> 143 [label="[0x00-h][j-0xFF]"]
 +230 -> 231 [label="[i]"]
 +231 -> 143 [label="[0x00-m][o-0xFF]"]
 +231 -> 232 [label="[n]"]
 +232 -> 143 [label="[0x00-d][f-0xFF]"]
 +232 -> 233 [label="[e]"]
 +233 -> 235 [label="[0x00-0][:-0xFF]"]
 +233 -> 143 [label="[1-9]"]
 +234 -> 235
 +235 -> 143 [label="[0x00-0x08][0x0A-0x1F][!-0][:-0xFF]"]
 +235 -> 234 [label="[0x09][ ]"]
 +235 -> 236 [label="[1-9]"]
 +236 -> 237
 +237 -> 143 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-/][:-0xFF]"]
 +237 -> 238 [label="[0x09][ ]"]
 +237 -> 240 [label="[0x0A]"]
 +237 -> 242 [label="[0x0D]"]
 +237 -> 236 [label="[0-9]"]
 +238 -> 239
 +239 -> 143 [label="[0x00-0x08][0x0A-0x1F][!][#-0xFF]"]
 +239 -> 238 [label="[0x09][ ]"]
 +239 -> 243 [label="[\"]"]
 +240 -> 241
- 252 [label="scanner_re2c_default.D.re:513"]
++241 [label="scanner_re2c_default.D.re:433"]
 +242 -> 143 [label="[0x00-0x09][0x0B-0xFF]"]
 +242 -> 240 [label="[0x0A]"]
 +243 -> 244
 +244 -> 243 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +244 -> 143 [label="[0x0A]"]
 +244 -> 246 [label="[\"]"]
 +244 -> 245 [label="[\\]"]
 +245 -> 243 [label="[0x00-0x09][0x0B-0xFF]"]
 +245 -> 143 [label="[0x0A]"]
 +246 -> 143 [label="[0x00-0x09][0x0B-0x0C][0x0E-0xFF]"]
 +246 -> 240 [label="[0x0A]"]
 +246 -> 242 [label="[0x0D]"]
 +247 -> 248
 +248 -> 115 [label="[0x00-0x08][0x0A-0x1F][!-0xFF]"]
 +248 -> 247 [label="[0x09][ ]"]
 +}
 +
 +digraph re2c {
 +
 +250 -> 251 [label="[0x00]"]
 +250 -> 253 [label="[0x01-0x09][0x0B-!][#-&][(-z][|][~-0xFF]"]
 +250 -> 255 [label="[0x0A]"]
 +250 -> 257 [label="[\"]"]
 +250 -> 258 [label="[']"]
 +250 -> 259 [label="[{]"]
 +250 -> 261 [label="[}]"]
 +251 -> 252
- 254 [label="scanner_re2c_default.D.re:527"]
++252 [label="scanner_re2c_default.D.re:517"]
 +253 -> 254
- 256 [label="scanner_re2c_default.D.re:493"]
++254 [label="scanner_re2c_default.D.re:531"]
 +255 -> 256 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-\"][$-0xFF]"]
 +255 -> 272 [label="[0x09][ ]"]
 +255 -> 274 [label="[0x0A][0x0D]"]
 +255 -> 275 [label="[#]"]
- 260 [label="scanner_re2c_default.D.re:465"]
++256 [label="scanner_re2c_default.D.re:497"]
 +257 -> 270 [label="[0x00-0x09][0x0B-0xFF]"]
 +257 -> 254 [label="[0x0A]"]
 +258 -> 264 [label="[0x00-0x09][0x0B-0xFF]"]
 +258 -> 254 [label="[0x0A]"]
 +259 -> 260
- 262 [label="scanner_re2c_default.D.re:452"]
++260 [label="scanner_re2c_default.D.re:469"]
 +261 -> 262
- 268 [label="scanner_re2c_default.D.re:524"]
++262 [label="scanner_re2c_default.D.re:456"]
 +263 -> 264
 +264 -> 263 [label="[0x00-0x09][0x0B-&][(-[][0x5D-0xFF]"]
 +264 -> 265 [label="[0x0A]"]
 +264 -> 267 [label="[']"]
 +264 -> 266 [label="[\\]"]
 +265 -> 256 [label="yyaccept=0"]
 +265 -> 254 [label="yyaccept=1"]
 +265 -> 273 [label="yyaccept=2"]
 +266 -> 263 [label="[0x00-0x09][0x0B-0xFF]"]
 +266 -> 265 [label="[0x0A]"]
 +267 -> 268
- 273 [label="scanner_re2c_default.D.re:480"]
++268 [label="scanner_re2c_default.D.re:528"]
 +269 -> 270
 +270 -> 269 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +270 -> 265 [label="[0x0A]"]
 +270 -> 267 [label="[\"]"]
 +270 -> 271 [label="[\\]"]
 +271 -> 269 [label="[0x00-0x09][0x0B-0xFF]"]
 +271 -> 265 [label="[0x0A]"]
 +272 -> 273 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +272 -> 294 [label="[0x09][ ]"]
 +272 -> 275 [label="[#]"]
- 288 [label="scanner_re2c_default.D.re:476"]
++273 [label="scanner_re2c_default.D.re:484"]
 +274 -> 273
 +275 -> 276
 +276 -> 265 [label="[0x00-0x08][0x0A-0x1F][!-k][m-0xFF]"]
 +276 -> 275 [label="[0x09][ ]"]
 +276 -> 277 [label="[l]"]
 +277 -> 265 [label="[0x00-h][j-0xFF]"]
 +277 -> 278 [label="[i]"]
 +278 -> 265 [label="[0x00-m][o-0xFF]"]
 +278 -> 279 [label="[n]"]
 +279 -> 265 [label="[0x00-d][f-0xFF]"]
 +279 -> 280 [label="[e]"]
 +280 -> 282 [label="[0x00-0][:-0xFF]"]
 +280 -> 265 [label="[1-9]"]
 +281 -> 282
 +282 -> 265 [label="[0x00-0x08][0x0A-0x1F][!-0][:-0xFF]"]
 +282 -> 281 [label="[0x09][ ]"]
 +282 -> 283 [label="[1-9]"]
 +283 -> 284
 +284 -> 265 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-/][:-0xFF]"]
 +284 -> 285 [label="[0x09][ ]"]
 +284 -> 287 [label="[0x0A]"]
 +284 -> 289 [label="[0x0D]"]
 +284 -> 283 [label="[0-9]"]
 +285 -> 286
 +286 -> 265 [label="[0x00-0x08][0x0A-0x1F][!][#-0xFF]"]
 +286 -> 285 [label="[0x09][ ]"]
 +286 -> 290 [label="[\"]"]
 +287 -> 288
- 299 [label="scanner_re2c_default.D.re:562"]
++288 [label="scanner_re2c_default.D.re:480"]
 +289 -> 265 [label="[0x00-0x09][0x0B-0xFF]"]
 +289 -> 287 [label="[0x0A]"]
 +290 -> 291
 +291 -> 290 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +291 -> 265 [label="[0x0A]"]
 +291 -> 293 [label="[\"]"]
 +291 -> 292 [label="[\\]"]
 +292 -> 290 [label="[0x00-0x09][0x0B-0xFF]"]
 +292 -> 265 [label="[0x0A]"]
 +293 -> 265 [label="[0x00-0x09][0x0B-0x0C][0x0E-0xFF]"]
 +293 -> 287 [label="[0x0A]"]
 +293 -> 289 [label="[0x0D]"]
 +294 -> 295
 +295 -> 265 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +295 -> 294 [label="[0x09][ ]"]
 +295 -> 275 [label="[#]"]
 +}
 +
 +digraph re2c {
 +
 +297 -> 298 [label="[0x00-0x09][0x0B-)][+-.][0-0xFF]"]
 +297 -> 300 [label="[0x0A]"]
 +297 -> 302 [label="[*]"]
 +297 -> 303 [label="[/]"]
 +298 -> 299
- 301 [label="scanner_re2c_default.D.re:553"]
++299 [label="scanner_re2c_default.D.re:566"]
 +300 -> 301 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +300 -> 308 [label="[0x09][ ]"]
 +300 -> 311 [label="[#]"]
- 305 [label="scanner_re2c_default.D.re:544"]
++301 [label="scanner_re2c_default.D.re:557"]
 +302 -> 299 [label="[0x00-.][0-0xFF]"]
 +302 -> 306 [label="[/]"]
 +303 -> 299 [label="[0x00-)][+-0xFF]"]
 +303 -> 304 [label="[*]"]
 +304 -> 305
- 307 [label="scanner_re2c_default.D.re:534"]
++305 [label="scanner_re2c_default.D.re:548"]
 +306 -> 307
- 324 [label="scanner_re2c_default.D.re:549"]
++307 [label="scanner_re2c_default.D.re:538"]
 +308 -> 309
 +309 -> 310 [label="[0x00-0x08][0x0A-0x1F][!-\"][$-0xFF]"]
 +309 -> 308 [label="[0x09][ ]"]
 +309 -> 311 [label="[#]"]
 +310 -> 301
 +311 -> 312
 +312 -> 310 [label="[0x00-0x08][0x0A-0x1F][!-k][m-0xFF]"]
 +312 -> 311 [label="[0x09][ ]"]
 +312 -> 313 [label="[l]"]
 +313 -> 310 [label="[0x00-h][j-0xFF]"]
 +313 -> 314 [label="[i]"]
 +314 -> 310 [label="[0x00-m][o-0xFF]"]
 +314 -> 315 [label="[n]"]
 +315 -> 310 [label="[0x00-d][f-0xFF]"]
 +315 -> 316 [label="[e]"]
 +316 -> 318 [label="[0x00-0][:-0xFF]"]
 +316 -> 310 [label="[1-9]"]
 +317 -> 318
 +318 -> 310 [label="[0x00-0x08][0x0A-0x1F][!-0][:-0xFF]"]
 +318 -> 317 [label="[0x09][ ]"]
 +318 -> 319 [label="[1-9]"]
 +319 -> 320
 +320 -> 310 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-/][:-0xFF]"]
 +320 -> 321 [label="[0x09][ ]"]
 +320 -> 323 [label="[0x0A]"]
 +320 -> 325 [label="[0x0D]"]
 +320 -> 319 [label="[0-9]"]
 +321 -> 322
 +322 -> 310 [label="[0x00-0x08][0x0A-0x1F][!][#-0xFF]"]
 +322 -> 321 [label="[0x09][ ]"]
 +322 -> 326 [label="[\"]"]
 +323 -> 324
- 333 [label="scanner_re2c_default.D.re:580"]
++324 [label="scanner_re2c_default.D.re:553"]
 +325 -> 310 [label="[0x00-0x09][0x0B-0xFF]"]
 +325 -> 323 [label="[0x0A]"]
 +326 -> 327
 +327 -> 326 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +327 -> 310 [label="[0x0A]"]
 +327 -> 329 [label="[\"]"]
 +327 -> 328 [label="[\\]"]
 +328 -> 326 [label="[0x00-0x09][0x0B-0xFF]"]
 +328 -> 310 [label="[0x0A]"]
 +329 -> 310 [label="[0x00-0x09][0x0B-0x0C][0x0E-0xFF]"]
 +329 -> 323 [label="[0x0A]"]
 +329 -> 325 [label="[0x0D]"]
 +}
 +
 +digraph re2c {
 +
 +331 -> 332 [label="[0x00-0x09][0x0B-0xFF]"]
 +331 -> 334 [label="[0x0A]"]
 +332 -> 333
- 335 [label="scanner_re2c_default.D.re:573"]
++333 [label="scanner_re2c_default.D.re:584"]
 +334 -> 335
- 339 [label="scanner_re2c_default.D.re:597"]
++335 [label="scanner_re2c_default.D.re:577"]
 +}
 +
 +digraph re2c {
 +
 +337 -> 338 [label="[0x00-0x08][0x0A-0x1F][!-<][>-0xFF]"]
 +337 -> 340 [label="[0x09][ ]"]
 +337 -> 342 [label="[=]"]
 +338 -> 339
- 341 [label="scanner_re2c_default.D.re:589"]
++339 [label="scanner_re2c_default.D.re:601"]
 +340 -> 347
- 343 [label="scanner_re2c_default.D.re:592"]
++341 [label="scanner_re2c_default.D.re:593"]
 +342 -> 345
- 350 [label="scanner_re2c_default.D.re:610"]
++343 [label="scanner_re2c_default.D.re:596"]
 +344 -> 345
 +345 -> 343 [label="[0x00-0x08][0x0A-0x1F][!-0xFF]"]
 +345 -> 344 [label="[0x09][ ]"]
 +346 -> 347
 +347 -> 341 [label="[0x00-0x08][0x0A-0x1F][!-0xFF]"]
 +347 -> 346 [label="[0x09][ ]"]
 +}
 +
 +digraph re2c {
 +
 +349 -> 356 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!][#-&][(-,][.-/][:][<-0xFF]"]
 +349 -> 350 [label="[0x09-0x0A][0x0D][ ][;]"]
 +349 -> 358 [label="[\"]"]
 +349 -> 360 [label="[']"]
 +349 -> 353 [label="[-]"]
 +349 -> 351 [label="[0]"]
 +349 -> 354 [label="[1-9]"]
- 352 [label="scanner_re2c_default.D.re:604"]
++350 [label="scanner_re2c_default.D.re:614"]
 +351 -> 356 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-:][<-0xFF]"]
 +351 -> 352 [label="[0x09-0x0A][0x0D][ ][;]"]
- 375 [label="scanner_re2c_default.D.re:646"]
++352 [label="scanner_re2c_default.D.re:608"]
 +353 -> 357 [label="[0x00-0][:-0xFF]"]
 +353 -> 354 [label="[1-9]"]
 +354 -> 355
 +355 -> 356 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-/][:][<-0xFF]"]
 +355 -> 352 [label="[0x09-0x0A][0x0D][ ][;]"]
 +355 -> 354 [label="[0-9]"]
 +356 -> 357
 +357 -> 356 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-:][<-0xFF]"]
 +357 -> 350 [label="[0x09-0x0A][0x0D][ ][;]"]
 +358 -> 359
 +359 -> 358 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!][#-:][<-[][0x5D-0xFF]"]
 +359 -> 368 [label="[0x09][0x0D][ ][;]"]
 +359 -> 350 [label="[0x0A]"]
 +359 -> 356 [label="[\"]"]
 +359 -> 370 [label="[\\]"]
 +360 -> 361
 +361 -> 360 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-&][(-:][<-[][0x5D-0xFF]"]
 +361 -> 362 [label="[0x09][0x0D][ ][;]"]
 +361 -> 350 [label="[0x0A]"]
 +361 -> 356 [label="[']"]
 +361 -> 365 [label="[\\]"]
 +362 -> 363
 +363 -> 362 [label="[0x00-0x09][0x0B-&][(-[][0x5D-0xFF]"]
 +363 -> 364 [label="[0x0A]"]
 +363 -> 366 [label="[']"]
 +363 -> 367 [label="[\\]"]
 +364 -> 350
 +365 -> 360 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-:][<-0xFF]"]
 +365 -> 362 [label="[0x09][0x0D][ ][;]"]
 +365 -> 350 [label="[0x0A]"]
 +366 -> 350
 +367 -> 362 [label="[0x00-0x09][0x0B-0xFF]"]
 +367 -> 364 [label="[0x0A]"]
 +368 -> 369
 +369 -> 368 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +369 -> 364 [label="[0x0A]"]
 +369 -> 366 [label="[\"]"]
 +369 -> 371 [label="[\\]"]
 +370 -> 358 [label="[0x00-0x08][0x0B-0x0C][0x0E-0x1F][!-:][<-0xFF]"]
 +370 -> 368 [label="[0x09][0x0D][ ][;]"]
 +370 -> 350 [label="[0x0A]"]
 +371 -> 368 [label="[0x00-0x09][0x0B-0xFF]"]
 +371 -> 364 [label="[0x0A]"]
 +}
 +
 +digraph re2c {
 +
 +373 -> 374 [label="[0x00-0x09][0x0B-!][#-0][:-0xFF]"]
 +373 -> 376 [label="[0x0A]"]
 +373 -> 378 [label="[\"]"]
 +373 -> 379 [label="[1-9]"]
 +374 -> 375
- 377 [label="scanner_re2c_default.D.re:634"]
++375 [label="scanner_re2c_default.D.re:650"]
 +376 -> 377
- 380 [label="scanner_re2c_default.D.re:624"]
++377 [label="scanner_re2c_default.D.re:638"]
 +378 -> 384 [label="[0x00-0x09][0x0B-0xFF]"]
 +378 -> 375 [label="[0x0A]"]
 +379 -> 382
- 388 [label="scanner_re2c_default.D.re:629"]
++380 [label="scanner_re2c_default.D.re:628"]
 +381 -> 382
 +382 -> 380 [label="[0x00-/][:-0xFF]"]
 +382 -> 381 [label="[0-9]"]
 +383 -> 384
 +384 -> 383 [label="[0x00-0x09][0x0B-!][#-[][0x5D-0xFF]"]
 +384 -> 385 [label="[0x0A]"]
 +384 -> 387 [label="[\"]"]
 +384 -> 386 [label="[\\]"]
 +385 -> 375
 +386 -> 383 [label="[0x00-0x09][0x0B-0xFF]"]
 +386 -> 385 [label="[0x0A]"]
 +387 -> 388
- re2c: warning: line 610: rule matches empty string [-Wmatch-empty-string]
++388 [label="scanner_re2c_default.D.re:633"]
 +}
++re2c: warning: line 614: rule matches empty string [-Wmatch-empty-string]
Simple merge