Difference: FRCVLabMLSA_description (1 vs. 2)

Revision 22016-07-27 - BrunoVieiro

Line: 1 to 1
 
META TOPICPARENT name="FRCVLabMLSA"
<meta name="robots" content="noindex" />
Changed:
<
<

Process Description

>
>

How does it work?

 
Changed:
<
<
process_diagram.png
>
>
process_diagram.png
  The process starts with C and Python source code from which separate ASTs (Abstract Syntax Tree) are dumped using Clang-Check (for C files)

C_AST.jpeg

Changed:
<
<
Figure 2: Portion of a C AST file
>
>
Figure 1: Portion of a C AST file
  and the AST module (for Python files).

PY_AST.jpeg

Changed:
<
<
Figure 3: Portion of a Python AST file
>
>
Figure 2: Portion of a Python AST file
  The AST files have very different structures for C and Python, but the parsers are designed to handle each kind of AST differently. Those parsers filter the AST files detecting and recording function calls and their arguments. Initially, the program is capable of detecting literals and variables as arguments. Reaching Definition Analysis will be developed in the future in order to handle statically assigned variables as arguments to functions. The current version of the program handles part of the Python.h interface between C and Python. It only analyzes “PyRun_SimpleFile” calls. Other mechanisms for calling Python from C will also be implemented in the future.
Line: 28 to 28
 callgraph.png
Changed:
<
<
Figure 4: Example of a multilingual call graph
>
>
Figure 3: Example of a multilingual call graph
 

Permissions

Revision 12016-07-27 - DamianLyons

Line: 1 to 1
Added:
>
>
META TOPICPARENT name="FRCVLabMLSA"
<meta name="robots" content="noindex" />

Process Description

process_diagram.png

The process starts with C and Python source code from which separate ASTs (Abstract Syntax Tree) are dumped using Clang-Check (for C files)

C_AST.jpeg

Figure 2: Portion of a C AST file

and the AST module (for Python files).

PY_AST.jpeg

Figure 3: Portion of a Python AST file

The AST files have very different structures for C and Python, but the parsers are designed to handle each kind of AST differently. Those parsers filter the AST files detecting and recording function calls and their arguments. Initially, the program is capable of detecting literals and variables as arguments. Reaching Definition Analysis will be developed in the future in order to handle statically assigned variables as arguments to functions. The current version of the program handles part of the Python.h interface between C and Python. It only analyzes “PyRun_SimpleFile” calls. Other mechanisms for calling Python from C will also be implemented in the future.

When a call to “PyRun_SimpleFile” is found, its argument (name of the python file) is considered a function call and the executable portion of that python file is represented as the main function in C. That creates the connection between the C and the Python files, which allows the subsequent programs to build the call graph.

“CombineCSV.py” combines all individual csv files from the list of source files into one. This file is then used as input to “GenerateDot.py”. This program translates the csv file to a dot file, which represents the csv file as a graph. The Dot program builds the final graph and saves it as a PDF file. Circular nodes represent C functions and Rectangular nodes represent Python functions.

callgraph.png

Figure 4: Example of a multilingual call graph

Permissions

  • Persons/group who can view/change the page:
  • Set ALLOWTOPICCHANGE = FRCVRoboticsGroup

-- (c) Fordham University Robotics and Computer Visio

META FILEATTACHMENT attachment="callgraph.png" attr="" comment="" date="1469630804" name="callgraph.png" path="callgraph.png" size="40117" user="DamianLyons" version="1"
META FILEATTACHMENT attachment="C_AST.jpeg" attr="" comment="" date="1469630804" name="C_AST.jpeg" path="C_AST.jpeg" size="36767" user="DamianLyons" version="1"
META FILEATTACHMENT attachment="PY_AST.jpeg" attr="" comment="" date="1469630804" name="PY_AST.jpeg" path="PY_AST.jpeg" size="19537" user="DamianLyons" version="1"
META FILEATTACHMENT attachment="process_diagram.png" attr="" comment="" date="1469631588" name="process_diagram.png" path="process_diagram.png" size="44954" user="DamianLyons" version="1"
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback