1 <?xml version=
"1.0" encoding=
"UTF-8" standalone=
"no"?>
2 <!-- Created with Inkscape (http://www.inkscape.org/) -->
4 xmlns:
dc=
"http://purl.org/dc/elements/1.1/"
5 xmlns:
cc=
"http://web.resource.org/cc/"
6 xmlns:
rdf=
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:
svg=
"http://www.w3.org/2000/svg"
8 xmlns=
"http://www.w3.org/2000/svg"
9 xmlns:
sodipodi=
"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:
inkscape=
"http://www.inkscape.org/namespaces/inkscape"
14 sodipodi:
version=
"0.32"
15 inkscape:
version=
"0.45.1"
16 sodipodi:
docbase=
"/home/rodney/dev/my-vala/doc/hackers/figures"
17 sodipodi:
docname=
"valac-data.svg"
18 inkscape:
output_extension=
"org.inkscape.output.svg.inkscape">
22 inkscape:
stockid=
"Arrow2Lend"
27 style=
"overflow:visible;">
30 style=
"font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
31 d=
"M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
32 transform=
"scale(1.1) rotate(180) translate(1,0)" />
43 inkscape:
pageopacity=
"0.0"
44 inkscape:
pageshadow=
"2"
46 inkscape:
cx=
"434.8954"
48 inkscape:
document-units=
"px"
49 inkscape:
current-layer=
"layer1"
50 inkscape:
window-width=
"889"
51 inkscape:
window-height=
"679"
53 inkscape:
window-y=
"26" />
59 <dc:format>image/svg+xml
</dc:format>
61 rdf:
resource=
"http://purl.org/dc/dcmitype/StillImage" />
66 inkscape:
label=
"Layer 1"
67 inkscape:
groupmode=
"layer"
70 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
71 d=
"M 137,70.362183 L 164,88.362183"
74 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
75 d=
"M 138,131.36218 L 163,108.36218"
78 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
79 d=
"M 258,98.362183 L 284,99.362183"
82 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
83 d=
"M 368,100.36218 L 396,93.362183"
86 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
87 d=
"M 449,163.36218 L 445,198.36218"
90 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
91 d=
"M 442,288.36218 L 442,304.36218"
94 style=
"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
95 d=
"M 139,194.36218 C 193.8069,194.36218 239.76086,234.15327 261.90625,259.08093 C 280.3125,279.79968 312.4748,327.36218 386,327.36218"
97 sodipodi:
nodetypes=
"ccz" />
99 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
108 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
115 y=
"75.835815">.vala
</tspan></text>
120 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
121 xml:
space=
"preserve"><tspan
125 sodipodi:
role=
"line">.vapi
</tspan></text>
128 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
135 y=
"199.36218">.c
</tspan></text>
143 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
145 style=
"fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
146 d=
"M 293.57048,56.125946 C 293.57048,56.125946 312.53524,46.692118 331.50001,56.125946 C 350.46478,65.559774 360.42955,62.125946 360.42955,62.125946 C 365.86247,62.125946 370.23627,66.49974 370.23627,71.932658 C 370.23627,71.932658 367.23627,89.897425 367.23627,105.86219 C 367.23627,121.82696 370.23627,135.79172 370.23627,135.79172 C 370.23627,141.22464 365.86247,145.59843 360.42955,145.59843 C 347.78637,145.59843 350.64319,138.09843 326.50001,132.59843 C 303.30649,127.31477 297.21366,145.59843 284.57048,145.59843 C 279.13756,145.59843 274.76376,141.22464 274.76376,135.79172 C 274.76376,125.14854 282.76376,114.50537 282.76376,103.86219 C 282.76376,93.219012 274.76376,82.575835 274.76376,71.932658 C 274.76376,66.49974 288.13756,56.125946 293.57048,56.125946 z "
148 sodipodi:
nodetypes=
"czcczcczccccc" />
151 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
155 sodipodi:
cy=
"101.36218"
156 sodipodi:
r1=
"47.507893"
157 sodipodi:
r2=
"38.434692"
158 sodipodi:
arg1=
"0.85988695"
159 sodipodi:
arg2=
"1.4882055"
160 inkscape:
flatsided=
"true"
161 inkscape:
rounded=
"0.93"
162 inkscape:
randomized=
"0.071"
163 d=
"M 508.3933,139.91036 C 467.50888,173.3742 496.1851,166.86576 451.08861,143.24746 C 405.99211,119.62916 417.24787,143.30695 429.03126,91.47939 C 440.81465,39.651833 419.13202,59.553864 470.39081,56.019102 C 521.64961,52.484339 503.76273,33.360411 520.68727,81.327036 C 537.61182,129.29366 549.27771,106.44652 508.3933,139.91036 z "
164 transform=
"translate(-34,0)" />
167 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
171 sodipodi:
cy=
"110.36218"
172 sodipodi:
r1=
"56.080299"
173 sodipodi:
r2=
"35.514645"
174 sodipodi:
arg1=
"0.87377495"
175 sodipodi:
arg2=
"1.5788422"
176 inkscape:
flatsided=
"false"
177 inkscape:
rounded=
"0.93"
178 inkscape:
randomized=
"0.071"
179 d=
"M 655.23869,149.68215 C 627.82911,169.78068 656.29721,143.21919 621.17959,144.91919 C 591.00205,146.38004 610.13732,172.82185 587.71756,154.63154 C 561.62769,133.46347 595.7806,153.2355 585.213,121.3185 C 576.13197,93.891337 557.06961,127.31253 563.62555,98.16296 C 571.25469,64.241597 573.01745,105.71175 600.26202,83.861726 C 623.67403,65.085397 585.55746,57.567819 614.47924,56.481192 C 648.13553,55.216683 608.93036,65.051975 638.71566,81.387825 C 664.31098,95.425674 658.3667,58.269693 669.5829,85.482305 C 682.63519,117.14963 662.38659,92.829319 653.09774,125.14806 C 645.11558,152.92045 678.79251,132.41092 655.23869,149.68215 z "
180 transform=
"matrix(0.9310943,-0.3647785,0.3647785,0.9310943,-176.05747,355.94454)" />
188 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
190 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
199 style=
"font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
206 y=
"231.05055">C code
</tspan><tspan
210 id=
"tspan3175">.c .h
</tspan></text>
213 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
220 y=
"107.23035">AST
</tspan></text>
223 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
230 y=
"103.13395">AST'
</tspan></text>
233 style=
"font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
240 y=
"103.11823">CCode
</tspan><tspan
244 id=
"tspan3189">Tree
</tspan></text>
246 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
254 style=
"font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
261 y=
"331.83582">Executable
</tspan></text>
269 style=
"opacity:1;fill:none;stroke:#000000;stroke-width:1.52751458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
272 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
279 y=
"163.36218">Vala code is
</tspan><tspan
283 id=
"tspan3435">parsed in an AST
</tspan></text>
286 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
293 y=
"163.36218">AST is transformed,
</tspan><tspan
297 id=
"tspan2218">e.g. symbols resolved
</tspan></text>
300 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
307 id=
"tspan3457">A tree is built,
</tspan><tspan
311 id=
"tspan3459">representing
</tspan><tspan
315 id=
"tspan3463">the C code.
</tspan></text>
318 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
325 y=
"164.36218">The tree is
</tspan><tspan
329 id=
"tspan3469">converted
</tspan><tspan
333 id=
"tspan3471">into real C
</tspan><tspan
337 id=
"tspan3473">code.
</tspan></text>
340 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
347 y=
"273.36218">gcc is used
</tspan><tspan
351 id=
"tspan3479">to build the
</tspan><tspan
355 id=
"tspan3481">final program
</tspan><tspan
359 id=
"tspan3483">or library.
</tspan></text>
362 style=
"font-size:12px;font-style:italic;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
369 y=
"237.36218">User supplies
</tspan><tspan
373 id=
"tspan3489">Vala code and
</tspan><tspan
377 id=
"tspan3493">sometimes plain
</tspan><tspan
381 id=
"tspan3497">C code.
</tspan></text>