A monorepo containing language-specific AST generation tools for the Joern code analysis platform. Each tool is self-contained with its own build system, tests, dependencies, and CI/CD workflows, and is independently versioned and released.
| Language | Directory | Parser / Backend | Status | Latest Release |
|---|---|---|---|---|
| ABAP | abap-astgen/ |
@abaplint/core | Active | |
| C# / .NET | dotnet-astgen/ |
Roslyn | Active | |
| Go | go-astgen/ |
Go standard library | Active | |
| JavaScript / TS | javascript-astgen/ |
Babel + tsc | Active | |
| Ruby | ruby-astgen/ |
parser gem |
Active | |
| Rust | rust-astgen/ |
rust-analyzer | Active | |
| Swift | swift-astgen/ |
SwiftSyntax | Active |
astgen-regression/ is a config-driven regression testing framework shared by the tools above. It clones real-world codebases at specific versions, builds the generator from base and PR branches using git worktrees, compares outputs, and produces Markdown reports. See the framework README for setup and usage.
Each language tool is self-contained with its own:
- build system and dependencies
- tests and documentation
- CI/CD workflows
- independent versioning and releases
Each tool uses prefixed tags of the form {lang}-astgen/v{version}, for example:
javascript-astgen/v3.43.0rust-astgen/v0.3.0
See the Releases page for downloadable binaries.
Via git tag (recommended)
- Update the version in the language-specific files (e.g.
package.json,Cargo.toml). - Commit the version change.
- Create and push a prefixed tag:
git tag javascript-astgen/v3.43.0 git push origin javascript-astgen/v3.43.0
- The release workflow will automatically build and publish the binaries.
Manually via GitHub Actions
To re-release or rebuild an existing tag:
- Go to the Actions tab.
- Select the language-specific release workflow (e.g. "JavaScript AST Generator Release").
- Click Run workflow, select the branch (usually
main), and confirm.
The workflow discovers the latest tag for that language and creates or updates the release with fresh binaries.
Contributions are welcome. Please open an issue or pull request on GitHub. See each tool's README for language-specific build and test instructions.
Licensed under the Apache License, Version 2.0.