Commit Graph

732 Commits

Author SHA1 Message Date
kr.angelov
de1b372ef7 the indirection should be done in the evaluate_expr_thunk gate instead of in the pgf_evaluate_expr_thunk function. this ensures lazyness 2014-10-07 07:12:40 +00:00
kr.angelov
13c7721bc5 using instruction RET was wrong; now use EVAL 2014-10-06 15:57:42 +00:00
kr.angelov
af7feea385 fix the order in which arguments are stored in the mk_const gate 2014-10-06 12:31:39 +00:00
kr.angelov
a50315396f push a stack frame around recursive calls to guarantee that a nested call to a failing function will not crash 2014-10-06 09:21:08 +00:00
kr.angelov
889c0f3df4 partial implementation for the FAIL instruction 2014-10-06 09:04:25 +00:00
kr.angelov
4e00834c68 bugfix in pgf_evaluate_expr_thunk 2014-09-30 17:34:29 +00:00
kr.angelov
f5da57056c fix pgf_value2expr for partial applications 2014-09-30 13:46:46 +00:00
kr.angelov
312d4ff52e enough fixes to get the JIT compiler compile for ARM. It is still broken if you try to use it 2014-09-30 12:39:31 +00:00
kr.angelov
f25b45e13d fix in reader.h for compiling jpgf.c 2014-09-30 11:25:27 +00:00
kr.angelov
6be25aa872 fix in pgf_print_expr for lambda abstractions with more than one argument 2014-09-30 09:42:18 +00:00
kr.angelov
70455b88a7 bugfix in the gate evaluate_value_lambda 2014-09-30 08:42:06 +00:00
kr.angelov
80acad4447 bugfix in the pattern matching compiler and a number of other fixes that I somehow did not push before 2014-09-29 15:00:04 +00:00
kr.angelov
1ecd61f7f5 bugfix in the RET instruction 2014-09-29 13:04:49 +00:00
kr.angelov
87c5c4b0cc enlarge the code window in pgf_jit_gates to ensure enough space on 64-bit machines 2014-09-29 07:34:32 +00:00
kr.angelov
7036d56d29 the literals API is now exposed in Python 2014-09-25 11:59:40 +00:00
kr.angelov
8e64fc6e7e switch off the debugging of the JIT compiler which I had turned on accidentally. silence two harmless warnings 2014-09-25 11:44:45 +00:00
kr.angelov
14e6eec5ec now a complete JIT compiler and ByteCode compiler for the def rules in the abstract syntax. there might be some bugs yet to be found, meta variables and computation under lambda is only partially supported 2014-09-25 10:35:06 +00:00
hallgren
db9aeb2fa2 haskell-bind/PGF2.hsc: unexport functions that break referential transparency
loadConcr, unloadConcr and addLiteral modify the Concr structure as a side
effect. This means that other functions with a Concr argument (e.g. parse
and linearize) are no longer pure.

Possible solutions:

1. Don't try to hide the imperative nature of the C run-time system: remove
   all uses of unsafePerformIO and let all functions operate in the IO monad.

2. Don't export functions with side effects. Perhaps the desired functionality
   of loadConcr, unloadConcr and addLiteral can be folded into readPGF.
   The Concr structures can then treaded as immutable after after the
   readPGF function returns...
2014-09-22 14:05:17 +00:00
kr.angelov
818896dec2 fix a portability problem with the Python binding (found by Prasanth) 2014-09-17 16:12:40 +00:00
kr.angelov
3e3178abfa dummy jit_base_tail_finishr for x86_64. 2014-09-16 12:29:35 +00:00
kr.angelov
621d748bac a major revision of the bytecode generator and JIT compiler. the effect is that now we can compute with lambda functions and with true tail recursion 2014-09-11 15:39:39 +00:00
kr.angelov
df0602723d now release the FunPtr:s that are allocated for each literal callback 2014-09-10 15:41:53 +00:00
kr.angelov
80725e872b added an API for custom literals in the Haskell binding 2014-09-10 14:56:18 +00:00
kr.angelov
b553729f37 added loadConcr/unloadConcr to the Haskell binding. This exposes an API for loading grammars compiled with -split-pgf 2014-09-10 14:35:54 +00:00
kr.angelov
4d28c7632e the code for def rules now uses proper graph update to preserve lazyness 2014-09-05 11:53:02 +00:00
kr.angelov
86b5f78c57 full support for recursive def rules in the C runtime 2014-09-05 10:09:43 +00:00
kr.angelov
bfd414554d partial implementation for recursive def rules 2014-09-01 14:51:20 +00:00
kr.angelov
342f6e3797 bug fixes in the JIT compiler 2014-09-01 12:53:14 +00:00
kr.angelov
cee5f590ca added evaluator.h which I had forgoten 2014-08-29 08:36:53 +00:00
hallgren
cd5193b7e1 Fix warnings in 16 modules, mostly forward compatibility warnings from GHC 7.8 2014-08-13 22:16:18 +00:00
kr.angelov
c30e2df228 pattern matching in def rules is now supported 2014-08-11 15:53:41 +00:00
kr.angelov
584d589041 a partial support for def rules in the C runtime
The def rules are now compiled to byte code by the compiler and then to
native code by the JIT compiler in the runtime. Not all constructions
are implemented yet. The partial implementation is now in the repository
but it is not activated by default since this requires changes in the
PGF format. I will enable it only after it is complete.
2014-08-11 10:59:10 +00:00
john.j.camilleri
37a35734a5 PGF Web Service: include entire completion in full mode
When using full=yes in the web service 'complete' command,
you now get an additional field 'seq' with the longest possible completion.
So, given:

  lin
    f1 = ss "the" ;
    f2 = ss ("the red house" | "the real deal") ;

