{"id":13517064,"url":"https://github.com/chadbrewbaker/awesome-ast","last_synced_at":"2025-03-31T07:30:57.611Z","repository":{"id":141316011,"uuid":"78762521","full_name":"chadbrewbaker/awesome-ast","owner":"chadbrewbaker","description":"Tools for AST hacking","archived":false,"fork":false,"pushed_at":"2019-02-15T17:51:07.000Z","size":5,"stargazers_count":29,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-05-19T19:02:02.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chadbrewbaker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-01-12T16:07:02.000Z","updated_at":"2024-02-15T22:52:46.000Z","dependencies_parsed_at":"2024-01-13T05:06:00.132Z","dependency_job_id":"8a4f0153-fee2-4a3f-86df-6ec6abd0a66b","html_url":"https://github.com/chadbrewbaker/awesome-ast","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbrewbaker%2Fawesome-ast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbrewbaker%2Fawesome-ast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbrewbaker%2Fawesome-ast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbrewbaker%2Fawesome-ast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chadbrewbaker","download_url":"https://codeload.github.com/chadbrewbaker/awesome-ast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246350952,"owners_count":20763230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T05:01:29.224Z","updated_at":"2025-03-31T07:30:57.591Z","avatar_url":"https://github.com/chadbrewbaker.png","language":null,"readme":"# Awesome AST#\nA curated list of tools for Abstract Syntax Tree processing.\n\n\n\n## Contents ##\n\n\n\n\n#Specific Languages\n* [Bash](#bash)\n* [C/C++](#c/c++)\n* [CSharp](#csharp)\n* [CSV](#csv)\n* [English](*english)\n* [Go](#go)\n* [Generic](#generic)\n* [Java](#java)\n* [Javascript](#javascript)\n* [JSON](#json)\n* [PHP](#php)\n* [Python](#python)\n* [Haskell](#haskell)\n\u003c!--- * [R](#) --\u003e\n* [Scala](#scala)\n* [SMT-LIB](#smt-lib)\n* [SQL](#sql)\n* [XML/HTML](#xml/html)\n\n\n## Bash ##\nhttps://github.com/idank/bashlex\n## C/C++ ##\nhttp://clang.llvm.org/docs/LibASTMatchersReference.html?\nhttp://stackoverflow.com/questions/18560019/how-to-view-clang-ast\n~~~bash\nclang -emit-ast hello.c  #binary output to hello.ast\nclang-check -ast-dump hello.c\n~~~\n[Clang AST Matchers](http://clang.llvm.org/docs/LibASTMatchersReference.html)\n\n\n\n## CSharp ##\n[Roslyn HOWTO](http://blog.ptsecurity.com/2016/06/theory-and-practice-of-source-code.html)\n\n## CSV ##\n[Papa Parse](http://papaparse.co)m\n\n## English ##\n[write-good (javascript)](https://github.com/btford/write-good)\n\n[NLTK (Python)](http://www.nltk.org)\n\n## Excel ##\n\n## Haskell ##\n[haskell-tools-ast](https://hackage.haskell.org/package/haskell-tools-ast)\n[haskell-src-exts](https://hackage.haskell.org/package/haskell-src-exts-1.18.0)\n[GHC API](https://ghc.haskell.org/trac/ghc/wiki/GhcApi)\n[GHC tutorial](http://www.stephendiehl.com/posts/ghc_02.html)\n[ghc-dump-tree](https://github.com/edsko/ghc-dump-tree)\n[ghc-viz](http://felsin9.de/nnis/ghc-vis/#basic-usage)\n[prof2dot](https://hackage.haskell.org/package/prof2dot)\n[Glance](https://github.com/rgleichman/glance)\n\n## Generic ##\n[Atomist rug](https://github.com/atomist/rug)\n[ANTLR](http://www.antlr.org)\n[ANTLR command line](https://theantlrguy.atlassian.net/wiki/pages/viewpage.action?pageId=2687267)\n\n[Bison](http://savannah.gnu.org/projects/bison/)\n[Flex](https://www.gnu.org/software/flex/)\n\n\n[Nom Parser Combinator](https://github.com/Geal/nom)\n\n[Treetop](https://github.com/nathansobo/treetop/tree/master)\n[Tree Sitter](https://tree-sitter.github.io/tree-sitter/)\n[Tree Sitter Talk](https://www.youtube.com/watch?v=0CGzC_iss-8)\n\n\n\n[JetBrainst GrammarKit](https://plugins.jetbrains.com/idea/plugin/6606-grammar-kit)\n\n[Gramtest BNF generator](https://github.com/codelion/gramtest)\n[Rubular Ruby Regexp](http://rubular.com)\n[Mr Data Converter CSV,JSON,Excel,..](https://shancarter.github.io/mr-data-converter/)\n\n[Hammer secure parser generator](https://github.com/UpstandingHackers/hammer)\n[Parsing Expression Grammar Template Library](https://github.com/taocpp/PEGTL)\n\n## Go ##\n[ast](https://golang.org/pkg/go/ast/)\n\n\n\n\n\n\n## Java ##\n[javaparser](https://github.com/javaparser/javaparser)\n[Apache Commons-lang](https://commons.apache.org/proper/commons-lang/)\n\n[JetBrains JDKLangTools](https://github.com/JetBrains/jdk8u_langtools/blob/master/src/share/sample/javac/processing/src/CheckNamesProcessor.java)\n[JetBrains uast](https://github.com/JetBrains/uast)\n[JetBrains IntelliJ](https://github.com/JetBrains/intellij-community)\n[JetBrains IntelliJ Plugin HOWTO](http://www.jetbrains.org/display/IJOS/Writing+Plug-ins)\n\n\n\n\n## Javascript ##\n[ESPrima](http://esprima.org)\n[uglifyjs parser](http://lisperator.net/uglifyjs/parser)\n[Babel](https://github.com/babel/babel)\n[Recast](https://github.com/benjamn/recast)\n\n## JSON ##\n[ast-match](https://www.npmjs.com/package/ast-match)\n[Rapid JSON](https://github.com/Tencent/rapidjson)\n[sajson](https://github.com/chadaustin/sajson)\n\n\n\n## Python  ##\n[ast](https://docs.python.org/2/library/ast.html)\n[python-skeletons](https://github.com/JetBrains/python-skeletons)\n\n## Ruby ##\n~~~bash\nruby --dump parsetree foo.rb\nruby --dump insns foo.rb\n~~~\n~~~ruby\nRubyVM::InstructionSequence\n~~~\n[ruby\\_parser](https://github.com/seattlerb/ruby_parser)\n[sorerer](https://github.com/jimweirich/sorcerer)\n\n\n## Scala ##\n[scalac](http://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/compiler/scala/tools/nsc/ast/parser)\n[Scala AST reference](https://github.com/wolfe-pack/wolfe/wiki/Scala-AST-reference)\n\n## SMT-LIB ##\n[smt-lib (Haskell)](http://hackage.haskell.org/package/smt-lib)\n[sbv (Haskell)](http://leventerkok.github.io/sbv/)\n[smt-kit](http://ahorn.github.io/smt-kit/)\n[nsolv](https://github.com/delcypher/nsolv)\n[ddsmt](http://fmv.jku.at/ddsmt/)\n\n## SQL ##\nhttps://github.com/codeschool/sqlite-parser\nhttps://github.com/lfittl/pg_query\n\n\n\n## XML/HTML ##\nnokogiri\nxslt\n\n## Talks ##\n[Polyhedral Analysis](http://www.pollylabs.org/education.html)\n[Hiking Through The Javascript Forest](https://channel9.msdn.com/Blogs/seattlejs/2016-01-14-02)\n[The Hidden Benefits of Static Analysis](https://www.youtube.com/watch?v=3ZqTvexCtZM)\n[ASTs for Beginners](https://www.youtube.com/watch?v=CFQBHy8RCpg)\n","funding_links":[],"categories":["Technical","Other Lists"],"sub_categories":["awesome-*","TeX Lists"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbrewbaker%2Fawesome-ast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchadbrewbaker%2Fawesome-ast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbrewbaker%2Fawesome-ast/lists"}