krangelov
c6d6914688
switch to using FILE * in the reader
2021-09-15 08:06:18 +02:00
krangelov
ae0a6aa6b6
clean up everything after revision is not needed anymore.
2021-09-11 16:33:22 +02:00
krangelov
bcc33af36b
added support for branches and explicit transaction commit
2021-09-08 14:09:23 +02:00
krangelov
2e846cdf59
added safeguard to ensure that PgfRevision is an actual object
2021-09-08 09:17:12 +02:00
krangelov
a843ddba55
better error handling which always reports the right file name
2021-09-07 15:54:27 +02:00
krangelov
9cea2cc70e
change the API to allow different grammar revisions
2021-09-06 15:49:39 +02:00
krangelov
b28e891a6b
a type annotated version of marshaller/unmarshaller
2021-08-26 17:27:34 +02:00
krangelov
69f74944e2
The unmarshaller is no longer stored in the PGF object but is passed explicitly to each function that needs it.
2021-08-26 16:14:56 +02:00
krangelov
221f0b7853
PgfUnmarshaller now mimics a C++ class. Allows for keeping state
2021-08-13 18:14:56 +02:00
krangelov
2c1700776e
implemented readExpr & readType
2021-08-11 22:07:01 +02:00
krangelov
a5008c2fe1
implemented functionType and marshalling for types and expressions
2021-08-10 15:07:41 +02:00
krangelov
91f183ca6a
move the C sources to the subfolder pgf again for backwards compatibility
2021-08-08 18:29:16 +02:00
krangelov
8f0a1b8fee
started a new database-backed runtime from scratch
2021-07-30 12:08:28 +02:00
krangelov
26361b3692
fix the parsing for literals after the latest changes in the parser
2019-10-09 14:18:05 +02:00
krangelov
e2ddea6c7d
first version of a parser which returns chunks in case of failure
2019-08-30 13:31:57 +02:00
Krasimir Angelov
d103fe6755
make pgf_production_is_lexical public since it will be needed in the Haskell binding
2017-09-25 12:20:48 +02:00
Krasimir Angelov
bcb97a336e
make the API for indexing in the parser and the linearizer public since it will be needed in the Haskell binding
2017-09-14 18:11:24 +02:00
krasimir
7d72d99c2f
explicitly classify all functions in libpgf as either internal or API functions
2017-04-19 09:34:23 +00:00
krasimir
a8eaa2f2e5
a patch from Bjørnar Luteberget for compatibility with MSVC
2017-04-12 10:24:56 +00:00
krasimir
192b1cc018
the reasoner's states are now closures just like the code for the def rules. This means more compact JIT compiled code and uniformity with the code for def rules
2015-07-04 15:06:34 +00:00
krasimir
e352742b8c
the orthographic tokens were broken when they appear inside a dictionary entry. Now this is fixed by treating those as syntactic rules
2015-06-12 13:03:19 +00:00
krasimir
1e0d7be4f4
added all orthographic primitives
2015-05-11 13:01:39 +00:00
krasimir
b92bbcfc37
parsing with meta rules is now removed since we don't use them anymore and I would gladly remove some code.
2015-02-19 11:59:51 +00:00
kr.angelov
9bc5349e62
change in the API for literals
...
The API in the C runtime as well as in the Haskell, Python and Java binding
is changed. Now instead of adding the literal callbacks to the concrete syntax
you need to supply them every time when you need to parse. The main reason is:
- referentially transparent API for Haskell
- when we start using memory mapped files we will not be allowed to change
anything in the grammar data structures. At that point the old API would
be impossible to use.
2014-12-16 10:21:26 +00:00
kr.angelov
b1e6a21c56
now (+) in the abstract syntax works, i.e. it knows how to deal with partial sums
2014-10-31 14:16:11 +00:00
kr.angelov
9b0f354c7c
a more efficient tail call by using the new TUCK instruction
2014-10-30 13:09:50 +00:00
kr.angelov
efedec187c
an explicit SAVE instruction
2014-10-26 11:40:12 +00:00
kr.angelov
c8b3865338
an explicit PUSH_FRAME instruction
2014-10-22 14:11:41 +00:00
kr.angelov
26ad164cec
finally proper stack unwind in the evaluator
2014-10-16 10:00:32 +00:00
kr.angelov
ac288386c4
the compiler now allows + to be used as a floating point addition in the abstract syntax
2014-10-14 11:15:18 +00:00
kr.angelov
f8b73d593c
Prelude.CAPIT is now a built-in primitive. It still generates &| in the Haskell runtime but will be intepreted in the C runtime
2014-10-09 19:34:12 +00:00
kr.angelov
86e9acc7a7
throw away the long obsolete runtime type information in the C runtime
2014-10-09 13:44:26 +00:00
kr.angelov
6c86e7fa91
replace the hash maps in the abstract syntax with binary search tables
2014-10-09 08:38:55 +00:00
kr.angelov
9c2f71b07a
now we statically allocate closures for all top-level functions and all nullary constructors. closures are dynamically allocated only for CAFs. this reduces memory use and time to allocate dynamic closures
2014-10-08 12:57:29 +00:00
kr.angelov
13c7721bc5
using instruction RET was wrong; now use EVAL
2014-10-06 15:57:42 +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
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
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
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
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
kr.angelov
1ca09448f9
now fully functional Java API for custom literals
2014-04-10 14:14:31 +00:00
kr.angelov
f30c60c3d7
GuVariant is now plain uintptr_t instead of a structure to make it easier to write Haskell bindings
2014-02-09 19:07:15 +00:00
kr.angelov
0ece8f19ab
loading and unloading of languages in the C runtime and in the Python bindings
2013-12-10 15:00:52 +00:00
kr.angelov
0095119ec0
added Predef.SOFT_BIND. This special token allows zero or more spaces between ordinary tokens. It is also used in the English RGL to attach the commas to the previous word.
2013-11-12 09:54:57 +00:00
kr.angelov
2483dc7728
the content of ParseEngAbs3.probs is now merged with ParseEngAbs.probs. The later is now retrained. Once the grammar is compiled with the .probs file now it doesn't need anything more to do robust parsing. The robustness itself is controlled by the flags 'heuristic_search_factor', 'meta_prob' and 'meta_token_prob' in ParseEngAbs.gf
2013-11-06 10:21:46 +00:00
kr.angelov
042243f08a
added the linref construction in GF. The PGF version number is now bumped
2013-10-30 12:53:36 +00:00
kr.angelov
151f86c1e9
fix the handling of 'pre' in the C runtime
2013-10-28 12:35:37 +00:00
kr.angelov
0882396875
tabular linearization in the C and Java runtimes
2013-10-23 14:49:28 +00:00