Commit Graph

6140 Commits

Author SHA1 Message Date
hallgren
507b52cc23 gf.cabal: include PGF.Haskell 2015-01-14 14:53:28 +00:00
hallgren
20b271a238 Translating linearization functions to Haskell: better treatment of special tokens
Common code has been lifted out from the generated Haskell modules to
an auxiliary module PGF.Haskell, which is currently included in the
regular PGF library, although it is independent of it and probably belongs
in a separate library.

The type Str used by linearization functions is now based on a token
type Tok, which is defined in PGF.Haskell.

PGF.Haskell.Tok is similar to the type GF.Data.Str.Tok, but it has
constructors for the special tokens BIND, SOFT_BIND and CAPIT, and there is
a function

	fromStr :: Str -> String

that computes the effects of these special tokens.
2015-01-14 14:35:39 +00:00
hallgren
2e642ace8a Translating linearization functions to Haskell: add support for pre {...}
STILL TODO:

	- variants
	- better treatment of special tokens BIND, SOFT_BIND & CAPIT.
2015-01-08 17:52:45 +00:00
lizazim
68b4bb74cc patchJpn 2015-01-07 23:44:49 +00:00
hallgren
ef84f7d842 Translating linearization functions to Haskell: use qualified names to avoid name clashes
All languages in the Phasebook can now be converted to compilable Haskell
code.

STILL TODO:
  
  	- variants
  	- pre { ... }
2015-01-07 16:13:28 +00:00
hallgren
0694a915d2 Translating linearization functions to Haskell: significant code size reductions
+ Instead of including lists of parameter values generated by GF, generate
  code to enumerate parameter values (in the same order as GF). This seems
  to give a factor of 2-3 code size reduction in the Phrasebook (e.g.
  from 84MB to 25MB for Hin, from 338MB to 154MB for Fre).

+ Deduplicate table entries, i.e. convert "table [..,E,..,E,..,E,..]" into
  "let x = E in table [..,x,..,x,..,x,..]". This gives even more significant
  code size reduction in some cases, e.g. from 569MB to 15MB for
  PhrasebookFin.

All phrasebook languages can now be converted to compilable Haskell code,
except PhrasebookPes, which still has the name clash problem.
2015-01-06 19:57:24 +00:00
hallgren
cbd873839b More work on translating linearization functions to Haskell
Many Phrasebook languages can now be converted to compilable Haskell code.
Some languages (Fre, Hin, Snd, Urd) generate too much Haskell code to be
practically useful (e.g. 338MB for Fre). One language (Fin) took too long
to convert to Haskell. One language (Pes) has problems with name clashes in
the generated Haskell code.

STILL TODO:

  	- variants
  	- pre { ... }
  	- reduce code duplication for large tables
	- generate qualified names to avoid name clashes
2015-01-06 16:48:03 +00:00
kr.angelov
35c11d5f5a fix the reference counting for callbacks in Python 2015-01-05 11:24:00 +00:00
kr.angelov
3bd40dbab6 API for word alignment in the C runtime and in the Haskell binding 2014-12-29 10:59:20 +00:00
kr.angelov
8fd24c3839 more compact implementation for GuStringBuf 2014-12-24 14:20:30 +00:00
aarne
537bc249f9 lowered Symb_Chunk probability; fixed translator Makefile 2014-12-19 15:17:38 +00:00
kr.angelov
13f4af4910 bugfix and tiny optimization for callbacks from Haskell 2014-12-19 10:14:41 +00:00
kr.angelov
856683f79f haddock comments for parseWithHeuristics 2014-12-19 09:05:51 +00:00
kr.angelov
f44f9a1b00 added mkStr to the Haskell binding 2014-12-19 08:58:02 +00:00
kr.angelov
bb1c1dd27c added mkApp to the Haskell binding 2014-12-19 08:47:00 +00:00
kr.angelov
6b2ef03af9 fix in the Haskell binding 2014-12-16 10:35:56 +00:00
kr.angelov
990dce35ae forgot to export parseWithHeuristics from Haskell 2014-12-16 10:33:45 +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
hallgren
d98bd34a33 bin/build-binary-dist.sh: remove hardwired install path and version number
Also improved tolerance to paths containing white space.
2014-12-15 15:18:27 +00:00
hallgren
9235f49ab3 gf.cabal: include editor modes in the list of data files to install
Also add ghc-7.8.3 to the list of tested compiler versions
2014-12-15 15:16:50 +00:00
kr.angelov
02df25d4b6 bump the version code in AndroidManifest.xml 2014-12-11 23:29:58 +00:00
hallgren
75338503a9 Setup.hs: compile Alltenses before Present
When mkPresent (or another preprocessor) is used, error messages from GF will
show the file name _gf_preproc.tmp instead of the name of the file where
the error occurred. By compiling Alltenses first, the real file name will
appear in error messages (unless the error only happens then mkPresent is
used).
2014-12-11 22:18:21 +00:00
kr.angelov
3e8e477652 update the nerc for the changes in the grammar 2014-12-11 21:54:34 +00:00
aarne
a7b22188c1 updates in app help file, e.g. the app name 2014-12-11 20:05:57 +00:00
hallgren
2eaf46f610 Work in progress on translating linearization functions to Haskell
The translation is currently good enough to translate all concrete syntaxes
of the Foods and Letter grammars, and some concrete syntaxes of the Phrasebook
grammar (e.g. PhrasebookEng & PhrasebookSpa works, but there are problems with
e.g. PhrasebookSwe and PhrasebookChi)

