A Zeek grammar for tree-sitter.
This grammar parses scripts written in the Zeek scripting language.
The goal of this grammar is to facilitate tooling around Zeek
scripts. For that reason, its structure resembles Zeek's grammar but differs in
a number of ways. For example, it tracks newlines explicitly and relies more
strongly on precedence and associativity to resolve ambiguities. Like Zeek's
parser, this one currently doesn't name symbols deeply: for example, the grammar
features an expr
rule that covers any kind of expression, but the choices
aren't currently broken down into, say, addition_expr
, or_expr
, and
similars.
To use the generated parser directly (e.g. via any of tree-sitter's
language bindings),
clone this repository recursively. We maintain a separate
git repository
to track generated sources. You do not need the tree-sitter CLI
to use those sources in your tooling, but you'll likely want it
anyway to explore the parser. For example, tree-sitter parse <script>
produces the script's syntax tree, and tree-sitter highlight <script>
shows syntax-highlighted sources.
- Install tree-sitter on your machine.
- Generate the parser: run
tree-sitter generate
.
There's currently no tree-sitter test
testsuite. Instead, a test driver runs
the parser on every Zeek script in the Zeek distribution, reporting any
errors. For CI, a Github Action workflow additionally clones the Zeek tree prior
to running this test, to ensure that those Zeek scripts are available.
To release a new version update the version number in the following ecosystem-specific files:
package.json
: keyversion
package-lock.json
: updatepackage.json
and runnpm install
to update the lock file.
pyproject.toml
: keyproject.version
Cargo.toml
: keypackage.version
Once all versions are consistently updated create a version tag vX.Y.Z
and
push it. We trigger automatic publishing of releases for all tags.