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-analyzer ink-analyzer Public

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

    Rust 14 3

  2. ink-vscode ink-vscode Public

    ink! language support for Visual Studio Code.

    Rust 5 2

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…