A collection of modular and reusable libraries and tools for semantic analysis of ink! smart contracts.
ink! analyzer aims to improve ink! language support in integrated development environments (IDEs), source code editors and other development tools by providing modular and reusable building blocks for implementing features like diagnostic errors, code completion suggestions, code/intent actions and hover content for the ink! programming language which is used for writing smart contracts for blockchains built with Substrate.
1. 🔬 Semantic Analyzer
A modular domain-specific semantic analysis library for ink! built on a resilient and lossless parser. It's responsible for parsing the smart contract code, analyzing it based on ink!'s semantic rules for smart contracts and returning semantic information for other components to consume.
2. 🗣 Language Server
A Language Server Protocol (LSP) implementation built on top of the semantic analyzer. It acts as a backend that provides language support features to IDEs, code editors and other development tools. It can be reused by multiple IDEs, code editors and other development tools that support LSP servers including Visual Studio Code, Visual Studio, Vim / Neovim, Emacs, Atom, Sublime Text, Acme, Lapce, Eclipse and many more.
Extensions/plugins/integrations add ink! language support to IDEs, code editors and other development tools. They communicate with the language server running as a separate process using the Language Server Protocol via JSON-RPC.
Planned extensions/plugins/integrations:
- Visual Studio Code Extension (Install from Marketplace)
- IntelliJ Plugin (TBD)
🌱 Funded by: the Web3 Foundation and Polkadot Treasury.