diff --git a/README.org b/README.org index 02d07d9..5d97112 100644 --- a/README.org +++ b/README.org @@ -29,13 +29,13 @@ # Generate SVG cd ~/w/codeql-cpp/queries/printast.dot/cpp - dot -Tsvg < ./print-ast.dot > ./printast-ast.svg - open -a safari ./printast-ast.svg + dot -Tsvg < ./print-ast.dot > ./print-ast.svg + open -a safari ./print-ast.svg #+END_SRC #+CAPTION: AST graph from dot #+NAME: fig:graph-ast-1 - [[./queries/printast.dot/cpp/printast-ast.svg]] + [[./queries/printast.dot/cpp/print-ast.svg]] diff --git a/queries/printast.dot/cpp/print-ast.dot b/queries/printast.dot/cpp/print-ast.dot new file mode 100644 index 0000000..19d87f0 --- /dev/null +++ b/queries/printast.dot/cpp/print-ast.dot @@ -0,0 +1,24 @@ +digraph { + compound=true; + 0[]; + 1[label="[Parameter] argc"; ]; + 2[label="[Parameter] argv"; ]; + 3[label="[ExprStmt] ExprStmt"; ]; + 4[label="[FormattingFunctionCall,FunctionCall] call to printf"; ]; + 5[label="hello world\n"; ]; + 6[label="[ArrayToPointerConversion] array to pointer conversion"; ]; + 7[label="[ReturnStmt] return ..."; ]; + 8[label="[Literal] 0"; ]; + 9[label="[BlockStmt] { ... }"; ]; + 10[label="[TopLevelFunction] int main(int, char**)"; ]; + 0 -> 1[label="getParameter(0)"; ]; + 10 -> 0[label=""; ]; + 3 -> 4[label="getExpr()"; ]; + 4 -> 5[label="getArgument(0)"; ]; + 7 -> 8[label="getExpr()"; ]; + 9 -> 3[label="getStmt(0)"; ]; + 0 -> 2[label="getParameter(1)"; ]; + 10 -> 9[label="getEntryPoint()"; ]; + 4 -> 6[label="getArgument(0).getFullyConverted()"; ]; + 9 -> 7[label="getStmt(1)"; ]; +} diff --git a/queries/printast.dot/cpp/print-ast.svg b/queries/printast.dot/cpp/print-ast.svg new file mode 100644 index 0000000..dd06831 --- /dev/null +++ b/queries/printast.dot/cpp/print-ast.svg @@ -0,0 +1,148 @@ + + + + + + + + + +0 + +0 + + + +1 + +[Parameter] argc + + + +0->1 + + +getParameter(0) + + + +2 + +[Parameter] argv + + + +0->2 + + +getParameter(1) + + + +3 + +[ExprStmt] ExprStmt + + + +4 + +[FormattingFunctionCall,FunctionCall] call to printf + + + +3->4 + + +getExpr() + + + +5 + +hello world + + + +4->5 + + +getArgument(0) + + + +6 + +[ArrayToPointerConversion] array to pointer conversion + + + +4->6 + + +getArgument(0).getFullyConverted() + + + +7 + +[ReturnStmt] return ... + + + +8 + +[Literal] 0 + + + +7->8 + + +getExpr() + + + +9 + +[BlockStmt] { ... } + + + +9->3 + + +getStmt(0) + + + +9->7 + + +getStmt(1) + + + +10 + +[TopLevelFunction] int main(int, char**) + + + +10->0 + + +<params> + + + +10->9 + + +getEntryPoint() + + +