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.
If you would like to use the develop
branch instead (because it contains
the latest features that might not have been merged upstream yet), configure
your treesitter.lua
(or equivalent) as follows:
local parser_config = require('nvim-treesitter.parsers').get_parser_configs()
parser_config.vhdl = {
install_info = {
url = "https://github.com/jpt13653903/tree-sitter-vhdl.git",
files = { 'src/parser.c', 'src/scanner.c' },
branch = 'develop',
generate_requires_npm = false,
requires_generate_from_grammar = false,
},
filetype = 'vhdl',
}
local treesitter = require('nvim-treesitter.configs')
treesitter.setup {
ensure_installed = {
'vhdl',
},
}
Then copy the contents of the queries/Neovim
folder to your after/queries/vhdl
configuration folder, typically ~/.config/nvim/after/queries/vhdl
on Linux
and ~/AppData/Local/nvim/after/queries/vhdl
on Windows.
Finally, run :TSUpdate
.
If this does not work, change the url
to a local clone of this repo instead.
The nvim-treesitter installer doesn't always follow the override if the url
points to an online repository.
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
- Run
tree-sitter generate
- Run
tree-sitter test
Contributing
Contributions are welcome. Read Contributing.md for more information.