to_xml

Transform C++ code into XML

Description:

This transformation generates a XML tree where nodes relate to C++ source code tokens.

For example, the following file (file.cpp):

#include <iostream>

int main()
{
    std::cout << "Hello World\n";
}

will be transformed into new file named file.cpp.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<cpp-source file-name="test.cpp">
    <token name="pp_hheader" line="1" column="0">#include &lt;iostream&gt;</token>
    <token name="newline" line="1" column="19">![CDATA[
]]</token>
    <token name="newline" line="2" column="0">![CDATA[
]]</token>
    <token name="int" line="3" column="0">int</token>
    <token name="space" line="3" column="3"> </token>
    <token name="identifier" line="3" column="4">main</token>
    <token name="leftparen" line="3" column="8">(</token>
    <token name="rightparen" line="3" column="9">)</token>
    <token name="newline" line="3" column="10">![CDATA[
]]</token>
    <token name="leftbrace" line="4" column="0">{</token>
    <token name="newline" line="4" column="1">![CDATA[
]]</token>
    <token name="space" line="5" column="0">    </token>
    <token name="identifier" line="5" column="4">std</token>
    <token name="colon_colon" line="5" column="7">::</token>
    <token name="identifier" line="5" column="9">cout</token>
    <token name="space" line="5" column="13"> </token>
    <token name="shiftleft" line="5" column="14">&lt;&lt;</token>
    <token name="space" line="5" column="16"> </token>
    <token name="stringlit" line="5" column="17">"Hello World\n"</token>
    <token name="semicolon" line="5" column="32">;</token>
    <token name="newline" line="5" column="33">![CDATA[
]]</token>
    <token name="rightbrace" line="6" column="0">}</token>
    <token name="newline" line="6" column="1">![CDATA[
]]</token>
    <token name="eof" line="7" column="0"></token>
</cpp-source>

Note: If the source code does not use line splicing, then concatenation of all XML node values is equivalent to the original C++ code.

Transformation index