This functionality is enabled by running

	gf -make -output-format=haskell -haskell=concrete ...

TODO:
	- variants
	- pre { ... }
	- eta expansion of linearization functions
	- record subtyping can still cause type errors in the Haskell code
	  in some cases
	- reduce code large tables
2014-12-11 16:08:36 +00:00
hallgren
9be0c21676 GF.Grammar.Macros: generalize the type of collectOp
New type:

    collectOp :: Monoid m => (Term -> m) -> Term -> m
2014-12-11 16:05:42 +00:00
hallgren
719f926a48 GF.Server: remove some code duplication 2014-12-11 15:58:57 +00:00
kr.angelov
709163c32e back to familiar you in Hindi 2014-12-11 16:13:55 +00:00
kr.angelov
8bf2c9ecbb update gf-translator.svg 2014-12-11 13:44:48 +00:00
kr.angelov
7d87339b52 edit the presentation image 2014-12-10 13:33:28 +00:00
kr.angelov
a2fb1bf5f2 rename HLCompiler to GFTranslator 2014-12-10 13:21:18 +00:00
kr.angelov
166402f7e5 added presentation image for the app 2014-12-10 13:14:11 +00:00
kr.angelov
4c83d98381 make the GF logo fit precisely in a square 2014-12-10 10:29:27 +00:00
kr.angelov
81fda41fbc make sure that the app doesn't crash even if nonExist is used somewhere in the grammars 2014-12-09 12:31:36 +00:00
kr.angelov
e41ec32ba9 make sure that neither I nor I'm is recognized as name in English 2014-12-09 08:49:22 +00:00
kr.angelov
386ec87405 bugfix for unknown words 2014-12-08 19:38:03 +00:00
hallgren
676b0d6e81 Haddock documentation: expose exportPGF, some other small improvements 2014-12-08 14:48:14 +00:00
kr.angelov
55e2b55e60 restore the visualisation of abstract trees from the app 2014-12-08 16:17:42 +00:00
kr.angelov
d4b8281226 fix for the unknown words 2014-12-08 15:42:14 +00:00
kr.angelov
42d73f0d10 fix typo 2014-12-08 15:36:07 +00:00
kr.angelov
31f835a6c8 register the callback for the Symb category 2014-12-08 15:22:33 +00:00
kr.angelov
3fd53b907e added a callback for unknown words 2014-12-08 15:18:01 +00:00
aarne
8ec5910ae2 probabilities for new chunk rules ; Symb as another literal in app Makefile 2014-12-08 10:20:06 +00:00
aarne
fae9df2517 some edits in app help file 2014-12-07 17:42:47 +00:00
aarne
82a7e22d2e MissApp.hs: a function for preparing a list of lin rules for missing words 2014-12-06 08:39:25 +00:00
aarne
52d3839271 a script for analysing missing functions, e.g. "which functions of type Quant are missing in each language" 2014-12-05 17:01:58 +00:00
hallgren
fc46db8c7f Eliminate the record extension operator from the Value type returned by the partial evaluator
It was used only in cases where a lock field needed to be added to a
run-time variable, like e.g. in examples/phrasebook/SentencesTha.gf: 

    lin
      PGreetingMale g   = mkText (lin Text g) (lin Text (ss "ครับ")) | g ;
      PGreetingFemale g = mkText (lin Text g) (lin Text (ss "ค่ะ")) | g ;

But lock fields are only meaningful during type checking and can safely be
ignored in later passes.
2014-12-05 12:42:17 +00:00
aarne
f600cf35e8 fixes in app help file ; commented out fake TTS for Bul and Cat ; remove []_ from output with unlinearized functions, so that speech doesn't get garbled. 2014-12-05 09:23:44 +00:00
aarne
db97a2b0e4 quick reference text prepended to app help file 2014-12-04 20:30:50 +00:00
hallgren
2cca456da9 Wide Coverage Translation Demo web app: updated to use App12.pgf 2014-12-03 15:08:56 +00:00