Skip to content

Summit-AST translates parsed Apex source code into an abstract syntax tree

License

Notifications You must be signed in to change notification settings

aaronhurst-google/summit-ast

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summit-AST

The Summit-AST library defines an abstract syntax tree (AST) data structure to represent Salesforce Apex source code, and it provides the translation of a parse tree into its AST representation.

This is not an official Google product.

Dependencies

This is built on top of the apex-parser Apex parser, which is a compiled ANTLR4 grammar.

All dependencies are downloaded and managed through the build system.

Build

This software is built using bazel.

$ bazel build ...
$ bazel test ...

It is tested and working with the version listed in the .bazelversion file.

If you use Bazelisk to use Bazel, it will download the correct version. Bazelisk can be installed (e.g. for amd64) via:

$ wget https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
$ chmod a+x bazelisk-linux-amd64
$ ln -s bazelisk-linux-amd64 bazel

Running

The primary output is an in-memory AST data structure. The library is intended to be integrated into other development tools.

There is a small SummitTool demonstration executable, which parses Apex source files, builds the AST, and prints basic information. It can be executed by running:

$ bazel run :SummitTool -- [-json] [files | directories ...]

Any directories will be recursively walked. The tool attempts to compile any files with the extension .cls or .trigger.

If the optional argument -json is given, then the AST is serialized additionally as json into a file. The file name will be the original Apex source file with the extension .json added.

About

Summit-AST translates parsed Apex source code into an abstract syntax tree

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 96.2%
  • Starlark 3.8%