Commit Graph

95 Commits

Author SHA1 Message Date
kr.angelov bc35626489 Now the compiler maintains more precise information for the source locations of the different definitions. There is a --tags option which generates a list of all identifiers with their source locations. 2011-11-02 11:44:59 +00:00
hallgren f46593559a Remove configuration flag cclazy 2011-11-01 13:45:12 +00:00
hallgren 2a10c21ad9 Recording an alternative version of look in Compute/ConcreteLazy.hs
Commented out, causes problems in the greek example.
2011-10-25 18:50:07 +00:00
aarne f7dc299c87 qualification with real module name accepted, as in GF refman 2011-10-25 14:03:27 +00:00
aarne ffd9a93a80 use associativity to force more precompilation of pre expressions 2011-10-24 12:52:20 +00:00
hallgren a8b97caed4 Introduce an explicit error value in the Term type
This makes it easier to treat run-time errors (e.g. caused by calls to
Predef.error) in a way that is more typical for a lazy functional language.
2011-10-20 14:36:30 +00:00
hallgren ec346b16bb Compute/ConcreteLazy.hs: no need to reverse when looking up labels in records 2011-10-20 14:19:33 +00:00
hallgren 61c54d4490 AppPredefined.hs: more readable notation for the types of primitives 2011-10-20 14:17:37 +00:00
hallgren c2e7f89a0a 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 ce714fa723 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 117fe7ad70 GF.Compile.Coding: cleaner code
Refine function codeTerm into codeTerm, codeLTerm and codeLTerms.
2011-08-31 13:55:49 +00:00
hallgren 38db834a65 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 0325f7264d 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 3c848ad0b5 GrammarToPGF.hs: comment out unused imports 2011-08-30 12:02:32 +00:00
aarne b5d04181ba reload command in shell 2011-08-25 15:58:38 +00:00
aarne 22a079e8f1 commented Compute/Concrete with explanations 2011-08-22 17:08:07 +00:00
aarne 9023382c31 GenIP, GenRP in Extra and any_Quant in ExtraEng 2011-07-21 08:25:04 +00:00
aarne 7d3949a270 Predef functions toUpper, toLower, isUpper 2011-06-02 16:10:46 +00:00
aarne 58acad5689 generate Eq instance for GADT 2011-04-06 12:27:31 +00:00
aarne 393976d889 fixed the printing of predefined and list categories in haskell=gadt 2011-04-06 07:45:35 +00:00
aarne afbfbaa73a 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 87aa41d503 make later flags take priority over earlier ones in PGF generation 2011-03-12 11:22:21 +00:00
aarne 54feac5d26 added composOp generation to haskell-gadt, and an example in examples/gadt-transfer 2011-03-05 22:25:03 +00:00
aarne c834cb348c revived GADT generation 2011-03-04 17:05:40 +00:00
aarne 8fc455f22b fixed a variable refreshing bug in the compiler 2011-03-04 16:44:30 +00:00
aarne dd937731f6 Predef.error surfaces as error message in compilation and cc command 2011-02-25 17:01:10 +00:00
krasimir 2262c105ab bugfix: GeneratePMCFG should initialize the lexicon to empty 2010-12-17 09:11:04 +00:00
aarne 07d95b2b3f type checking of oper types with let expressions 2010-12-14 14:35:41 +00:00
aarne 54f04ecb5a fixed the failure to partial-evaluate pre in right-associative context 2010-12-11 16:27:35 +00:00
aarne 1b24f4490c moved PGF.ToApi to GF.Compile.ToAPI 2010-12-07 18:05:13 +00:00
aarne a3ae8cf696 printing option -api in the eb command 2010-12-06 10:49:38 +00:00
aarne 3506b313c1 format .gfm for multiple modules in the same file; includes lines with ;-separated words 2010-11-30 14:50:24 +00:00
hallgren 92da4008e0 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 fe1205059b operations in the abstract syntax 2010-11-12 19:37:19 +00:00
krasimir 53306414b6 fixed typo in GeneratePMCFG.hs. fidFloat -> fidVar 2010-10-25 11:48:17 +00:00
krasimir 51452d4ef0 added explicit depth parameter to the parsing API and the corresponding command in the shell 2010-10-18 16:51:25 +00:00
krasimir be9ad26aea refactor the API for random generation again. Now PGF contains probabilities in the abstract syntax 2010-10-02 13:03:57 +00:00
krasimir d3e7095ceb added missing case for GF.Compile.GeneratePMCFG.evalTerm 2010-08-30 07:54:53 +00:00
krasimir 9aa7c88c5a native representation for HOAS in PMCFG and incremental type checking of the parse forest 2010-08-09 10:10:08 +00:00
krasimir 8d63bf8d79 report type errors in the shell from command "p" 2010-07-07 12:23:21 +00:00
krasimir 51e4f36b80 the abstract syntax for Predef.gf is now hard-coded in AppPredefined.hs 2010-07-01 15:38:16 +00:00
krasimir 527efbef9d reorganize the modules in GF.Compile.* 2010-07-01 14:19:32 +00:00
krasimir e92151caf8 redesign the open-literals API 2010-07-01 08:51:59 +00:00
krasimir 3a5f193fd7 compilation of pattern matching using the algorithm of Lennart Augustsson. Not used yet 2010-06-30 16:00:47 +00:00
krasimir 97a9ddb4a7 rename isLiteralFCat -> isPredefFId, fcat(String|Int|Float) -> fid(String|Int|Float) 2010-06-30 07:40:22 +00:00
krasimir ccf4c037a6 fix the compilation of literal categories in GeneratePMCFG.hs 2010-06-22 11:29:20 +00:00
krasimir 8433afdac9 addFCoercion -> addCoercion in GeneratePMCFG 2010-06-20 08:53:25 +00:00
krasimir f3f1320416 getFCats -> getFIds in GeneratePMCFG 2010-06-20 08:45:31 +00:00
krasimir fe6e90e6ce removed debugging code in GeneratePMCFG.hs 2010-06-20 08:30:00 +00:00
krasimir 2069d9c9eb Yay!! Direct generation of PMCFG from GF grammar 2010-06-18 12:55:58 +00:00