and trying to complete on input "th", you get:

    [
        {
            "from": "TestCnc",
            "brackets": {
                "cat": "_",
                "fid": 0,
                "index": 0,
                "fun": "_",
                "children": []
            },
            "text": "th",
            "completions": [
                {
                    "token": "the",
                    "funs": [
                        {
                            "fun": "f1",
                            "hyps": [],
                            "cat": "C",
                            "seq": "the"
                        },
                        {
                            "fun": "f2",
                            "hyps": [],
                            "cat": "C",
                            "seq": "the red house"
                        },
                        {
                            "fun": "f2",
                            "hyps": [],
                            "cat": "C",
                            "seq": "the real deal"
                        }
                    ]
                }
            ]
        }
    ]
2014-07-15 09:33:22 +00:00
john
9b49608451 PGF web service: Return additional completion info with 'full' flag
BETA! The 'complete' command now has a new flag 'full' which when set
returns additional info about completions.

Without 'full' flag (default):

[
    {
        "from": "PhrasebookEng",
        "brackets": {
            "cat": "_",
            "fid": 0,
            "index": 0,
            "fun": "_",
            "children": [
                {
                    "token": "the"
                }
            ]
        },
        "text": "su",
        "completions": [
            "supermarket",
            "suspect"
        ]
    }
]

With full=true or full=yes:

[
    {
        "from": "PhrasebookEng",
        "brackets": {
            "cat": "_",
            "fid": 0,
            "index": 0,
            "fun": "_",
            "children": [
                {
                    "token": "the"
                }
            ]
        },
        "text": "su",
        "completions": [
            {
                "token": "supermarket",
                "funs": [
                    {
                        "fid": 421,
                        "fun": "Supermarket",
                        "hyps": [],
                        "cat": "PlaceKind"
                    }
                ]
            },
            {
                "token": "suspect",
                "funs": [
                    {
                        "fid": 445,
                        "fun": "Suspect",
                        "hyps": [],
                        "cat": "Property"
                    }
                ]
            }
        ]
    }
]
2014-07-11 09:25:26 +00:00
kr.angelov
0222d2440c implemented computing with abstract syntax trees. It passes all test cases except those that require def rules. The design is consistent with the STG virtual machine 2014-07-08 19:45:49 +00:00
kr.angelov
e0fe6d01c4 bugfix for the typechecker in the C runtime 2014-07-08 19:19:48 +00:00
kr.angelov
ada85ae44e an API for visitor patterns on abstract syntax trees from Python. This makes the embedded grammars especially pleasing 2014-07-06 23:48:51 +00:00
kr.angelov
85672af858 small fix for the embedded mode in Python 2014-07-06 19:55:08 +00:00
kr.angelov
e52d5bf715 embedded mode for GF grammar in Python. Only generation for now 2014-07-06 19:49:17 +00:00
kr.angelov
abb50f9c73 added bracketedLinearize in the Java binding 2014-07-02 07:08:01 +00:00
kr.angelov
4a7055e994 fixed rare memory leak in the Java bindings 2014-07-02 07:06:51 +00:00
kr.angelov
064cf03005 a few changes in the Nerc that I have forgoten to push 2014-07-01 17:32:25 +00:00
kr.angelov
7aa8bf4150 fix warnings in the compilation of the Java binding 2014-07-01 17:31:29 +00:00
hallgren
ceb4beeb84 runtime/c/setup.sh: use make -j to speed up compilation
The configuration script takes significantly longer to run than the compilation
of all the C code, which is a hint that is in need of a major simplification.
2014-06-19 09:26:44 +00:00
hallgren
65b064fe82 build-binary-dist.sh: updated to include the Python binding to the C run-time
There are also some changes in src/runtime/python/setyp.py to support this.
2014-06-18 16:09:46 +00:00
kr.angelov
fe49ddf16d now the named entities recognizer returns dictionary entries if the name is known 2014-06-17 06:57:12 +00:00
hallgren
9944916127 src/runtime/c/setup.sh: executable version of INSTALL, used from debian/rules 2014-06-16 23:28:12 +00:00
kr.angelov
b3f8b90f2b fixed memory leak in the Haskell binding to the C runtime 2014-06-16 08:49:13 +00:00
hallgren
d6252d1c16 PGF library: expose only PGF and PGF.Internal instead of all modules
PGF exports the public, stable API.
PGF.Internal exports additional things needed in the GF compiler & shell,
including the nonstardard version of Data.Binary.
2014-06-12 14:43:18 +00:00
hallgren
26aecdb4d3 PGF2.hsc: use throwIO instead of throw
From the documentation: the throwIO variant should be used in preference to
throw to raise an exception within the IO monad because it guarantees ordering
with respect to other IO operations, whereas throw does not.

Also removed some unused imports.
2014-06-10 12:42:01 +00:00