AdaCore Paris Tech Day 2016: Pierre-Marie Rodat - Libadalang, New Generation of Ada Tooling

Preview:

Citation preview

Libadalangnew generation of Ada toolingPierre-Marie de Rodat

Parsing and semantic analysis solutions for Ada tooling

Codeinstrumentation

Style checker

Indentationengine

Parsing and semantic analysis solutions for Ada tooling

Customers

AdaCore

Toolpartners

Codeinstrumentation

Style checker

Indentationengine

Parsing and semantic analysis solutions for Ada tooling

Customers

AdaCore

Toolpartners

Codeinstrumentation

Style checker

Indentationengine

GNAT

Parsing and semantic analysis solutions for Ada tooling

Customers

AdaCore

Toolpartners

Codeinstrumentation

Style checker

Indentationengine

GNAT

GPS

Parsing and semantic analysis solutions for Ada tooling

Customers

AdaCore

Toolpartners

Codeinstrumentation

Style checker

Indentationengine

GNAT

GPS

ASIS

Parsing and semantic analysis solutions for Ada tooling

Customers

AdaCore

Toolpartners

Codeinstrumentation

Style checker

IndentationengineLibadalang

ASIS

Libadalang

Internal

• Fast parser

• Incremental semantic analyzer

• Standalone

Libadalang

Internal

• Fast parser

• Incremental semantic analyzer

• Standalone

Operation

• Illegal code

• No semantic checks

Libadalang

Internal

• Fast parser

• Incremental semantic analyzer

• Standalone

Operation

• Illegal code

• No semantic checks

Usage

• Usable from Ada, C, Python

• Prime solution for Ada tooling

• Replace modules in GPS, GNATcheck, GNATtest…

• Windows, Linux, Mac

https://github.com/AdaCore/libadalang

Libadalang

ref = unit.root.lookup(Sloc(line=15, column=43))def = ref.p_definition

From reference to definition in IDE

Future

In progress...

• Target date – 2018

• Active migration of GNATpp

• Better autocompletion, incremental stubbing in GPS

Future

In progress...

• Target date – 2018

• Active migration of GNATpp

• Better autocompletion, incremental stubbing in GPS

In discussion

• Code refactoring

• Semantic pattern matching

• SQL-like queries

Future

ref = unit.root.lookup(Sloc(line=15, column=43))def = libadalang.xref.rename(ref.p_definition, “New_Name”)

Code refactoring in IDE

Summary

For you

• Fast toolkit

• Operational modes

• Flexible

• Feature rich

• Multi-language

• Multi-context

Summary

For you

• Fast toolkit

• Operational modes

• Flexible

• Feature rich

• Multi-language

• Multi-context

From us

• Improved quality and performance of various tools

• Better support for Ada and SPARK

Recommended