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