Skip to content
@ink-analyzer

ink! analyzer

ink! analyzer is a collection of modular and reusable libraries and tools for semantic analysis of ink! smart contracts.

ink! analyzer

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, inlay hints, signature help and hover content for the ink! programming language - which is used for writing smart contracts for blockchains built with Substrate.

Components

block-beta
columns 1
block:IDE
columns 1
Label["IDE/Code Editor/Development Tool"]
Core("Core")
space
Extension("Extension/Plugin")
end
%% Grouped for styling/spacing
block:Custom
columns 1
space
LSP("Language Server")
space
Analyzer("Semantic Analyzer")
end
%% bidirectional communication between IDE and Extension
Core--"Extension/Plugin API"-->Extension
Extension-->Core
%% bidirectional communication between Extension and Language Server
Extension--"LSP (Language Server Protocol)"-->LSP
LSP-->Extension
%% Language Server talks to Semantic Analyzer
LSP--"Analyzer API"-->Analyzer
classDef blue fill:#3d86c6,stroke:#3d86c6
classDef green fill:#6aa84f,stroke:#6aa84f
classDef transparent fill:transparent,stroke:transparent
class IDE blue
class Custom,Label transparent
style Core color:#ccc,fill:#073763,stroke:#073763
class Extension,LSP,Analyzer green
Loading

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.

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.

3. 👩‍💻 Extensions/plugins/integrations for IDEs, code editors and other development tools

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:

Acknowledgements

🎨 Illustration by: Dima Moiseenko

🌱 Funded by: the Web3 Foundation and Polkadot Treasury.

Pinned Loading

  1. ink-analyzerink-analyzerPublic

    A collection of modular and reusable libraries and tools for semantic analysis of ink! smart contracts.

    Rust 13 2

  2. ink-vscodeink-vscodePublic

    ink! language support for Visual Studio Code.

    Rust 5 1

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…