Pierre-Marie de Rodat 100e5db868 Analysis_Interfaces: rename Deallocatable into Destroyable...
... and enhance the destroyable mechanism to expose a typed interface.

Before this change, this required clients to deal with System.Address
values and conversion wrappers in order to register objects.

This business has now been wrapped into a generic that
Analysis_Interfaces provides so that clients only have to instantiate it
and call the resulting procedure. As a result, the "untyped" interface
is now used in a very localized place while clients can deal with
properly typed access to objects and the corresponding destroy
procedures.

Change-Id: I069ddb1fb8475f43baf3ffe0755bcf439e89059d
TN: P308-027
2016-03-23 00:32:49 +01:00
2016-02-02 10:58:48 +01:00
2016-02-22 09:57:01 +01:00
2015-12-08 16:40:08 +01:00
2015-12-09 11:15:51 +01:00
2015-12-09 11:15:51 +01:00
2016-02-10 12:04:58 +01:00

Langkit

Langkit (nickname for language kit) is a tool whose purpose is to make it easy to create syntactic and semantic analysis engines. Write a language specification in our Python DSL and Langkit will generate for you an Ada library with bindings for the C and Python programming languages.

The generated library is meant to provide a basis to write tooling, including tools working on potentially changing and incorrect code, such as IDEs.

The currently main Langkit user is Libadalang, a high performance semantic engine for the Ada programming language.

Dependencies

To use Langkit:

Install

There is no proper distribution for the langkit Python package, so just add the top-level langkit directory to your PYTHONPATH in order to use it. Note that this directory is self-contained, so you can copy it somewhere else.

Testing

First, make sure the langkit package is available from the Python interpreter (see Install). Then, in order to run the testsuite, launch the following command from the top-level directory:

$ python testsuite/testsuite.py

If you want to learn more about this test driver's options (for instance to run tests under Valgrind), add a -h flag.

Documentation

The developer and user's documentation for Langkit is in langkit/doc. You can consult it as a text files or you can build it. For instance, to generate HTML documents, run from the top directory:

$ make -C langkit/doc html

And then open the following file in your favorite browser:

langkit/doc/_build/html/index.html

Bootstrapping a new language engine

Nothing is more simple than getting an initial project skeleton to work on a new language engine. Imagine you want to create an engine for the Foo language, run from the top-level directory:

$ python langkit/create-project.py Foo

And then have a look at the created foo directory: you have minimal lexers and parsers and a manage.py script you can use to build this new engine:

$ python foo/manage.py make

Here you are!

Developer tools

Langkit uses mako templates generating Ada, C and Python code. This can be hard to read. To ease development, Vim syntax files are available under the utils directory (see makoada.vim, makocpp.vim). Install them in your $HOME/.vim/syntax directory to get automatic highlighting of the template files.

Description
No description provided
Readme 36 MiB
Languages
Ada 72.5%
Python 15.7%
Mako 9.5%
C 1.5%
Java 0.6%
Other 0.1%