awesome-ast icon indicating copy to clipboard operation
awesome-ast copied to clipboard

Tools for AST hacking

Awesome AST#

A curated list of tools for Abstract Syntax Tree processing.

Contents

#Specific Languages

  • Bash
  • C/C++
  • CSharp
  • CSV
  • English
  • Go
  • Generic
  • Java
  • Javascript
  • JSON
  • PHP
  • Python
  • Haskell
  • Scala
  • SMT-LIB
  • SQL
  • XML/HTML

Bash

https://github.com/idank/bashlex

C/C++

http://clang.llvm.org/docs/LibASTMatchersReference.html? http://stackoverflow.com/questions/18560019/how-to-view-clang-ast

clang -emit-ast hello.c  #binary output to hello.ast
clang-check -ast-dump hello.c

Clang AST Matchers

CSharp

Roslyn HOWTO

CSV

Papa Parsem

English

write-good (javascript)

NLTK (Python)

Excel

Haskell

haskell-tools-ast haskell-src-exts GHC API GHC tutorial ghc-dump-tree ghc-viz prof2dot Glance

Generic

Atomist rug ANTLR ANTLR command line

Bison Flex

Nom Parser Combinator

Treetop Tree Sitter Tree Sitter Talk

JetBrainst GrammarKit

Gramtest BNF generator Rubular Ruby Regexp Mr Data Converter CSV,JSON,Excel,..

Hammer secure parser generator Parsing Expression Grammar Template Library

Go

ast

Java

javaparser Apache Commons-lang

JetBrains JDKLangTools JetBrains uast JetBrains IntelliJ JetBrains IntelliJ Plugin HOWTO

Javascript

ESPrima uglifyjs parser Babel Recast

JSON

ast-match Rapid JSON sajson

Python

ast python-skeletons

Ruby

ruby --dump parsetree foo.rb
ruby --dump insns foo.rb
RubyVM::InstructionSequence

ruby_parser sorerer

Scala

scalac Scala AST reference

SMT-LIB

smt-lib (Haskell) sbv (Haskell) smt-kit nsolv ddsmt

SQL

https://github.com/codeschool/sqlite-parser https://github.com/lfittl/pg_query

XML/HTML

nokogiri xslt

Talks

Polyhedral Analysis Hiking Through The Javascript Forest The Hidden Benefits of Static Analysis ASTs for Beginners