Also stop building it in `manage.py`` (it is no longer needed for common
Langkit operations). Rename and repurpose `contrib/python_grammar` to
generate+build Libpythonlang, in an attempt to ensure it does not bit
rot.
`val` is a keyword in Lkt, so having a field called `val` in Lkt is an
obstacle from the self-hosting of Lkt itself. Rename that field to avoid
this issue.
Flushing is necessary whenever there is potentially buffered content in
Python's sys.stdout and the test is about to run native code (call to
a C/Ada routine, or spawning a subprocess). The couple of adjustments in
this commit were found necessary with testing on a local Windows machine
(not visible in production).
For some commands, like "lkm setenv" or "lkm run", it is not possible to
determine whether direct access to C headers will be needed eventually,
so unconditionally give access to them. Since the only C header present
in the generated sources is the language-specific header, this should
not be a problem in practice.
After this refactoring, most of the implementation of closure
instantiation for predicate and propagate atoms is shared, such that:
- it is now possible to plug partial arguments directly in the
constuction of a propagate atom.
- it is now possible to use as predicate a property that accepts an
array of entities, to be instantiated with an array of logic vars.