Tree-sitter-vhdl

A VHDL parser for syntax highlighting.
References
Screenshots
Neovim, using nvim-treesitter and a Catppuccin colour scheme:

Other colour schemes
Neovim, using nvim-treesitter and a Tokyo Night colour scheme:

Neovim, using nvim-treesitter and a One Dark colour scheme:

If you'd like your favourite colour scheme to be listed here,
issue a PR with a new screenshot of the screenshot example
in the same style and composition as the other screenshots.
History
This version started off as a fork of alemuller/tree-sitter-vhdl,
but ended up as a complete rewrite of the parser and highlighting scripts. It
has very little in common with the original.
Limitations
This parser uses a simplified grammar, because the full formal grammar in the
VHDL standard is highly ambiguous without compiling the entire code-base into
a symbol table. In many cases, invalid syntax will parse into a valid tree.
For the same reason, there might be cases where valid syntax does not map
to a valid tree. In this case, please log a bug report.
In addition, the following features are not implemented, and are considered
outside the scope of this project.
- IEEE Property Specification Language
- VHDL Procedural Interface
Neovim Setup Process
This parser has been merged into the official nvim-treesitter,
so it should work out of the box after adding it to the list of languages to
install.
You can also use tree-sitter-manager instead, in which case it is recommended
to configure as follows:
require("tree-sitter-manager").setup({
ensure_installed = {
-- ...
'vhdl',
-- ...
},
languages = {
vhdl = {
install_info = {
url = 'https://github.com/jpt13653903/tree-sitter-vhdl',
revision = 'master',
queries = 'queries/Neovim',
use_repo_queries = true,
},
},
},
})
Helix Setup Process
This parser has been merged into the official Helix repo,
so it should work out of the box.
Building
- Follow the instructions here to setup your development environment.
- Run
npm install --save-dev tree-sitter-cli
- Add
node_modules/.bin to your environment path
- From within the
autogen directory, run py gen_token_trie.py
(only required after updating the token lists within autogen)
- Run
tree-sitter generate
- Run
tree-sitter test
Contributing
Contributions are welcome. Read Contributing.md for more information.