go2sh / vhdl-ls

VHDL Langauge Server
0 stars 0 forks source link

VHDL Language Server #1

Open kraigher opened 5 years ago

kraigher commented 5 years ago

I found your project and just wanted to let you know I have also started a language server project for VHDL written in Rust (https://github.com/kraigher/rust_hdl/).

Just out of curiosity what parser are you using? Is it open source? The repository only contains a CPP file for the language server main function and the parser nowhere to be found.

go2sh commented 5 years ago

Hi @kraigher , i started writing my own parser in c++ vc But it is far from working. I initially wanted to use ghdl, but I found it hard to get in and receive the required structure and I wanted to add some error recovery.

Long story short: I have nothing working besides a lsp lib written in c++ and some working parser code with a lot of infrastructure and a vscode extension. Also not every thing is published on github.

It would be nice to have some kind combined effort for an vhdl language server, which is open source. I know there is some close source tool called "vhdl-tool" or some thing like this. I know Rust is the new kid on the block, but it found it some what impractical for writing a language analysis tool, but I never came further, than a hello world in Rust, so no harms. Furthermore, I wanted the code to be portable and easy to use with other languages, e.g. python.

VC was planned as a swiss army knife like clang for c and c++. But with a clear focus on language analysis and tooling and not on simulation or compilation.

Also the development slowed down a lot currently, since I have to write a lot of VHDL and vunit ( ;-) ) test on work and I have currently little to no time extra time to spend on this. Besides the need of such a tool.

kraigher commented 5 years ago

Looks like we share a common goal for the projects. I would recommend you to take a second look at Rust, It is a very nice language and I do not see myself going back to C++ again. It has a bit of a learning curve with the lifetime analysis but the advantage is I never come across a segfault or race condition yet. The tooling with cargo and libraries just make it a pleasure to use compared to various build systems and libraries for C++. The pattern and type system is also really nice. It is possible to interop with C from Rust and implement Pytjon modules in it.

I have gotten very far with my project and expect to have a full lanuage server with navigate to symbol and find all references in a few months.You are very welcome to join my project if you want and I would help you get started if you are interested. Merging efforts would take us further but I fully understand if you rather go your own way also.