Created
March 11, 2022 09:31
-
-
Save andijcr/5605451dce3cc385951648ab0c26dfd0 to your computer and use it in GitHub Desktop.
to view the ast for this snippet: clang++ -Xclang -ast-dump -fsyntax-only hello.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|-TypedefDecl 0x154f310 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128' | |
| `-BuiltinType 0x154efb0 '__int128' | |
|-TypedefDecl 0x154f380 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128' | |
| `-BuiltinType 0x154efd0 'unsigned __int128' | |
|-TypedefDecl 0x154f6f8 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag' | |
| `-RecordType 0x154f470 '__NSConstantString_tag' | |
| `-CXXRecord 0x154f3d8 '__NSConstantString_tag' | |
|-TypedefDecl 0x154f790 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *' | |
| `-PointerType 0x154f750 'char *' | |
| `-BuiltinType 0x154eab0 'char' | |
|-TypedefDecl 0x158fec8 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag [1]' | |
| `-ConstantArrayType 0x158fe70 '__va_list_tag [1]' 1 | |
| `-RecordType 0x154f880 '__va_list_tag' | |
| `-CXXRecord 0x154f7e8 '__va_list_tag' | |
|-FunctionDecl 0x1590000 <hello.cpp:2:1, col:23> col:5 used puts 'int (const char *)' | |
| `-ParmVarDecl 0x158ff38 <col:10, col:22> col:22 s 'const char *' | |
`-FunctionDecl 0x1590290 <line:4:1, line:10:1> line:4:5 main 'int (int, char **)' | |
|-ParmVarDecl 0x1590108 <col:10, col:14> col:14 used argc 'int' | |
|-ParmVarDecl 0x15901b0 <col:20, col:27> col:27 used argv 'char **' | |
`-CompoundStmt 0x1590960 <col:32, line:10:1> | |
|-CallExpr 0x1590490 <line:5:2, col:14> 'int' | |
| |-ImplicitCastExpr 0x1590478 <col:2> 'int (*)(const char *)' <FunctionToPointerDecay> | |
| | `-DeclRefExpr 0x1590428 <col:2> 'int (const char *)' lvalue Function 0x1590000 'puts' 'int (const char *)' | |
| `-ImplicitCastExpr 0x15904b8 <col:7> 'const char *' <ArrayToPointerDecay> | |
| `-StringLiteral 0x1590408 <col:7> 'const char [6]' lvalue "hello" | |
|-ForStmt 0x15908f8 <line:6:2, line:8:2> | |
| |-DeclStmt 0x1590698 <line:6:6, col:14> | |
| | `-VarDecl 0x1590530 <col:6, col:13> col:11 used i 'int':'int' cinit | |
| | `-IntegerLiteral 0x1590598 <col:13> 'int' 0 | |
| |-<<<NULL>>> | |
| |-BinaryOperator 0x1590720 <col:16, col:18> 'bool' '<' | |
| | |-ImplicitCastExpr 0x15906f0 <col:16> 'int':'int' <LValueToRValue> | |
| | | `-DeclRefExpr 0x15906b0 <col:16> 'int':'int' lvalue Var 0x1590530 'i' 'int':'int' | |
| | `-ImplicitCastExpr 0x1590708 <col:18> 'int' <LValueToRValue> | |
| | `-DeclRefExpr 0x15906d0 <col:18> 'int' lvalue ParmVar 0x1590108 'argc' 'int' | |
| |-UnaryOperator 0x1590760 <col:24, col:26> 'int':'int' lvalue prefix '++' | |
| | `-DeclRefExpr 0x1590740 <col:26> 'int':'int' lvalue Var 0x1590530 'i' 'int':'int' | |
| `-CompoundStmt 0x15908e0 <col:28, line:8:2> | |
| `-CallExpr 0x1590888 <line:7:3, col:15> 'int' | |
| |-ImplicitCastExpr 0x1590870 <col:3> 'int (*)(const char *)' <FunctionToPointerDecay> | |
| | `-DeclRefExpr 0x1590850 <col:3> 'int (const char *)' lvalue Function 0x1590000 'puts' 'int (const char *)' | |
| `-ImplicitCastExpr 0x15908c8 <col:8, col:14> 'const char *' <NoOp> | |
| `-ImplicitCastExpr 0x15908b0 <col:8, col:14> 'char *' <LValueToRValue> | |
| `-ArraySubscriptExpr 0x1590830 <col:8, col:14> 'char *' lvalue | |
| |-ImplicitCastExpr 0x1590800 <col:8> 'char **' <LValueToRValue> | |
| | `-DeclRefExpr 0x15907c0 <col:8> 'char **' lvalue ParmVar 0x15901b0 'argv' 'char **' | |
| `-ImplicitCastExpr 0x1590818 <col:13> 'int':'int' <LValueToRValue> | |
| `-DeclRefExpr 0x15907e0 <col:13> 'int':'int' lvalue Var 0x1590530 'i' 'int':'int' | |
`-ReturnStmt 0x1590950 <line:9:2, col:9> | |
`-IntegerLiteral 0x1590930 <col:9> 'int' 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<pre><font color="#12488B">|-</font><font color="#26A269"><b>TypedefDecl</b></font><font color="#A2734C"> 0x154f310</font> <<font color="#A2734C"><invalid sloc></font>> <font color="#A2734C"><invalid sloc></font> implicit<font color="#2AA1B3"><b> __int128_t</b></font> <font color="#26A269">'__int128'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">BuiltinType</font><font color="#A2734C"> 0x154efb0</font> <font color="#26A269">'__int128'</font> | |
<font color="#12488B">|-</font><font color="#26A269"><b>TypedefDecl</b></font><font color="#A2734C"> 0x154f380</font> <<font color="#A2734C"><invalid sloc></font>> <font color="#A2734C"><invalid sloc></font> implicit<font color="#2AA1B3"><b> __uint128_t</b></font> <font color="#26A269">'unsigned __int128'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">BuiltinType</font><font color="#A2734C"> 0x154efd0</font> <font color="#26A269">'unsigned __int128'</font> | |
<font color="#12488B">|-</font><font color="#26A269"><b>TypedefDecl</b></font><font color="#A2734C"> 0x154f6f8</font> <<font color="#A2734C"><invalid sloc></font>> <font color="#A2734C"><invalid sloc></font> implicit<font color="#2AA1B3"><b> __NSConstantString</b></font> <font color="#26A269">'__NSConstantString_tag'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">RecordType</font><font color="#A2734C"> 0x154f470</font> <font color="#26A269">'__NSConstantString_tag'</font> | |
<font color="#12488B">| `-</font><font color="#26A269"><b>CXXRecord</b></font><font color="#A2734C"> 0x154f3d8</font><font color="#2AA1B3"><b> '__NSConstantString_tag'</b></font> | |
<font color="#12488B">|-</font><font color="#26A269"><b>TypedefDecl</b></font><font color="#A2734C"> 0x154f790</font> <<font color="#A2734C"><invalid sloc></font>> <font color="#A2734C"><invalid sloc></font> implicit<font color="#2AA1B3"><b> __builtin_ms_va_list</b></font> <font color="#26A269">'char *'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">PointerType</font><font color="#A2734C"> 0x154f750</font> <font color="#26A269">'char *'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">BuiltinType</font><font color="#A2734C"> 0x154eab0</font> <font color="#26A269">'char'</font> | |
<font color="#12488B">|-</font><font color="#26A269"><b>TypedefDecl</b></font><font color="#A2734C"> 0x158fec8</font> <<font color="#A2734C"><invalid sloc></font>> <font color="#A2734C"><invalid sloc></font> implicit<font color="#2AA1B3"><b> __builtin_va_list</b></font> <font color="#26A269">'__va_list_tag [1]'</font> | |
<font color="#12488B">| `-</font><font color="#26A269">ConstantArrayType</font><font color="#A2734C"> 0x158fe70</font> <font color="#26A269">'__va_list_tag [1]'</font> 1 | |
<font color="#12488B">| `-</font><font color="#26A269">RecordType</font><font color="#A2734C"> 0x154f880</font> <font color="#26A269">'__va_list_tag'</font> | |
<font color="#12488B">| `-</font><font color="#26A269"><b>CXXRecord</b></font><font color="#A2734C"> 0x154f7e8</font><font color="#2AA1B3"><b> '__va_list_tag'</b></font> | |
<font color="#12488B">|-</font><font color="#26A269"><b>FunctionDecl</b></font><font color="#A2734C"> 0x1590000</font> <<font color="#A2734C">hello.cpp:2:1</font>, <font color="#A2734C">col:23</font>> <font color="#A2734C">col:5</font> used<font color="#2AA1B3"><b> puts</b></font> <font color="#26A269">'int (const char *)'</font> | |
<font color="#12488B">| `-</font><font color="#26A269"><b>ParmVarDecl</b></font><font color="#A2734C"> 0x158ff38</font> <<font color="#A2734C">col:10</font>, <font color="#A2734C">col:22</font>> <font color="#A2734C">col:22</font><font color="#2AA1B3"><b> s</b></font> <font color="#26A269">'const char *'</font> | |
<font color="#12488B">`-</font><font color="#26A269"><b>FunctionDecl</b></font><font color="#A2734C"> 0x1590290</font> <<font color="#A2734C">line:4:1</font>, <font color="#A2734C">line:10:1</font>> <font color="#A2734C">line:4:5</font><font color="#2AA1B3"><b> main</b></font> <font color="#26A269">'int (int, char **)'</font> | |
<font color="#12488B"> |-</font><font color="#26A269"><b>ParmVarDecl</b></font><font color="#A2734C"> 0x1590108</font> <<font color="#A2734C">col:10</font>, <font color="#A2734C">col:14</font>> <font color="#A2734C">col:14</font> used<font color="#2AA1B3"><b> argc</b></font> <font color="#26A269">'int'</font> | |
<font color="#12488B"> |-</font><font color="#26A269"><b>ParmVarDecl</b></font><font color="#A2734C"> 0x15901b0</font> <<font color="#A2734C">col:20</font>, <font color="#A2734C">col:27</font>> <font color="#A2734C">col:27</font> used<font color="#2AA1B3"><b> argv</b></font> <font color="#26A269">'char **'</font> | |
<font color="#12488B"> `-</font><font color="#A347BA"><b>CompoundStmt</b></font><font color="#A2734C"> 0x1590960</font> <<font color="#A2734C">col:32</font>, <font color="#A2734C">line:10:1</font>> | |
<font color="#12488B"> |-</font><font color="#A347BA"><b>CallExpr</b></font><font color="#A2734C"> 0x1590490</font> <<font color="#A2734C">line:5:2</font>, <font color="#A2734C">col:14</font>> <font color="#26A269">'int'</font> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x1590478</font> <<font color="#A2734C">col:2</font>> <font color="#26A269">'int (*)(const char *)'</font> <<font color="#C01C28">FunctionToPointerDecay</font>> | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x1590428</font> <<font color="#A2734C">col:2</font>> <font color="#26A269">'int (const char *)'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>Function</b></font><font color="#A2734C"> 0x1590000</font><font color="#2AA1B3"><b> 'puts'</b></font> <font color="#26A269">'int (const char *)'</font> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x15904b8</font> <<font color="#A2734C">col:7</font>> <font color="#26A269">'const char *'</font> <<font color="#C01C28">ArrayToPointerDecay</font>> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>StringLiteral</b></font><font color="#A2734C"> 0x1590408</font> <<font color="#A2734C">col:7</font>> <font color="#26A269">'const char [6]'</font><font color="#2AA1B3"> lvalue</font><font color="#2AA1B3"><b> "hello"</b></font> | |
<font color="#12488B"> |-</font><font color="#A347BA"><b>ForStmt</b></font><font color="#A2734C"> 0x15908f8</font> <<font color="#A2734C">line:6:2</font>, <font color="#A2734C">line:8:2</font>> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>DeclStmt</b></font><font color="#A2734C"> 0x1590698</font> <<font color="#A2734C">line:6:6</font>, <font color="#A2734C">col:14</font>> | |
<font color="#12488B"> | | `-</font><font color="#26A269"><b>VarDecl</b></font><font color="#A2734C"> 0x1590530</font> <<font color="#A2734C">col:6</font>, <font color="#A2734C">col:13</font>> <font color="#A2734C">col:11</font> used<font color="#2AA1B3"><b> i</b></font> <font color="#26A269">'int':'int'</font> cinit | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>IntegerLiteral</b></font><font color="#A2734C"> 0x1590598</font> <<font color="#A2734C">col:13</font>> <font color="#26A269">'int'</font><font color="#2AA1B3"><b> 0</b></font> | |
<font color="#12488B"> | |-<<<NULL>>></font> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>BinaryOperator</b></font><font color="#A2734C"> 0x1590720</font> <<font color="#A2734C">col:16</font>, <font color="#A2734C">col:18</font>> <font color="#26A269">'bool'</font> '<' | |
<font color="#12488B"> | | |-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x15906f0</font> <<font color="#A2734C">col:16</font>> <font color="#26A269">'int':'int'</font> <<font color="#C01C28">LValueToRValue</font>> | |
<font color="#12488B"> | | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x15906b0</font> <<font color="#A2734C">col:16</font>> <font color="#26A269">'int':'int'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>Var</b></font><font color="#A2734C"> 0x1590530</font><font color="#2AA1B3"><b> 'i'</b></font> <font color="#26A269">'int':'int'</font> | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x1590708</font> <<font color="#A2734C">col:18</font>> <font color="#26A269">'int'</font> <<font color="#C01C28">LValueToRValue</font>> | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x15906d0</font> <<font color="#A2734C">col:18</font>> <font color="#26A269">'int'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>ParmVar</b></font><font color="#A2734C"> 0x1590108</font><font color="#2AA1B3"><b> 'argc'</b></font> <font color="#26A269">'int'</font> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>UnaryOperator</b></font><font color="#A2734C"> 0x1590760</font> <<font color="#A2734C">col:24</font>, <font color="#A2734C">col:26</font>> <font color="#26A269">'int':'int'</font><font color="#2AA1B3"> lvalue</font> prefix '++' | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x1590740</font> <<font color="#A2734C">col:26</font>> <font color="#26A269">'int':'int'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>Var</b></font><font color="#A2734C"> 0x1590530</font><font color="#2AA1B3"><b> 'i'</b></font> <font color="#26A269">'int':'int'</font> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>CompoundStmt</b></font><font color="#A2734C"> 0x15908e0</font> <<font color="#A2734C">col:28</font>, <font color="#A2734C">line:8:2</font>> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>CallExpr</b></font><font color="#A2734C"> 0x1590888</font> <<font color="#A2734C">line:7:3</font>, <font color="#A2734C">col:15</font>> <font color="#26A269">'int'</font> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x1590870</font> <<font color="#A2734C">col:3</font>> <font color="#26A269">'int (*)(const char *)'</font> <<font color="#C01C28">FunctionToPointerDecay</font>> | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x1590850</font> <<font color="#A2734C">col:3</font>> <font color="#26A269">'int (const char *)'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>Function</b></font><font color="#A2734C"> 0x1590000</font><font color="#2AA1B3"><b> 'puts'</b></font> <font color="#26A269">'int (const char *)'</font> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x15908c8</font> <<font color="#A2734C">col:8</font>, <font color="#A2734C">col:14</font>> <font color="#26A269">'const char *'</font> <<font color="#C01C28">NoOp</font>> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x15908b0</font> <<font color="#A2734C">col:8</font>, <font color="#A2734C">col:14</font>> <font color="#26A269">'char *'</font> <<font color="#C01C28">LValueToRValue</font>> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>ArraySubscriptExpr</b></font><font color="#A2734C"> 0x1590830</font> <<font color="#A2734C">col:8</font>, <font color="#A2734C">col:14</font>> <font color="#26A269">'char *'</font><font color="#2AA1B3"> lvalue</font> | |
<font color="#12488B"> | |-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x1590800</font> <<font color="#A2734C">col:8</font>> <font color="#26A269">'char **'</font> <<font color="#C01C28">LValueToRValue</font>> | |
<font color="#12488B"> | | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x15907c0</font> <<font color="#A2734C">col:8</font>> <font color="#26A269">'char **'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>ParmVar</b></font><font color="#A2734C"> 0x15901b0</font><font color="#2AA1B3"><b> 'argv'</b></font> <font color="#26A269">'char **'</font> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>ImplicitCastExpr</b></font><font color="#A2734C"> 0x1590818</font> <<font color="#A2734C">col:13</font>> <font color="#26A269">'int':'int'</font> <<font color="#C01C28">LValueToRValue</font>> | |
<font color="#12488B"> | `-</font><font color="#A347BA"><b>DeclRefExpr</b></font><font color="#A2734C"> 0x15907e0</font> <<font color="#A2734C">col:13</font>> <font color="#26A269">'int':'int'</font><font color="#2AA1B3"> lvalue</font> <font color="#26A269"><b>Var</b></font><font color="#A2734C"> 0x1590530</font><font color="#2AA1B3"><b> 'i'</b></font> <font color="#26A269">'int':'int'</font> | |
<font color="#12488B"> `-</font><font color="#A347BA"><b>ReturnStmt</b></font><font color="#A2734C"> 0x1590950</font> <<font color="#A2734C">line:9:2</font>, <font color="#A2734C">col:9</font>> | |
<font color="#12488B"> `-</font><font color="#A347BA"><b>IntegerLiteral</b></font><font color="#A2734C"> 0x1590930</font> <<font color="#A2734C">col:9</font>> <font color="#26A269">'int'</font><font color="#2AA1B3"><b> 0</b></font> | |
</pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int puts(const char *s); | |
int main(int argc, char** argv){ | |
puts("hello"); | |
for(auto i=0; i<argc; ++i){ | |
puts(argv[i]); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment