aboutsummaryrefslogtreecommitdiff
path: root/ctags/docs/_images
diff options
context:
space:
mode:
Diffstat (limited to 'ctags/docs/_images')
-rw-r--r--ctags/docs/_images/area-and-parsers.svg456
-rw-r--r--ctags/docs/_images/input-text-stream.svg498
-rw-r--r--ctags/docs/_images/output-tag-stream.svg693
-rw-r--r--ctags/docs/_images/promise.svg546
-rw-r--r--ctags/docs/_images/stack-and-parsers.svg618
5 files changed, 2811 insertions, 0 deletions
diff --git a/ctags/docs/_images/area-and-parsers.svg b/ctags/docs/_images/area-and-parsers.svg
new file mode 100644
index 0000000..55688e5
--- /dev/null
+++ b/ctags/docs/_images/area-and-parsers.svg
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="72.79567mm"
+ height="80.585587mm"
+ viewBox="0 0 257.93741 285.53947"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.0 r"
+ sodipodi:docname="area-and-parsers.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12257"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path12259"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path11061"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6737"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6191"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8284271"
+ inkscape:cx="459.13739"
+ inkscape:cy="141.21166"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="2880"
+ inkscape:window-height="1517"
+ inkscape:window-x="0"
+ inkscape:window-y="55"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ scale-x="0.9375">
+ <sodipodi:guide
+ position="415.39384,5.0795382"
+ orientation="1,0"
+ id="guide7768"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="90.877794,80.212487"
+ orientation="1,0"
+ id="guide4617"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="144.90517,269.80548"
+ orientation="0,1"
+ id="guide4619"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="256.9374,62.645304"
+ orientation="1,0"
+ id="guide4621"
+ inkscape:locked="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-121.65977,-41.187943)">
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 192.97021,76.736577 12.39295,0.0223 -0.0207,10.0459 15.43867,-18.10275 -15.42523,-17.8284 -0.01,10.00683 -12.41063,-0.0434 z"
+ id="path5618-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <rect
+ y="56.921947"
+ x="212.53755"
+ height="268.80545"
+ width="166.05962"
+ id="rect5837-3"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,192.19745 H 370.06867"
+ id="path3856"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,170.04157 H 370.06867"
+ id="path3856-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,147.88567 H 370.06867"
+ id="path3856-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,92.495947 H 370.06868"
+ id="path3856-3-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,136.80773 H 370.06867"
+ id="path3856-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,81.418011 H 370.06868"
+ id="path3856-3-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,125.7298 H 370.06867"
+ id="path3856-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,70.340072 H 370.06868"
+ id="path3856-3-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,114.65183 H 370.06867"
+ id="path3856-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,103.57389 H 370.06868"
+ id="path3856-3-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,314.05482 H 370.06867"
+ id="path3856-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,236.50923 H 370.06868"
+ id="path3856-3-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,302.97688 H 370.06867"
+ id="path3856-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,214.35332 H 370.06868"
+ id="path3856-3-06"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,280.82101 H 370.06867"
+ id="path3856-26"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,258.6651 H 370.06868"
+ id="path3856-3-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,158.96364 H 370.06867"
+ id="path3856-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,291.89895 H 370.06867"
+ id="path3856-9-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,203.27539 H 370.06868"
+ id="path3856-3-3-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,269.74303 H 370.06867"
+ id="path3856-6-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,181.11951 H 370.06868"
+ id="path3856-3-06-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,247.58715 H 370.06867"
+ id="path3856-26-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 220.67844,225.43126 H 370.06868"
+ id="path3856-3-1-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="259.20898"
+ y="50.687943"
+ id="text4771-7"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5"
+ x="259.20898"
+ y="50.687943">input file</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 255.2964,187.32758 h -6.07639 v 10.41668 l 6.11255,-0.0362"
+ id="path4039"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 333.85358,218.87042 6.07638,0.0105 0.018,-10.41665 -6.1126,0.0256"
+ id="path4039-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.81249994, 8.43749982;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 256.25126,192.13226 113.81742,-0.26131"
+ id="path4908"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.81249997, 8.4374999;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 220.67844,202.94889 H 370.06868"
+ id="path4908-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.8125, 8.43749998;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 220.67844,214.02683 H 335.38118"
+ id="path4908-2-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ aria-label="area"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="text4771-7-3" />
+ <g
+ id="g5595"
+ transform="translate(-145.21796,91.603998)">
+ <g
+ id="text4771-7-9-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ aria-label="area"
+ transform="translate(10.093756,22.609375)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5522-8"
+ style="stroke:#ffffff;stroke-width:1px;stroke-opacity:1"
+ d="m 417.02206,85.088997 q 1.25,0 1.7125,0.5 0.475,0.5 0.475,1.875 v 4.25 h -0.9 l -0.025,-0.9375 h -0.025 q -0.5875,1.0625 -1.8625,1.0625 -0.8125,0 -1.3125,-0.5125 -0.5,-0.525 -0.5,-1.425 0,-1.1375 0.7625,-1.75 0.775,-0.625 2.3,-0.625 h 0.6 v -0.3125 q 0,-0.7125 -0.275,-1 -0.275,-0.2875 -0.95,-0.2875 -0.4125,0 -1.05,0.15 -0.6375,0.15 -1.075,0.35 v -0.9 q 0.4375,-0.1875 1.0625,-0.3125 0.625,-0.125 1.0625,-0.125 z m 1.225,3.1875 h -0.6 q -2.125,0 -2.125,1.5625 0,0.5625 0.2875,0.8625 0.2875,0.3 0.775,0.3 0.7375,0 1.2,-0.6 0.4625,-0.6 0.4625,-1.6875 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5524-4"
+ style="stroke:#ffffff;stroke-width:1px;stroke-opacity:1"
+ d="m 422.40956,85.213997 v 1.25 h 0.025 q 0.775,-1.375 2.15,-1.375 0.4625,0 0.875,0.125 v 0.875 q -0.4375,-0.1375 -0.875,-0.1375 -0.9125,0 -1.525,0.7625 -0.6125,0.7625 -0.6125,2 v 3 h -0.9875 v -6.5 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5526-5"
+ style="stroke:#ffffff;stroke-width:1px;stroke-opacity:1"
+ d="m 428.05956,88.788997 q 0.05,1.1625 0.475,1.675 0.425,0.5125 1.2375,0.5125 0.7625,0 1.6875,-0.45 v 1 q -0.925,0.3125 -1.75,0.3125 -2.6875,0 -2.6875,-3.375 0,-1.7625 0.625,-2.5625 0.625,-0.8125 1.875,-0.8125 1.1375,0 1.6875,0.775 0.5625,0.775 0.5625,2.5375 0,0.1375 -0.025,0.3875 z m 0,-0.825 h 2.725 q -0.0125,-2.0125 -1.2625,-2.0125 -0.7125,0 -1.0625,0.45 -0.35,0.45 -0.4,1.5625 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5528-0"
+ style="stroke:#ffffff;stroke-width:1px;stroke-opacity:1"
+ d="m 435.77206,85.088997 q 1.25,0 1.7125,0.5 0.475,0.5 0.475,1.875 v 4.25 h -0.9 l -0.025,-0.9375 h -0.025 q -0.5875,1.0625 -1.8625,1.0625 -0.8125,0 -1.3125,-0.5125 -0.5,-0.525 -0.5,-1.425 0,-1.1375 0.7625,-1.75 0.775,-0.625 2.3,-0.625 h 0.6 v -0.3125 q 0,-0.7125 -0.275,-1 -0.275,-0.2875 -0.95,-0.2875 -0.4125,0 -1.05,0.15 -0.6375,0.15 -1.075,0.35 v -0.9 q 0.4375,-0.1875 1.0625,-0.3125 0.625,-0.125 1.0625,-0.125 z m 1.225,3.1875 h -0.6 q -2.125,0 -2.125,1.5625 0,0.5625 0.2875,0.8625 0.2875,0.3 0.775,0.3 0.7375,0 1.2,-0.6 0.4625,-0.6 0.4625,-1.6875 z" />
+ </g>
+ <g
+ transform="translate(10.093756,22.609375)"
+ id="text4771-7-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ aria-label="area">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5522"
+ style="stroke-width:1px"
+ d="m 417.02206,85.088997 q 1.25,0 1.7125,0.5 0.475,0.5 0.475,1.875 v 4.25 h -0.9 l -0.025,-0.9375 h -0.025 q -0.5875,1.0625 -1.8625,1.0625 -0.8125,0 -1.3125,-0.5125 -0.5,-0.525 -0.5,-1.425 0,-1.1375 0.7625,-1.75 0.775,-0.625 2.3,-0.625 h 0.6 v -0.3125 q 0,-0.7125 -0.275,-1 -0.275,-0.2875 -0.95,-0.2875 -0.4125,0 -1.05,0.15 -0.6375,0.15 -1.075,0.35 v -0.9 q 0.4375,-0.1875 1.0625,-0.3125 0.625,-0.125 1.0625,-0.125 z m 1.225,3.1875 h -0.6 q -2.125,0 -2.125,1.5625 0,0.5625 0.2875,0.8625 0.2875,0.3 0.775,0.3 0.7375,0 1.2,-0.6 0.4625,-0.6 0.4625,-1.6875 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5524"
+ style="stroke-width:1px"
+ d="m 422.40956,85.213997 v 1.25 h 0.025 q 0.775,-1.375 2.15,-1.375 0.4625,0 0.875,0.125 v 0.875 q -0.4375,-0.1375 -0.875,-0.1375 -0.9125,0 -1.525,0.7625 -0.6125,0.7625 -0.6125,2 v 3 h -0.9875 v -6.5 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5526"
+ style="stroke-width:1px"
+ d="m 428.05956,88.788997 q 0.05,1.1625 0.475,1.675 0.425,0.5125 1.2375,0.5125 0.7625,0 1.6875,-0.45 v 1 q -0.925,0.3125 -1.75,0.3125 -2.6875,0 -2.6875,-3.375 0,-1.7625 0.625,-2.5625 0.625,-0.8125 1.875,-0.8125 1.1375,0 1.6875,0.775 0.5625,0.775 0.5625,2.5375 0,0.1375 -0.025,0.3875 z m 0,-0.825 h 2.725 q -0.0125,-2.0125 -1.2625,-2.0125 -0.7125,0 -1.0625,0.45 -0.35,0.45 -0.4,1.5625 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5528"
+ style="stroke-width:1px"
+ d="m 435.77206,85.088997 q 1.25,0 1.7125,0.5 0.475,0.5 0.475,1.875 v 4.25 h -0.9 l -0.025,-0.9375 h -0.025 q -0.5875,1.0625 -1.8625,1.0625 -0.8125,0 -1.3125,-0.5125 -0.5,-0.525 -0.5,-1.425 0,-1.1375 0.7625,-1.75 0.775,-0.625 2.3,-0.625 h 0.6 v -0.3125 q 0,-0.7125 -0.275,-1 -0.275,-0.2875 -0.95,-0.2875 -0.4125,0 -1.05,0.15 -0.6375,0.15 -1.075,0.35 v -0.9 q 0.4375,-0.1875 1.0625,-0.3125 0.625,-0.125 1.0625,-0.125 z m 1.225,3.1875 h -0.6 q -2.125,0 -2.125,1.5625 0,0.5625 0.2875,0.8625 0.2875,0.3 0.775,0.3 0.7375,0 1.2,-0.6 0.4625,-0.6 0.4625,-1.6875 z" />
+ </g>
+ </g>
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 218.89686,200.25581 12.39295,0.0223 -0.0207,10.0459 15.43867,-18.10275 -15.42523,-17.8284 -0.01,10.00683 -12.41063,-0.0434 z"
+ id="path5618-0-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="120.78477"
+ y="72.011642"
+ id="text4771-7-36"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7"
+ x="120.78477"
+ y="72.011642">host parser</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="131.38818"
+ y="195.4604"
+ id="text4771-7-36-5"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-3"
+ x="131.38818"
+ y="195.4604">guest parser</tspan></text>
+ </g>
+</svg>
diff --git a/ctags/docs/_images/input-text-stream.svg b/ctags/docs/_images/input-text-stream.svg
new file mode 100644
index 0000000..1842f6c
--- /dev/null
+++ b/ctags/docs/_images/input-text-stream.svg
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="167.89255mm"
+ height="99.839706mm"
+ viewBox="0 0 594.89486 353.76276"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="input-text-stream.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12257"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path12259"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path11061"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6737"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6191"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.0000001"
+ inkscape:cx="234.25314"
+ inkscape:cy="183.38668"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="2880"
+ inkscape:window-height="1583"
+ inkscape:window-x="1200"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <sodipodi:guide
+ position="426.1203,332.25068"
+ orientation="1,0"
+ id="guide7768" />
+ <sodipodi:guide
+ position="276.92077,57.186122"
+ orientation="1,0"
+ id="guide6795" />
+ <sodipodi:guide
+ position="524.61361,27.425191"
+ orientation="0,1"
+ id="guide6910" />
+ <sodipodi:guide
+ position="473.14292,279.92477"
+ orientation="0,1"
+ id="guide7227" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-67.866371,-141.45457)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="67.530678"
+ y="335.67322"
+ id="text9293"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan9295"
+ x="67.530678"
+ y="335.67322"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">File</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:"
+ d="m 92.08532,334.79905 26.03301,15.03449"
+ id="path7947-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5890-3"
+ width="115.17915"
+ height="143.60025"
+ x="120.64043"
+ y="350.61703" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="192.03923"
+ y="437.42728"
+ id="text4751-9"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753-3"
+ x="192.03923"
+ y="437.42728">inputFileInfo</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5890-3-2"
+ width="74.179138"
+ height="26.850252"
+ x="284.89038"
+ y="466.61707" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="289.03918"
+ y="485.67725"
+ id="text4751-9-5"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753-3-3"
+ x="289.03918"
+ y="485.67725">MIO</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="183.0112"
+ y="375.04214"
+ id="text4723-9"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6"
+ x="183.0112"
+ y="375.04214">.<tspan
+ style="fill:#ff0000"
+ id="tspan7233">input</tspan></tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:"
+ d="m 229.87899,474.95864 54.38481,-8.6455"
+ id="path7947-9-5-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="202.2612"
+ y="478.54218"
+ id="text4723-9-3"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-5"
+ x="202.2612"
+ y="478.54218">.mio</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="182.54245"
+ y="415.66718"
+ id="text4723-9-37"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-9"
+ x="182.54245"
+ y="415.66718">.source</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5890-3-2-0"
+ width="227.67914"
+ height="37.35025"
+ x="188.89038"
+ y="361.86703" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="122.66747"
+ y="492.16711"
+ id="text4751-9-2"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753-3-7"
+ x="122.66747"
+ y="492.16711">inputFile</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="192.0737"
+ y="394.16714"
+ id="text4751-9-7"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753-3-6"
+ x="192.0737"
+ y="394.16714">inputFileInfo</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="379.04248"
+ y="376.66718"
+ id="text4723-9-6"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-0"
+ x="379.04248"
+ y="376.66718">.name</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="343.10495"
+ y="390.54218"
+ id="text4723-9-6-5"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-0-8"
+ x="343.10495"
+ y="390.54218">.lineNumber</tspan></text>
+ <rect
+ y="405.86703"
+ x="188.89038"
+ height="37.35025"
+ width="227.67914"
+ id="rect6754"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="380.82373"
+ y="421.10468"
+ id="text4723-9-6-8"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-0-7"
+ x="380.82373"
+ y="421.10468">.name</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="344.8862"
+ y="434.97968"
+ id="text4723-9-6-5-1"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725-6-0-8-3"
+ x="344.8862"
+ y="434.97968">.lineNumber</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.56267413;marker-end:"
+ d="m 326.78713,483.28606 43.13352,-43.84062 0,-61.51829 -43.13352,-24.90314 0,-105.20449"
+ id="path6819"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="260.0112"
+ y="229.16718"
+ id="text4413-4"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415-4"
+ x="260.0112"
+ y="229.16718">readLineFrom<tspan
+ style="fill:#ff0000"
+ id="tspan7229">Input</tspan>File()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="259.13953"
+ y="244.50829"
+ id="text4413-4-4"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415-4-7"
+ x="259.13953"
+ y="244.50829">getcFrom<tspan
+ style="fill:#ff0000"
+ id="tspan7231">Input</tspan>File()</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3382-6"
+ width="188.39343"
+ height="34.850262"
+ x="173.88332"
+ y="155.94229" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="272.13773"
+ y="185.185"
+ id="text4295-0"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4297-1"
+ x="272.13773"
+ y="185.185">lang-&gt;parser()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="174.36806"
+ y="150.95457"
+ id="text4299-7"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4301-4"
+ x="174.36806"
+ y="150.95457">native parser written in C</tspan></text>
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:"
+ d="m 318.88942,215.03846 -0.022,-12.39295 -10.0459,0.0207 18.1028,-15.43867 17.82841,15.42523 -10.00691,0.01 0.043,12.41063 z"
+ id="path5618-0-6-14-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.47632315;marker-end:"
+ d="m 326.78713,482.57895 149.35029,-37.18376 -0.5,-204.93964"
+ id="path6945"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="412.98727"
+ y="230.28645"
+ id="text4413-4-1"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415-4-5"
+ x="412.98727"
+ y="230.28645">readLineFrom<tspan
+ style="fill:#000080"
+ id="tspan7235">Bypass</tspan>()</tspan></text>
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5890-3-2-9"
+ width="74.179138"
+ height="26.850252"
+ x="585.39044"
+ y="467.36707" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="589.53925"
+ y="486.42725"
+ id="text4751-9-5-6"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753-3-3-7"
+ x="589.53925"
+ y="486.42725">MIO</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.72144847;marker-end:"
+ d="m 624.47997,476.79215 c 0,-237 0,-237 0,-237"
+ id="path7025"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="583.07373"
+ y="230.22966"
+ id="text4413-4-1-8"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415-4-5-5"
+ x="583.07373"
+ y="230.22966">readLine<tspan
+ style="fill:#008000"
+ id="tspan7237">Raw</tspan>()</tspan></text>
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:"
+ d="m 465.58226,215.68015 -0.022,-12.39295 -10.0459,0.0207 18.1028,-15.43867 17.82841,15.42523 -10.00691,0.01 0.043,12.41063 z"
+ id="path5618-0-6-14-4-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:"
+ d="m 613.58226,214.68015 -0.022,-12.39295 -10.0459,0.0207 18.1028,-15.43867 17.82841,15.42523 -10.00691,0.01 0.043,12.41063 z"
+ id="path5618-0-6-14-4-4-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3382-6-8"
+ width="188.39343"
+ height="34.850262"
+ x="174.22289"
+ y="286.2106" />
+ <text
+ sodipodi:linespacing="0%"
+ id="text7290"
+ y="280.95459"
+ x="174.36806"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="280.95459"
+ x="174.36806"
+ id="tspan7292"
+ sodipodi:role="line">regex parser pattern matching</tspan></text>
+ </g>
+</svg>
diff --git a/ctags/docs/_images/output-tag-stream.svg b/ctags/docs/_images/output-tag-stream.svg
new file mode 100644
index 0000000..adccd79
--- /dev/null
+++ b/ctags/docs/_images/output-tag-stream.svg
@@ -0,0 +1,693 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="182.72736mm"
+ height="151.30022mm"
+ viewBox="0 0 647.45913 536.10312"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="output-tag-stream.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12257"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path12259"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path11061"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6737"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6191"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.87"
+ inkscape:cx="346.42618"
+ inkscape:cy="423.28269"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <sodipodi:guide
+ position="511.54715,236.14422"
+ orientation="1,0"
+ id="guide7768" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.506451,-21.688993)">
+ <path
+ style="fill:#b3b3b3;fill-rule:evenodd;stroke:#e2e4e4;stroke-width:10.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 81.07377,300.30479 457.92005,301.719"
+ id="path4279-5-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="184.74545"
+ y="304.69986"
+ id="text4413"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415"
+ x="184.74545"
+ y="304.69986">jsonWriter</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="283.88431"
+ y="305.40698"
+ id="text4763"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4765"
+ x="283.88431"
+ y="305.40698">xrefWriter</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="382.71069"
+ y="304.69986"
+ id="text4767"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4769"
+ x="382.71069"
+ y="304.69986">ctagsWriter</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="79.806602"
+ y="305.10468"
+ id="text4413-3"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4415-5"
+ x="79.806602"
+ y="305.10468">etagsWriter</tspan></text>
+ <path
+ style="fill:#b3b3b3;fill-rule:evenodd;stroke:#e2e4e4;stroke-width:10.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 197.3414,195.06721 406.58639,1.41421"
+ id="path4279-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#b3b3b3;fill-rule:evenodd;stroke:#e2e4e4;stroke-width:10.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 269.83382,153.0672 274.35743,1.41421"
+ id="path4279"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3382"
+ width="188.39343"
+ height="34.850262"
+ x="306.42352"
+ y="71.447166" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 396.15383,115.31842 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ id="path5618-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 245.31691,159.54564 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ id="path5618-0-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <rect
+ y="346.8757"
+ x="280.06638"
+ height="72.35025"
+ width="77.679146"
+ id="rect5837"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0"
+ id="path5845"
+ d="m 241.84566,323.14873 8.03233,9.43755 -7.65191,6.50913 23.79205,-0.0189 3.53717,-23.30833 -7.61526,6.49189 -8.02777,-9.46469 z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 389.5553,323.14873 -8.03233,9.43755 7.65191,6.50913 -23.79205,-0.0189 -3.53717,-23.30833 7.61526,6.49189 8.02777,-9.46469 z"
+ id="path5862"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 115.61629,312.33404 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ id="path5888"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5890"
+ width="77.679146"
+ height="72.35025"
+ x="86.066391"
+ y="346.8757" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 208.58379,385.56106 12.39295,0.0223 -0.0207,10.0459 15.43867,-18.10275 -15.42523,-17.8284 -0.01,10.00683 -12.41063,-0.0434 z"
+ id="path5618-0-6-1-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0"
+ id="path5927"
+ d="m 539.31691,159.54564 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="233.49739"
+ x="467.19669"
+ height="38.701088"
+ width="41.551579"
+ id="rect5837-1"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5952"
+ width="41.551579"
+ height="38.701088"
+ x="467.19669"
+ y="233.49739" />
+ <rect
+ y="233.49739"
+ x="467.19669"
+ height="38.701088"
+ width="41.551579"
+ id="rect5954"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5956"
+ width="41.551579"
+ height="38.701088"
+ x="509.19669"
+ y="233.49739" />
+ <rect
+ y="233.49739"
+ x="551.19672"
+ height="38.701088"
+ width="41.551579"
+ id="rect5958"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ id="g5972"
+ transform="translate(259.55907,-190.23523)">
+ <circle
+ r="5.5558391"
+ cy="443.24023"
+ cx="346.9874"
+ id="path5962"
+ style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle5964"
+ cx="346.9874"
+ cy="443.24023"
+ r="5.5558391" />
+ <circle
+ r="5.5558391"
+ cy="443.24023"
+ cx="346.9874"
+ id="circle5966"
+ style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle5968"
+ cx="362.9874"
+ cy="443.24023"
+ r="5.5558391" />
+ <circle
+ r="5.5558391"
+ cy="443.24023"
+ cx="378.9874"
+ id="circle5970"
+ style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0"
+ id="path5927-4"
+ d="m 561.78831,210.16742 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 8;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 537.11399,286.32865 -0.0514,25.25382 118.05104,0 -0.82197,-287.893477 -401.03056,0 0,130.309677"
+ id="path6643"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 647.10262,99.7502 -0.0223,-12.39295 -10.0459,0.0207 18.10275,-15.43867 17.8284,15.42523 -10.00683,0.01 0.0434,12.41063 z"
+ id="path5618-0-6-14"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 465,103.86221 c 25,135.5 25,135.5 25,135.5"
+ id="path7947"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="484.44189"
+ x="204.85831"
+ height="72.35025"
+ width="77.679146"
+ id="rect5837-8"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="108.89445"
+ y="473.50165"
+ id="text9293"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan9295"
+ x="108.89445"
+ y="473.50165"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">TagFile</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 159.9491,467.12748 45.53301,18.53449"
+ id="path7947-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 278.53294,498.24274 78.88478,-78.3955"
+ id="path7947-9-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect11783"
+ width="77.679146"
+ height="72.35025"
+ x="432.85831"
+ y="484.44189" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path11823"
+ d="M 278.98416,518.24883 432.44359,484.7295"
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 506.74466,494.2973 465.60506,272.92337"
+ id="path12255"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="250.69174"
+ y="503.36951"
+ id="text4723"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4725"
+ x="250.69174"
+ y="503.36951">.mio</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="212.93439"
+ y="520.0766"
+ id="text4727"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4729"
+ x="212.93439"
+ y="520.0766">.corkQueue</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="208.12556"
+ y="551.69763"
+ id="text4731"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4733"
+ x="208.12556"
+ y="551.69763">tagFile</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="435.61075"
+ y="551.87939"
+ id="text4735"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4737"
+ x="435.61075"
+ y="551.87939">sCorkQueue</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="466.79224"
+ y="499.26263"
+ id="text4739"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4741"
+ x="466.79224"
+ y="499.26263">.queue</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="283.84296"
+ y="415.47815"
+ id="text4743"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4745"
+ x="283.84296"
+ y="415.47815">MIO</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="179.7706"
+ y="406.90338"
+ id="text4747"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4749"
+ x="179.7706"
+ y="406.90338">endEtagsFile()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="89.215195"
+ y="414.43594"
+ id="text4751"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4753"
+ x="89.215195"
+ y="414.43594">MIO</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="157.84821"
+ y="156.5154"
+ id="text4755"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4757"
+ x="157.84821"
+ y="156.5154">if (!use_cork)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="204.45424"
+ y="199.53238"
+ id="text4759"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4761"
+ x="204.45424"
+ y="199.53238">writeTagEntry()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="572.71277"
+ y="304.77167"
+ id="text4771"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4773"
+ x="572.71277"
+ y="304.77167">flushing</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="561.21216"
+ y="157.6367"
+ id="text4775"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4777"
+ x="561.21216"
+ y="157.6367">if (use_cork)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="365.88055"
+ y="157.40643"
+ id="text4779"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4781"
+ x="365.88055"
+ y="157.40643">makeTagEntry()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="503.32812"
+ y="203.0789"
+ id="text4291"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4293"
+ x="503.32812"
+ y="203.0789">queueTagEntry()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="404.67789"
+ y="100.68987"
+ id="text4295"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4297"
+ x="404.67789"
+ y="100.68987">lang-&gt;parser()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="306.90823"
+ y="66.45945"
+ id="text4299"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4301"
+ x="306.90823"
+ y="66.45945">native parser written in C</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="472.24466"
+ y="266.97083"
+ id="text4283"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4285"
+ x="472.24466"
+ y="266.97083">tagEntryInfo</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="472.24466"
+ y="266.97083"
+ id="text4287"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4289"
+ x="472.24466"
+ y="266.97083">tagEntryInfo</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="59.61412"
+ y="431.24063"
+ id="text9293-3"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan9295-6"
+ x="59.61412"
+ y="431.24063"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';text-align:start;writing-mode:lr-tb;text-anchor:start">writer-etags.c private</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="204.96909"
+ y="249.66718"
+ id="text4759-3"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4761-6"
+ x="204.96909"
+ y="249.66718">writeWriteTag()</tspan></text>
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 245.29047,205.90418 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ id="path5618-0-6-1-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 307.79047,312.83032 -0.0223,12.39295 -10.0459,-0.0207 18.10275,15.43867 17.8284,-15.42523 -10.00683,-0.01 0.0434,-12.41063 z"
+ id="path5618-0-6-1-7-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 254.18784,256.29217 c 148.49999,38 148.49999,38 148.49999,38"
+ id="path3532"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 252.93784,256.79217 -131.99999,36.5"
+ id="path3532-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 252.68784,257.04217 -38.49999,36"
+ id="path3532-6-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 253.93784,256.29217 59.00001,38"
+ id="path3532-6-2-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="25.256451"
+ y="285.27063"
+ id="text4759-3-1"
+ sodipodi:linespacing="0%"><tspan
+ sodipodi:role="line"
+ id="tspan4761-6-2"
+ x="25.256451"
+ y="285.27063">writerTable[]</tspan></text>
+ </g>
+</svg>
diff --git a/ctags/docs/_images/promise.svg b/ctags/docs/_images/promise.svg
new file mode 100644
index 0000000..346dc5f
--- /dev/null
+++ b/ctags/docs/_images/promise.svg
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="140.86948mm"
+ height="49.095894mm"
+ viewBox="0 0 499.14381 173.96183"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (unknown)"
+ sodipodi:docname="promise.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5611"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send">
+ <path
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ style="fill:#434442;fill-opacity:1;fill-rule:evenodd;stroke:#434442;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5609"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Send"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path4640"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4963"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="scale(-0.6)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4961" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4646"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6464"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:path-effect
+ effect="bspline"
+ id="path-effect6395"
+ is_visible="true"
+ weight="33.333333"
+ steps="2"
+ helper_size="0"
+ apply_no_weight="true"
+ apply_with_weight="true"
+ only_selected="false" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect6343"
+ is_visible="true" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12257"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path12259"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path11061"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6737"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6191"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5611-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5609-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5611-6-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Send">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5609-2-0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.2218218"
+ inkscape:cx="50.371414"
+ inkscape:cy="96.637368"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="false"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="972"
+ inkscape:window-x="0"
+ inkscape:window-y="55"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ scale-x="0.9375">
+ <sodipodi:guide
+ position="617.64084,108.78106"
+ orientation="1,0"
+ id="guide7768"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="320.90835,169.99278"
+ orientation="1,0"
+ id="guide4617"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="347.15216,373.50701"
+ orientation="0,1"
+ id="guide4619"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="459.1844,166.34682"
+ orientation="1,0"
+ id="guide4621"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="155.05672,2.2516886"
+ orientation="0,1"
+ id="guide13925"
+ inkscape:locked="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(80.58721,-256.46709)">
+ <g
+ aria-label="area"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="text4771-7-3" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4699"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0px;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(0.9375,0,0,0.9375,21.027264,97.641448)"><flowRegion
+ id="flowRegion4701"><rect
+ id="rect4703"
+ width="157.96085"
+ height="59.746849"
+ x="330.65381"
+ y="240.80962" /></flowRegion><flowPara
+ id="flowPara4705" /></flowRoot> <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
+ d="M -80.58721,406.35501 H 354.78268"
+ id="path4623"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="354.147"
+ y="418.76654"
+ id="text4771-7-36-6-3"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-6"
+ x="354.147"
+ y="418.76654">t</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-31.141937"
+ y="427.67892"
+ id="text4771-7-36-7"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-5"
+ x="-31.141937"
+ y="427.67892">A host parser runs</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M -45.199435,414.5894 V 397.32522"
+ id="path5573"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5599"
+ d="M 99.17556,414.5894 V 397.32522"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#434442;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5611)"
+ d="m -45.391259,406.70575 c 5.968169,10.85122 46.3966015,9.39363 75.955777,9.72851 29.559169,0.33488 64.701623,-3.91925 67.414423,-8.8023"
+ id="path5601"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="czc" />
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#fd0000;fill-opacity:1;stroke:#c7c7c7;stroke-width:1.03733325;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5888"
+ sodipodi:sides="5"
+ sodipodi:cx="19.89691"
+ sodipodi:cy="405.89642"
+ sodipodi:r1="4.8120704"
+ sodipodi:r2="2.4060352"
+ sodipodi:arg1="1.5707963"
+ sodipodi:arg2="2.1991149"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 19.89691,410.70849 -1.414232,-2.86554 -3.162319,-0.45952 2.288275,-2.23051 -0.540188,-3.14954 2.828464,1.48701 2.828464,-1.48701 -0.540189,3.14954 2.288276,2.23051 -3.162319,0.45952 z"
+ inkscape:transform-center-y="0.45952153"
+ inkscape:transform-center-x="1.4171862e-06" />
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:#c7c7c7;stroke-width:1.03733325;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5888-5"
+ sodipodi:sides="5"
+ sodipodi:cx="-22.920158"
+ sodipodi:cy="405.47275"
+ sodipodi:r1="4.8120704"
+ sodipodi:r2="2.4060352"
+ sodipodi:arg1="1.5707963"
+ sodipodi:arg2="2.1991149"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m -22.920158,410.28482 -1.414232,-2.86555 -3.162319,-0.45951 2.288275,-2.23052 -0.540188,-3.14954 2.828464,1.48701 2.828464,-1.48701 -0.540189,3.14954 2.288276,2.23052 -3.162319,0.45951 z"
+ inkscape:transform-center-y="0.45952153"
+ inkscape:transform-center-x="1.4171862e-06" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5611-6)"
+ d="m 100.65059,406.78421 c 9.42101,10.08392 43.05978,10.04955 56.50571,10.19261 13.44593,0.14306 35.87249,1.43255 50.67021,-9.20523"
+ id="path5601-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="czc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 208.94058,414.04684 V 396.78266"
+ id="path11193"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-319.76288"
+ y="235.35492"
+ id="text4771-7-36-6-1"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2"
+ x="-319.76288"
+ y="235.35492">guest parser X is scheduled</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000191px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-293.1586"
+ y="268.05173"
+ id="text4771-7-36-6-1-7"
+ inkscape:transform-center-x="70.62788"
+ inkscape:transform-center-y="26.816414"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000191px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2-0"
+ x="-293.1586"
+ y="268.05173">guest parser Y is scheduled</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000191px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="141.21521"
+ y="427.84195"
+ id="text4771-7-36-7-9"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-5-3"
+ x="141.21521"
+ y="427.84195">X runs</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5611-6-6)"
+ d="m 211.09459,406.2211 c 9.42101,10.08392 43.05978,10.04955 56.50571,10.19261 13.44593,0.14306 35.87249,1.43255 50.67021,-9.20523"
+ id="path5601-9-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="czc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 319.38458,413.48373 V 396.21954"
+ id="path11193-2"
+ inkscape:connector-curvature="0" />
+ <text
+ id="text15065"
+ y="427.84195"
+ x="251.56892"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000191px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="427.84195"
+ x="251.56892"
+ id="tspan15063"
+ sodipodi:role="line"
+ style="stroke-width:1px">Y runs</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-242.36191"
+ y="329.81918"
+ id="text4771-7-36-6-1-8"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2-7"
+ x="-242.36191"
+ y="329.81918">promise for X is forced</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-171.92081"
+ y="413.22397"
+ id="text4771-7-36-6-1-8-9"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2-7-2"
+ x="-171.92081"
+ y="413.22397">promise for Y is forced</tspan></text>
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path16493"
+ sodipodi:sides="3"
+ sodipodi:cx="-71.886269"
+ sodipodi:cy="404.71149"
+ sodipodi:r1="5.4256077"
+ sodipodi:r2="2.758086"
+ sodipodi:arg1="1.5707963"
+ sodipodi:arg2="2.6179939"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m -71.886268,410.13709 -2.388573,-4.04656 -2.310142,-4.09185 4.698714,-0.0453 4.698714,0.0453 -2.310141,4.09185 z"
+ inkscape:transform-center-y="1.3337608" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-352.85925"
+ y="198.87411"
+ id="text4771-7-36-6-1-8-0"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2-7-23"
+ x="-352.85925"
+ y="198.87411">opens an input file</tspan></text>
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path16493-7"
+ sodipodi:sides="3"
+ sodipodi:cx="340.00958"
+ sodipodi:cy="404.30811"
+ sodipodi:r1="5.4256077"
+ sodipodi:r2="2.758086"
+ sodipodi:arg1="1.5707963"
+ sodipodi:arg2="2.6179939"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 340.00958,409.73371 -2.38857,-4.04656 -2.31014,-4.09185 4.69871,-0.0453 4.69872,0.0453 -2.31014,4.09185 z"
+ inkscape:transform-center-y="-1.3260982"
+ transform="rotate(60.736224,338.40961,405.24561)"
+ inkscape:transform-center-x="0.034854492" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-90.424301"
+ y="516.34271"
+ id="text4771-7-36-6-1-8-0-5"
+ transform="rotate(-50.477323)"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4-2-7-23-9"
+ x="-90.424301"
+ y="516.34271">closes the input file</tspan></text>
+ </g>
+</svg>
diff --git a/ctags/docs/_images/stack-and-parsers.svg b/ctags/docs/_images/stack-and-parsers.svg
new file mode 100644
index 0000000..a8429dd
--- /dev/null
+++ b/ctags/docs/_images/stack-and-parsers.svg
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="121.29728mm"
+ height="67.63649mm"
+ viewBox="0 0 429.79351 239.65685"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.1 r"
+ sodipodi:docname="stack-and-parsers.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6482"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6464"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:path-effect
+ effect="bspline"
+ id="path-effect6395"
+ is_visible="true"
+ weight="33.333333"
+ steps="2"
+ helper_size="0"
+ apply_no_weight="true"
+ apply_with_weight="true"
+ only_selected="false" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect6343"
+ is_visible="true" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12257"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path12259"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path11061"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6737"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6191"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6735-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6737-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:#666666;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.2218218"
+ inkscape:cx="367.04879"
+ inkscape:cy="111.90442"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1200"
+ inkscape:window-height="1536"
+ inkscape:window-x="0"
+ inkscape:window-y="47"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ scale-x="0.9375">
+ <sodipodi:guide
+ position="516.02635,15.65043"
+ orientation="1,0"
+ id="guide7768"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="219.29387,76.862154"
+ orientation="1,0"
+ id="guide4617"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="245.53768,280.37638"
+ orientation="0,1"
+ id="guide4619"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="357.56991,73.216197"
+ orientation="1,0"
+ id="guide4621"
+ inkscape:locked="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-21.027264,-97.641448)">
+ <g
+ aria-label="area"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="text4771-7-3" />
+ <g
+ id="g5858"
+ transform="translate(-145.32403,-23.446042)">
+ <path
+ id="rect5837-3-0-2"
+ d="M 186.51929,165.75169 H 352.5789 V 387.73042 H 186.51929 Z"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#666666;stroke-width:1.81746745;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ transform="matrix(1,0,0.44448425,0.89578667,0,0)"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-36-6"
+ d="M 317.98756,248.54658 H 467.37779"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-10-6"
+ d="M 309.85516,232.15704 H 459.24539"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-5-6-4"
+ d="M 301.72276,215.76748 H 451.11299"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-6-3-9"
+ d="M 281.39176,174.7936 H 430.78201"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-2-2-5"
+ d="M 297.65656,207.5727 H 447.04679"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-9-0-0"
+ d="M 277.32556,166.59883 H 426.71581"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-1-6-4"
+ d="M 293.59036,199.37794 H 442.98059"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-2-1-8"
+ d="M 273.25936,158.40406 H 422.64961"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-7-5-7"
+ d="M 289.52415,191.18315 H 438.91438"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-0-5-1"
+ d="M 285.45795,182.98837 H 434.8482"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-9-4-7"
+ d="M 362.71577,338.6891 H 512.106"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-3-7-2"
+ d="M 334.25237,281.32568 H 483.64262"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-6-6-7"
+ d="M 358.64957,330.49432 H 508.0398"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-06-5-2"
+ d="M 326.11996,264.93612 H 475.51021"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-26-6-2"
+ d="M 350.51717,314.10479 H 499.9074"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-1-9-6"
+ d="M 342.38476,297.71522 H 491.77501"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-8-3-1"
+ d="M 305.78897,223.96227 H 455.1792"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-9-7-7-0"
+ d="M 354.58337,322.29956 H 503.9736"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-3-9-4-6"
+ d="M 322.05376,256.74135 H 471.44401"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-6-2-5-1"
+ d="M 346.45096,305.90999 H 495.84119"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-06-0-2-5"
+ d="M 313.92136,240.35181 H 463.31161"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-26-2-5-9"
+ d="M 338.31856,289.52044 H 487.70879"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-1-3-4-4"
+ d="M 330.18616,273.13089 H 479.57641"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <g
+ transform="translate(-121.31023,-50.022675)"
+ id="g5858-6">
+ <path
+ inkscape:connector-curvature="0"
+ id="rect5837-3-0-2-8"
+ d="M 186.51929,165.75169 H 352.5789 V 387.73042 H 186.51929 Z"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#666666;stroke-width:1.81746745;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ transform="matrix(1,0,0.44448425,0.89578667,0,0)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-36-6-0"
+ d="M 317.98756,248.54658 H 467.37779"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-10-6-2"
+ d="M 309.85516,232.15704 H 459.24539"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-5-6-4-1"
+ d="M 301.72276,215.76748 H 451.11299"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-6-3-9-0"
+ d="M 281.39176,174.7936 H 430.78201"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-2-2-5-5"
+ d="M 297.65656,207.5727 H 447.04679"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-9-0-0-1"
+ d="M 277.32556,166.59883 H 426.71581"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-1-6-4-1"
+ d="M 293.59036,199.37794 H 442.98059"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-2-1-8-0"
+ d="M 273.25936,158.40406 H 422.64961"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-7-5-7-8"
+ d="M 289.52415,191.18315 H 438.91438"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-0-5-1-5"
+ d="M 285.45795,182.98837 H 434.8482"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-9-4-7-0"
+ d="M 362.71577,338.6891 H 512.106"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-3-7-2-6"
+ d="M 334.25237,281.32568 H 483.64262"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-6-6-7-4"
+ d="M 358.64957,330.49432 H 508.0398"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-06-5-2-6"
+ d="M 326.11996,264.93612 H 475.51021"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-26-6-2-2"
+ d="M 350.51717,314.10479 H 499.9074"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-1-9-6-5"
+ d="M 342.38476,297.71522 H 491.77501"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-8-3-1-8"
+ d="M 305.78897,223.96227 H 455.1792"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-9-7-7-0-6"
+ d="M 354.58337,322.29956 H 503.9736"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-3-9-4-6-2"
+ d="M 322.05376,256.74135 H 471.44401"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-6-2-5-1-8"
+ d="M 346.45096,305.90999 H 495.84119"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-06-0-2-5-4"
+ d="M 313.92136,240.35181 H 463.31161"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-26-2-5-9-7"
+ d="M 338.31856,289.52044 H 487.70879"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3856-3-1-3-4-4-2"
+ d="M 330.18616,273.13089 H 479.57641"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80632514px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 100.12441,142.99257 12.39295,0.0223 -0.0207,10.0459 15.43867,-18.10275 -15.42523,-17.8284 -0.01,10.00683 -12.41063,-0.0434 z"
+ id="path5618-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="27.938955"
+ y="138.26762"
+ id="text4771-7-36"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7"
+ x="27.938955"
+ y="138.26762">base parser</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="90.335609"
+ y="169.58246"
+ id="text4771-7-36-5"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-3"
+ x="90.335609"
+ y="169.58246">subparser</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 280.82034,198.59405 50.5051,-0.38431"
+ id="path6201"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 180.41253,165.74481 50.5051,-0.38431"
+ id="path6201-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 208.87593,223.10822 50.5051,-0.38431"
+ id="path6201-0-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 152.60161,173.77936 12.39295,0.0223 -0.0207,10.0459 15.43867,-18.10275 -15.42523,-17.8284 -0.01,10.00683 -12.41063,-0.0434 z"
+ id="path5618-0-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 57.025791,139.62033 v 27.0137 h 31.985533"
+ id="path6339"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="20.453533"
+ y="178.02365"
+ id="text4771-7-36-6"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-4"
+ x="20.453533"
+ y="178.02365">callback</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000095px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="356.87888"
+ y="337.17331"
+ id="text4771-7-36-5-3"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-3-6"
+ x="356.87888"
+ y="337.17331">lower view</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.50000191px;line-height:0%;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="382.32077"
+ y="310.96411"
+ id="text4771-7-36-5-3-7"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan4773-5-7-3-6-5"
+ x="382.32077"
+ y="310.96411">higher view</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4699"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:0px;font-family:'VL Gothic';-inkscape-font-specification:'VL Gothic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(0.9375,0,0,0.9375,21.027264,97.641448)"><flowRegion
+ id="flowRegion4701"><rect
+ id="rect4703"
+ width="157.96085"
+ height="59.746849"
+ x="330.65381"
+ y="240.80962" /></flowRegion><flowPara
+ id="flowPara4705"></flowPara></flowRoot> </g>
+</svg>