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 <iostream></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"><<</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.