mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-28 04:08:55 -06:00
Update instructions about C runtime
This commit is contained in:
@@ -361,35 +361,102 @@ bash setup.sh install
|
|||||||
```
|
```
|
||||||
This will install
|
This will install
|
||||||
the C header files and libraries need to write C programs that use PGF grammars.
|
the C header files and libraries need to write C programs that use PGF grammars.
|
||||||
Some example C programs are included in the ``utils`` subdirectory, e.g.
|
% Some example C programs are included in the ``utils`` subdirectory, e.g. ``pgf-translate.c``.
|
||||||
``pgf-translate.c``.
|
|
||||||
|
|
||||||
When the C run-time system is installed, you can install GF with C run-time
|
Depending on what you want to do with the C runtime, you can follow one or more of the following steps.
|
||||||
support by doing
|
|
||||||
|
=== 1. Use the C runtime from another programming language ===
|
||||||
|
|
||||||
|
% **If you just want to use the C runtime from Python, Java, or Haskell, you don't need to change your GF installation.**
|
||||||
|
|
||||||
|
==== What ====
|
||||||
|
|
||||||
|
**This is the most common use case for the C runtime:** compile
|
||||||
|
your GF grammars into PGF with the standard GF executable,
|
||||||
|
and manipulate the PGFs from another programming language,
|
||||||
|
using the bindings to the C runtime.
|
||||||
|
|
||||||
|
==== How ====
|
||||||
|
|
||||||
|
The Python, Java and Haskell bindings are found in the
|
||||||
|
``src/runtime/{python,java,haskell-bind}`` directories,
|
||||||
|
respecively. Compile them by following the instructions
|
||||||
|
in the ``INSTALL`` or ``README`` files in those directories.
|
||||||
|
|
||||||
|
The Python library can also be installed from PyPI using ``pip install pgf``.
|
||||||
|
(If you are on Mac and get an error about ``clang`` version, you can try
|
||||||
|
some of [these solutions https://stackoverflow.com/questions/63972113/big-sur-clang-invalid-version-error-due-to-macosx-deployment-target]—but be careful before removing any existing installations.)
|
||||||
|
|
||||||
|
|
||||||
|
=== 2. Use GF shell with C runtime support ===
|
||||||
|
|
||||||
|
==== What ====
|
||||||
|
If you want to use the GF shell with C runtime functionalities, then you need to (re)compile GF with special flags.
|
||||||
|
|
||||||
|
The GF shell can be started with ``gf -cshell`` or ``gf -crun`` to use
|
||||||
|
the C run-time system instead of the Haskell run-time system.
|
||||||
|
Only limited functionality is available when running the shell in these
|
||||||
|
modes (use the ``help`` command in the shell for details).
|
||||||
|
|
||||||
|
(Re)compiling your GF with these flags will also give you
|
||||||
|
Haskell bindings to the C runtime, as a library called ``PGF2``,
|
||||||
|
but if you want Python or Java bindings, you need to do step 1.
|
||||||
|
|
||||||
|
% ``PGF2``: a module to import in Haskell programs, providing a binding to the C run-time system.
|
||||||
|
|
||||||
|
==== How ====
|
||||||
|
|
||||||
|
If you use cabal, run the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
cabal install -fserver -fc-runtime
|
cabal install -fc-runtime
|
||||||
```
|
```
|
||||||
from the top directory. This give you three new things:
|
|
||||||
|
|
||||||
- ``PGF2``: a module to import in Haskell programs, providing a binding to
|
from the top directory.
|
||||||
the C run-time system.
|
|
||||||
|
|
||||||
- The GF shell can be started with ``gf -cshell`` or ``gf -crun`` to use
|
If you use stack, uncomment the following lines in the ``stack.yaml`` file:
|
||||||
the C run-time system instead of the Haskell run-time system.
|
|
||||||
Only limited functionality is available when running the shell in these
|
|
||||||
modes (use the ``help`` command in the shell for details).
|
|
||||||
|
|
||||||
- ``gf -server`` mode is extended with new requests to call the C run-time
|
```
|
||||||
system, e.g. ``c-parse``, ``c-linearize`` and ``c-translate``.
|
flags:
|
||||||
|
gf:
|
||||||
|
c-runtime: true
|
||||||
|
extra-lib-dirs:
|
||||||
|
- /usr/local/lib
|
||||||
|
```
|
||||||
|
|
||||||
|
and then run ``stack install``, also from the top directory.
|
||||||
|
|
||||||
|
|
||||||
=== Python and Java bindings ===
|
=== 3. Use GF server mode with C runtime ===
|
||||||
|
|
||||||
|
==== What ====
|
||||||
|
|
||||||
|
With this feature, ``gf -server`` mode is extended with new requests to call the C run-time
|
||||||
|
system, e.g. ``c-parse``, ``c-linearize`` and ``c-translate``.
|
||||||
|
|
||||||
|
==== How ====
|
||||||
|
|
||||||
|
If you use cabal, run the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
cabal install -fc-runtime -fserver
|
||||||
|
```
|
||||||
|
from the top directory.
|
||||||
|
|
||||||
|
If you use stack, add the following lines in the
|
||||||
|
If you use stack, uncomment the following lines in the ``stack.yaml`` file:
|
||||||
|
|
||||||
|
```
|
||||||
|
flags:
|
||||||
|
gf:
|
||||||
|
c-runtime: true
|
||||||
|
server: true
|
||||||
|
extra-lib-dirs:
|
||||||
|
- /usr/local/lib
|
||||||
|
```
|
||||||
|
|
||||||
|
and then run ``stack install``, also from the top directory.
|
||||||
|
|
||||||
The C run-time system can also be used from Python and Java. Python and Java
|
|
||||||
bindings are found in the ``src/runtime/python`` and ``src/runtime/java``
|
|
||||||
directories, respecively. Compile them by following the instructions in
|
|
||||||
the ``INSTALL`` files in those directories.
|
|
||||||
|
|
||||||
The Python library can also be installed from PyPI using `pip install pgf`.
|
The Python library can also be installed from PyPI using `pip install pgf`.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user