Commit Graph

89 Commits

Author SHA1 Message Date
hallgren
ef4fac9d82 Compute/ConcreteLazy.hs: no need to reverse when looking up labels in records 2011-10-20 14:19:33 +00:00
hallgren
d8d60adb15 AppPredefined.hs: more readable notation for the types of primitives 2011-10-20 14:17:37 +00:00
hallgren
42ea96a5ca Remove unused function computeConcreteRec.
This also allows the parameter rec to be removed from function computeTermOpt.
(The change is made in GF.Compile.Compute.ConcreteLazy, but not in 
GF.Compile.Compute.ConcreteStrict.)
2011-09-09 12:25:27 +00:00
hallgren
875df01dc6 Add lazy version of GF.Compile.Compute.Concrete
This patch adds GF.Compile.Compute.ConcreteLazy, which replaces the Err monad
with the Identity monad. While the Err monad makes the interpreter
(hyper)strict, the Identity monad let's the interpreter inherit Haskell's
laziness.  This can give big speedups: from 50s to 1s in one example,
from ~4 minutes to ~2 minutes for the RGL.

This is still experimental and might be buggy, so it is off by default.
You can turn it on by configuring with the -fcclazy flag, e.g.

	cabal configure -fcclazy

Let me know if anything breaks.
2011-09-01 16:39:41 +00:00
hallgren
314abe733b GF.Compile.Coding: cleaner code
Refine function codeTerm into codeTerm, codeLTerm and codeLTerms.
2011-08-31 13:55:49 +00:00
hallgren
d180dadf08 GF.Infra.Modules: minor tweaks
Still keeping the modules both in a list and in a finite map. The overhead is
smaller than I initially thought.
2011-08-31 11:18:16 +00:00
hallgren
ba10b5b0ca GF.Infra.Modules: keep the modules of a grammar in a finite map instead of a list
This speeds up the compilation of PhrasebookFin.pgf by 12%, mosly by speeding
up calls to lookupModule in calls from lookupParamValues, in calls
from allParamValues.

The invariant "modules are stored in dependency order" is no longer respected!
But the type MGrammar is now abstract, making it easier to maintain this or
other invariants in the future.
2011-08-30 18:54:50 +00:00
hallgren
125ae7a3d3 GrammarToPGF.hs: comment out unused imports 2011-08-30 12:02:32 +00:00
aarne
6757ab2b41 reload command in shell 2011-08-25 15:58:38 +00:00
aarne
3afefb0ac9 commented Compute/Concrete with explanations 2011-08-22 17:08:07 +00:00
aarne
848373e29e GenIP, GenRP in Extra and any_Quant in ExtraEng 2011-07-21 08:25:04 +00:00
aarne
a3924abece Predef functions toUpper, toLower, isUpper 2011-06-02 16:10:46 +00:00
aarne
75e401d1a7 generate Eq instance for GADT 2011-04-06 12:27:31 +00:00
aarne
7067b1c992 fixed the printing of predefined and list categories in haskell=gadt 2011-04-06 07:45:35 +00:00
aarne
7361ddea45 make it possible to override opers defined in an interface by syntax 'instance Foo of Bar - [f,g,h]' 2011-03-12 11:24:14 +00:00
aarne
3ddc29f2dc make later flags take priority over earlier ones in PGF generation 2011-03-12 11:22:21 +00:00
aarne
f32307b39d added composOp generation to haskell-gadt, and an example in examples/gadt-transfer 2011-03-05 22:25:03 +00:00
aarne
14f11bb2b9 revived GADT generation 2011-03-04 17:05:40 +00:00
aarne
88a0790f32 fixed a variable refreshing bug in the compiler 2011-03-04 16:44:30 +00:00
aarne
445a3aafeb Predef.error surfaces as error message in compilation and cc command 2011-02-25 17:01:10 +00:00
krasimir
71e0ec4d41 bugfix: GeneratePMCFG should initialize the lexicon to empty 2010-12-17 09:11:04 +00:00
aarne
a8a3c62f60 type checking of oper types with let expressions 2010-12-14 14:35:41 +00:00
aarne
9b5223a06b fixed the failure to partial-evaluate pre in right-associative context 2010-12-11 16:27:35 +00:00
aarne
dd6e0b1730 moved PGF.ToApi to GF.Compile.ToAPI 2010-12-07 18:05:13 +00:00
aarne
1f75143d6c printing option -api in the eb command 2010-12-06 10:49:38 +00:00
aarne
752a7b8030 format .gfm for multiple modules in the same file; includes lines with ;-separated words 2010-11-30 14:50:24 +00:00
hallgren
52eb1dcc37 Add builtin preprocessors. Avoid creating tmp file. Fix multipreprocessor bug.
* The gf command line options -preproc=mkPresent and -preproc=mkMinimal now
  refer to internal preprocessors equivalent to lib/src/mkPresent
  and lib/src/mkMinimal.

