{"repo":"trailofbits/pasta","free":true,"listed":false,"github":"https://github.com/trailofbits/pasta","clone":"git clone https://github.com/trailofbits/pasta.git","description":"Peter's Amazing Syntax Tree Analyzer","language":"C++","stars":137,"topics":["static-analysis","clang","llvm","ast","compiler"],"license":"Apache-2.0","category":"dev-tools","readme_excerpt":"PASTA PASTA is a C++ library that abstracts the Clang compiler toolchain, and provides detailed access to compilation artifacts using APIs that mirror those available in Clang. PASTA tries to achieve the following goals: Provide a baseline set of APIs that is relatively stable and does not require someone to actually depend directly on Clang headers/libraries, thus enabling a substantially easier distribution model. Properly manage memory for all objects provided through the API. One should not have to worry about object lifetimes when using PASTA. Provide additional information/access. Native Clang APIs do not provide detailed token information of any kind. One cannot ask for the tokens associated with an AST node, for example. PASTA attempts to resolve this, among other similar issues. Getting and Building the Code First, update aptitude and get install the baseline dependencies such is for example git , cmake , ninja and your compiler of choice (remember it needs to support C++20). It is useful to use the same compiler at every subset to avoid some name mangling problems. If you're using macOS then we recommend installing Homebrew, and ensuring that you have Python 3.9 installed, along with an up-to-date cmake and ninja . PASTA And finally to build PASTA itself. On Linux On macOS On macOS, you may need to manually specify the Clang compiler. You can't, however, just specify clang or clang++ , because then vcpkg will try to take over and produce unusual results. Therefore, ","default_branch":null,"files":null,"tree":[],"storefront":"/r/trailofbits","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/trailofbits/pasta/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}