comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: Record operations (Algebraic Data Types and printing)
Date: Mon, 08 Oct 2018 15:42:57 +0100
Date: 2018-10-08T15:42:57+01:00	[thread overview]
Message-ID: <lyk1msts7i.fsf@pushface.org> (raw)
In-Reply-To: g217feFdj3oU1@mid.individual.net

Bill Findlay <findlaybill@blueyonder.co.uk > writes:

> Simon Wright <simon@pushface.org> wrote:
>
>> Maybe I should consider (for my Mac friends) a GCC 8.2 release including
>> libadalang!
>
> As I hope I fall into that category 8-), 
> please excuse my ignorance.
> What does libadalang do for me?

Hi Bill!

From the README.md (https://github.com/AdaCore/libadalang):

--------------------------------

Libadalang is a project to build a high performance semantic engine for
the Ada programming language. It is meant to provide a basis to write
Ada tooling, including tools working on potentially changing and
incorrect code, such as IDEs. Its goals encompass, but are not limited
to:

* Full support for parsing the Ada 2012 syntax, plus SPARK extensions.

* Error tolerant parsing: the parser must be able to recover from simple
  errors and provide a "best-guess" tree.

* Error tolerant semantic analysis: it must be possible to create a tool
  that works only on syntax, and completely ignores semantic issues.

* Full symbol resolution respecting Ada 2012 – and prior Ada versions –
  semantics.

* Bindings to a variety of languages, including Ada, C, Python and Java,
  so that tools can be written from various ecosystems.

* Incremental processing of source files.

--------------------------------

[...] there are a few reasons you might eventually choose to use
Libadalang instead of ASIS:

1. The ASIS standard has not yet been updated to the 2012 version of
   Ada. More generally, the advantages derived from ASIS being a
   standard also means that it will evolve very slowly.

2. Syntax only tools will derive a lot of advantages on being based on
   Libadalang:

   * Libadalang will be completely tolerant to semantic errors. For
     example, a pretty-printer based on Libadalang will work whether
     your code is semantically correct or not, as long as it is
     syntactically correct.

   * Provided you only need syntax, Libadalang will be much faster than
     ASIS' main implementation (AdaCore's ASIS), because ASIS always
     does complete analysis of the input Ada code.

3. The design of Libadalang's semantic analysis is lazy. It will only
   process semantic information on-demand, for specific portions of the
   code. It means that you can get up-to-date information for a correct
   portion of the code even if the file contains semantic errors.

4. Libadalang has bindings to C and Python, and its design makes it easy
   to bind to new languages.

5. Libadalang is suitable to write tools that work on code that is
   evolving dynamically. It can process code and changes to code
   incrementally. Thus, it is suitable as an engine for an IDE, unlike
   AdaCore's ASIS implementation.

6. Libadalang is not tied to a particular compiler version. This
   combined with its staged and error tolerant design means that you can
   use it to detect bugs in Ada compilers/tools.

--------------------------------

HTH!


  reply	other threads:[~2018-10-08 14:42 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-05 17:46 Record operations (Algebraic Data Types and printing) Henrik Härkönen
2018-10-05 17:58 ` AdaMagica
2018-10-05 18:11   ` Henrik Härkönen
2018-10-05 18:46     ` Niklas Holsti
2018-10-05 20:33       ` Henrik Härkönen
2018-10-06  5:38   ` J-P. Rosen
2018-10-06  7:08     ` Henrik Härkönen
2018-10-06 16:42       ` Lucretia
2018-10-08 23:08         ` Randy Brukardt
2018-10-09  1:12           ` Lucretia
2018-10-09 22:20             ` Randy Brukardt
2018-10-10  7:17               ` Dmitry A. Kazakov
2018-10-10 18:13                 ` G. B.
2018-10-10 18:36                   ` Dmitry A. Kazakov
2018-10-11 11:29                   ` Björn Lundin
2018-10-11 14:45                     ` Jacob Sparre Andersen
2018-10-11 18:34                       ` Björn Lundin
2018-10-12 19:08                     ` G. B.
2018-10-12 19:20                       ` Randy Brukardt
2018-10-11 21:32                   ` Randy Brukardt
2018-10-10 18:38                 ` Shark8
2018-10-11  8:36                   ` Dmitry A. Kazakov
2018-10-11 21:35                 ` Randy Brukardt
2018-10-12  7:14                   ` Dmitry A. Kazakov
2018-10-12 19:16                     ` Randy Brukardt
2018-10-06 16:18     ` Jeffrey R. Carter
2018-10-06 17:19       ` Dmitry A. Kazakov
2018-10-08 23:03   ` Randy Brukardt
2018-10-09  6:22     ` Henrik Härkönen
2018-10-09  7:32       ` Paul Rubin
2018-10-09  7:38         ` Henrik Härkönen
2018-10-09 22:25         ` Randy Brukardt
2018-10-05 18:32 ` Niklas Holsti
2018-10-05 18:43   ` Henrik Härkönen
2018-10-05 19:41   ` Simon Wright
2018-10-06  6:17     ` Henrik Härkönen
2018-10-06 16:04       ` Stephen Leake
2018-10-06 16:56         ` Simon Wright
2018-10-08  6:44           ` briot.emmanuel
2018-10-08 14:09             ` Simon Wright
2018-10-08 14:21               ` Bill Findlay
2018-10-08 14:42                 ` Simon Wright [this message]
2018-10-08 16:46                   ` Bill Findlay
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox