[cfe-commits] [PATCH] Utilize the indents in -ast-dump to draw structural information

Sean Silva silvas at purdue.edu
Thu Jan 10 20:29:08 PST 2013


This looks like a big win for readability.

`pstree` uses a backtick instead of backslash for the "diagonals" of
its tree-like printing. It might be good to follow its precedent.


-- Sean Silva

On Thu, Jan 10, 2013 at 9:42 PM, Richard Trieu <rtrieu at google.com> wrote:
> On Thu, Jan 10, 2013 at 6:35 PM, Sean Silva <silvas at purdue.edu> wrote:
>>
>> Could you please attach an example of the output? It's hard to comment
>> on the format just by looking through the narrow lens of the FileCheck
>> assertions.
>>
>> -- Sean Silva
>
>
> I can certainly provide an example.
>
> Code:
> int main(int argc, char** argv) {
>   int x = 5;
>   int y = 2;
>   return (x * y);
> }
>
> Old -ast-dump:
> (TranslationUnitDecl 0x5341640 <<invalid sloc>>
>   (TypedefDecl 0x5341b80 <<invalid sloc>> __int128_t '__int128')
>   (TypedefDecl 0x5341be0 <<invalid sloc>> __uint128_t 'unsigned __int128')
>   (TypedefDecl 0x5341fa0 <<invalid sloc>> __builtin_va_list '__va_list_tag
> [1]')
>   (FunctionDecl 0x53421a0 <simple.cc:1:1, line:5:1> main 'int (int, char
> **)'
>     (ParmVarDecl 0x5342000 <line:1:10, col:14> argc 'int')
>     (ParmVarDecl 0x53420d0 <col:20, col:27> argv 'char **')
>     (CompoundStmt 0x536e8a0 <col:33, line:5:1>
>       (DeclStmt 0x53422d8 <line:2:3, col:12>
>         (VarDecl 0x5342260 <col:3, col:11> x 'int'
>           (IntegerLiteral 0x53422b8 <col:11> 'int' 5)))
>       (DeclStmt 0x536e7a0 <line:3:3, col:12>
>         (VarDecl 0x5342300 <col:3, col:11> y 'int'
>           (IntegerLiteral 0x536e780 <col:11> 'int' 2)))
>       (ReturnStmt 0x536e880 <line:4:3, col:16>
>         (ParenExpr 0x536e860 <col:10, col:16> 'int'
>           (BinaryOperator 0x536e838 <col:11, col:15> 'int' '*'
>             (ImplicitCastExpr 0x536e808 <col:11> 'int' <LValueToRValue>
>               (DeclRefExpr 0x536e7b8 <col:11> 'int' lvalue Var 0x5342260 'x'
> 'int'))
>             (ImplicitCastExpr 0x536e820 <col:15> 'int' <LValueToRValue>
>               (DeclRefExpr 0x536e7e0 <col:15> 'int' lvalue Var 0x5342300 'y'
> 'int'))))))))
>
> New -ast-dump:
> (TranslationUnitDecl 0x6784640 <<invalid sloc>>
> |-(TypedefDecl 0x6784b80 <<invalid sloc>> __int128_t '__int128')
> |-(TypedefDecl 0x6784be0 <<invalid sloc>> __uint128_t 'unsigned __int128')
> |-(TypedefDecl 0x6784fa0 <<invalid sloc>> __builtin_va_list '__va_list_tag
> [1]')
> \-(FunctionDecl 0x67851a0 <simple.cc:1:1, line:5:1> main 'int (int, char
> **)'
>   |-(ParmVarDecl 0x6785000 <line:1:10, col:14> argc 'int')
>   |-(ParmVarDecl 0x67850d0 <col:20, col:27> argv 'char **')
>   \-(CompoundStmt 0x67b18a0 <col:33, line:5:1>
>     |-(DeclStmt 0x67852d8 <line:2:3, col:12>
>     | \-(VarDecl 0x6785260 <col:3, col:11> x 'int'
>     |   \-(IntegerLiteral 0x67852b8 <col:11> 'int' 5)))
>     |-(DeclStmt 0x67b17a0 <line:3:3, col:12>
>     | \-(VarDecl 0x6785300 <col:3, col:11> y 'int'
>     |   \-(IntegerLiteral 0x67b1780 <col:11> 'int' 2)))
>     \-(ReturnStmt 0x67b1880 <line:4:3, col:16>
>       \-(ParenExpr 0x67b1860 <col:10, col:16> 'int'
>         \-(BinaryOperator 0x67b1838 <col:11, col:15> 'int' '*'
>           |-(ImplicitCastExpr 0x67b1808 <col:11> 'int' <LValueToRValue>
>           | \-(DeclRefExpr 0x67b17b8 <col:11> 'int' lvalue Var 0x6785260 'x'
> 'int'))
>           \-(ImplicitCastExpr 0x67b1820 <col:15> 'int' <LValueToRValue>
>             \-(DeclRefExpr 0x67b17e0 <col:15> 'int' lvalue Var 0x6785300 'y'
> 'int'))))))))
>
>



More information about the cfe-commits mailing list