* The temporary file _gf_preproc.tmp is not created when running an
  internal preprocessor, unless there is an error, since errors messages
  refer to locations in the preprocessed file. (Possibly allowing the rgl
  build to be parallelized.)

* After running an external preprocessor, the temporary file is deleted,
  unless there was an error.

* (Bug fix) Before, when running more than one preprocessor, the same file name
  would be used for both input and output, e.g.,

	mkPresent _gf_preproc.tmp > _gf_preproc.tmp

  which would result in an empty file being processed. Now, the input and
  output files will always be different.
2010-11-26 18:25:29 +00:00
krasimir
115b4213d5 operations in the abstract syntax 2010-11-12 19:37:19 +00:00
krasimir
84736e5712 fixed typo in GeneratePMCFG.hs. fidFloat -> fidVar 2010-10-25 11:48:17 +00:00
krasimir
775e59dabe added explicit depth parameter to the parsing API and the corresponding command in the shell 2010-10-18 16:51:25 +00:00
krasimir
cb8795c222 refactor the API for random generation again. Now PGF contains probabilities in the abstract syntax 2010-10-02 13:03:57 +00:00
krasimir
fad0512c94 added missing case for GF.Compile.GeneratePMCFG.evalTerm 2010-08-30 07:54:53 +00:00
krasimir
b0e110cf4f native representation for HOAS in PMCFG and incremental type checking of the parse forest 2010-08-09 10:10:08 +00:00
krasimir
95f1d40c56 report type errors in the shell from command "p" 2010-07-07 12:23:21 +00:00
krasimir
710b8f1bf7 the abstract syntax for Predef.gf is now hard-coded in AppPredefined.hs 2010-07-01 15:38:16 +00:00
krasimir
e0231cbf5b reorganize the modules in GF.Compile.* 2010-07-01 14:19:32 +00:00
krasimir
5ae7be358d redesign the open-literals API 2010-07-01 08:51:59 +00:00
krasimir
706b215fce compilation of pattern matching using the algorithm of Lennart Augustsson. Not used yet 2010-06-30 16:00:47 +00:00
krasimir
eb0bd54e68 rename isLiteralFCat -> isPredefFId, fcat(String|Int|Float) -> fid(String|Int|Float) 2010-06-30 07:40:22 +00:00
krasimir
a6b8c11905 fix the compilation of literal categories in GeneratePMCFG.hs 2010-06-22 11:29:20 +00:00
krasimir
7e9b1ebfa4 addFCoercion -> addCoercion in GeneratePMCFG 2010-06-20 08:53:25 +00:00
krasimir
9995a834ae getFCats -> getFIds in GeneratePMCFG 2010-06-20 08:45:31 +00:00
krasimir
a77815e35a removed debugging code in GeneratePMCFG.hs 2010-06-20 08:30:00 +00:00
krasimir
992a7ffb38 Yay!! Direct generation of PMCFG from GF grammar 2010-06-18 12:55:58 +00:00
krasimir
5dfc9bbc0b the automatically generated printnames were just junks. Now we store printnames only if they are explicitly specified. 2010-06-18 10:19:05 +00:00
krasimir
d8b049fdf8 rename GF.Grammar.Predef.isPredefCat to isLiteralCat 2010-06-17 15:08:12 +00:00
krasimir
d6f32b3bcd dead code elimination for PGF. Note: the produced grammars will not work well with metavariables and high-order abstract syntax 2010-06-09 11:32:59 +00:00
krasimir
31cd91e67e fixed bug in the recompilation checker which caused the phrasebook to be recompiled each time 2010-06-08 18:57:50 +00:00
krasimir
002965336a bugfix for flag -no-recomp 2010-06-08 15:40:47 +00:00
krasimir
c3f4c3eba7 refactoring in GF.Grammar.Grammar 2010-05-28 14:15:15 +00:00