Commit Graph
100 Commits
Author SHA1 Message Date
hallgren 0b24415469 Don't make noexpand the default with -fcclazy
This reverts the previous change. Not preprocessing opers turns out to make a
difference in what needs to be mentioned in restricted inheritance/imports.
2011-09-09 16:17:33 +00:00
hallgren 8e6eecaf87 Make -fcclazy (the new faster lazy compute_concrete) the default. Bump version number to 3.2.9 2011-09-09 13:54:19 +00:00
hallgren 6a5972e00d Make noexpand the default optimization package when configuring with -fcclazy 2011-09-09 13:50:38 +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 55538c2b7e GF.Grammar.Macros: simplify composOp and composSafeOp 2011-09-07 17:11:52 +00:00
hallgren 9b44a2248e Make the -fcclazy configuration option visible in the build info in the GF Shell welcome message 2011-09-05 15:20:39 +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 539c49c23b GF.Grammar.*: generalized the type of some functions that can not fail from the Err monad to arbitrary monads 2011-09-01 16:35:53 +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 42e2c68d8e GF.Infra.Modules: restore module dependency order invariant
It is needed by greatestResource (and similar functions, presumably).
So keep both the list and the finite map of modules. This slows down some
things, but the compilation of PhrasebookFin.pgf benefits from it.
To be continued...
2011-08-30 20:20:45 +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 109c55e2fb GF.Grammar.Lookup: added function lookupQIdentInfo
+ Avoids some code duplication by combinging lookupModule and lookupIdentInfo.
+ Also removed lookupIdentInfo from export list, since it is not used anywhere
  else.
2011-08-30 14:53:11 +00:00
hallgren 9a4f3cec9c PatternMatch.hs: commented out suspicious unused function varsOfPatt 2011-08-30 12:13:50 +00:00
hallgren 3c848ad0b5 GrammarToPGF.hs: comment out unused imports 2011-08-30 12:02:32 +00:00
hallgren be1830479f pgf-http: fix a bug that caused "+" to be treaded as " " in PGF service requests URLs.
This was a bug in my workaround for a bug in the httpd-shed package. It
made it impossible to use the glue token "&+" for Turkish input in the minibar,
for example.
2011-08-25 16:58:17 +00:00
hallgren 249ce61701 pgf-service: apply the OpenMath LaTeX function only when linearizing to a
concrete language whose name ends with LaTeX.
This change also avoids duplicating output and, in addition to the linearize
command, applies the transfer also when using the linearizeAll command.
2011-08-24 09:37:55 +00:00
hallgren 42ccbf2d8e pgf-service: add Jordis transfer function for OpenMath LaTeX output 2011-08-23 16:25:00 +00:00
hallgren 6667e5faf9 minibar: documentation update 2011-08-22 17:55:47 +00:00
hallgren 0079c49a78 minibar: quick fix to allow literals to be entered.
If you press Enter, the current word will be accepted, even if there are no
matching completions.
(You can now use names of people when constructing sentences in the Letter
grammar, for example.)
2011-08-22 17:03:47 +00:00
hallgren 51994104de pgf service: external service hook: always format the output as a JSON string 2011-08-22 16:10:56 +00:00
hallgren 3e2f768072 pgf service: added a hook for external services
This is really reinventing CGI, people should learn how to write CGI scripts
instead...
TODO: better handling of temporary files
2011-08-22 15:34:44 +00:00
hallgren d0dad690e4 minibar: documentation fixes 2011-08-21 21:35:14 +00:00
hallgren 2dc037fc72 minibar: bug fix for "Try Google Translate" button 2011-08-19 13:56:12 +00:00
hallgren 1b386e01ba gfse: fix an issue with Webkit browers
For lin and lincats with empty RHSs, there was nothing to point to to make the
edit button (the "%" button) appear in browsers based on Webkit
(Safari, Chrome).
2011-08-17 15:41:57 +00:00
hallgren 3eab4e3ae1 minibar: adding pgf_offline.js
This file exports the same PGF runtime interface as pgf_online.js but calls
the hs2js translation of the PGF runtime library (which is not included
in darcs).
2011-08-16 16:29:51 +00:00
hallgren ab774d3964 gf.cabal: bump version to 3.2.8-darcs
This is just to make it easier to tell who has the latest version at the 
summer school. There has been some bug fixes in gf itself and some significant
additions to the RGL since 3.2 was released.

Also explicitly require Alex 2.x. The recently released Alex 3.0 has backwards
incompatible changes and does not work. GF/Grammar/Lexer.x should probably
be modified to support both Alex 2.x and Alex 3.0...
2011-08-12 14:02:24 +00:00
hallgren 9820b2640b minibar: documentation and API work 2011-08-11 16:28:49 +00:00
hallgren dabeddb3ca minibar: some functions were in the wrong file 2011-08-11 14:56:34 +00:00
hallgren b4c0509f77 minibar: more documentation (in minibar-api.html) 2011-08-09 15:57:40 +00:00
hallgren 61da350167 minibar: refactoring for improved modularity
Two smaller objects have been factored out from the Minibar object:
Input and Translations. These have been placed in two separate files:
minibar_input.js and minibar_translations.js. Some common auxiliary functions
have also been moved to a separate file: minibar_support.js
2011-08-08 17:28:24 +00:00
hallgren 77132183fe minibar: resolve conflict 2011-08-08 14:08:55 +00:00
hallgren b77e95abf5 minibar: improve pgf_online.js
pgf_online.js has been simplified and generalized to support the full
GF Web Service API. The changes are backwards incompatible, unfortunately.
The documentation and minibar.js have been updated accordingly.
2011-08-03 15:21:38 +00:00
hallgren 1a25f04303 minibar: small code and documentation tweaks 2011-08-03 14:24:47 +00:00
hallgren e60b4e97c0 gfse: added links to download PGF files for user's grammars 2011-08-01 15:01:14 +00:00
hallgren 29e9b30b47 gfse: add missing file share.html to darcs
Also fix bug in share.html by adding cloud.js to the list of loaded JavaScript
files.
2011-08-01 14:27:29 +00:00
hallgren c78328fd86 gfse: some correctness checks for concrete syntax
The editor now calls the GF server to check the syntax of expressions that
are part of concrete syntax (except for parameter types).
This is currently done by using the cc command of the GF shell, which puts
some unnecessary restricitons on operation definitions...
2011-07-29 15:44:19 +00:00
hallgren 97d7bdd6c0 gfse: refactoring
Factor out functions that interface to the old cloud service (upload.cgi) 
from editor.js into cloud.js. Merge changes from editor2.js into editor.js and
factor out functions that interface to gf -server into clouds2.js.
2011-07-29 13:45:37 +00:00
hallgren 21e6ebfe26 gfse: about: added a note that each grammar has a unique identity independent of its name 2011-07-26 15:03:33 +00:00
hallgren cce6b793b1 gfse: various small improvements 2011-07-25 19:21:46 +00:00
hallgren e84ef142d7 gfse: new section "Grammars in the cloud" in about.html 2011-07-07 16:59:37 +00:00
hallgren 5f624dce85 gfse: grammars in the cloud, still primitve, but good enough to be installed on the server, I think 2011-07-07 16:57:59 +00:00
hallgren 8e47fa6d88 gfse: grammars in the cloud, work in progress
Cloud merging: when sharing grammars between two devices that previously each
had separate grammar directoies on the server, clean up one of the directories
and make it a symbolic link to the other.
2011-07-07 13:30:56 +00:00
hallgren 7b8828ae0a gfse: grammars in the cloud, work in progress 2011-07-06 16:55:42 +00:00
hallgren e4e5ca23d3 gfse: initial support for grammars in the cloud
This lets the user access the same set of grammars from multiple devices.

Sharing grammars between multiple users is possible but discouraged at the
moment. There is no version handling, so concurrent editing of the same grammar
by different users might result in one user overwriting changes made by
another user. (The same goes for cuncurrent editing on multiple devices by
a single user, of course.)
2011-06-08 15:29:50 +00:00
hallgren ca16782d06 minibar support.js: add function ajax_http_post for posting FormData 2011-06-21 16:10:44 +00:00
hallgren b80696f958 gf-server: make pgf-service work the Apache mod_fastcgi
pgf-service now appears to works with Apache mod_fastcgi (under Mac OS X) in
addition to lighttpd.

One difference appears to be that while lighttpd passes the name of the PGF
file in the SCRIPT_FILENAME variable, Apache passes it in PATH_TRANSLATED.
But perhaps this depends on exactly how the fastcgi service is configured.
The following is what I added to the Apache configuration file to test this:

	<Directory /Library/WebServer/Documents/fcgi-bin>
	  SetHandler fastcgi-script
	  Options +ExecCGI
	</Directory>
	Action pgf-service /fcgi-bin/pgf-service
	AddHandler pgf-service .pgf
2011-06-21 15:49:31 +00:00
hallgren 4b86179f12 gf-server: enable -rtsopts when compiling with ghc>=7.0 2011-06-21 15:45:13 +00:00
hallgren 1780b14d3a gf-server.cabal: a separate flag for the content service
* Use cabal install -ffastcgi to compile the fastcgi server.
  * Use cabal install -fcontent to compile the content service (off by default,
    currently broken)
  * Use both flag to compile both.
2011-06-21 15:38:57 +00:00
hallgren ae83ed677c gfse: fix a problem in browsers where "class" is a reserved keyword 2011-05-07 17:36:49 +00:00
hallgren 7f91547576 gfse: you can now add concrete syntax for arbitrary languages
Before, you had to pick a language from a list of supported languages, but now
you can also pick Other and change the language code afterwards.
2011-05-06 15:24:45 +00:00
hallgren cfc60feeab Ctrl-C shouldn't terminate the GF shell
This quick fix should make Ctrl-C in the GF shell behave more like it does in
other shells: even if no command is running, Ctrl-C now just gives you a new
prompt instead of terminating the shell.
2011-04-20 14:30:49 +00:00
hallgren 0df6ae1575 GFI.hs: some refactoring for readability
Also some minor changes in how Ctrl-C is handled and how CPU time is measured.
2011-04-15 15:05:44 +00:00
hallgren ac54480e82 gfse: use "gf -server" mode instead of upload.cgi
Work in progress on making the online grammar editor use the new "gf -server"
mode instead of the old upload.cgi script. A first benefit is that the
editor now calls the server to check the syntax of lin & lincat definitions.
(But the links to minibar/gfshell/quiz are not available at the moment.)
2011-04-13 15:30:42 +00:00
hallgren 3488632558 Added a preliminary "gf -server" mode.
The command "gf -server" now starts a simple HTTP server on port 41295,
providing a simple web API to the GF compiler. It currently support the
follwing operations:

  * creating new temporary directories for grammar uploads,
  * uploading grammars files for use in the GF shell,
  * executing GF shell commands, and
  * accessing static files.

This means that GF now depends on some additional networking related packages,
but they should be available and easy to install on all platforms. There is
also a new configuration flag "server" in gf.cabal, so GF will be compiled
without support for server mode if the extra packages are unavailable.

Note that running gf -server while connected to the internet can be a security
risk. To prevent unauthorized access to the rest of the system, it is
advisable to run the server in GF_RESTRICTED mode and as a user with suitably
restricted file permissions.
2011-04-13 14:58:01 +00:00
hallgren c65f4cdb5c Show configuration options as part of build info
The GF shell welcome message will now include something like

	This is GF version 3.2.1-darcs. 
	Built on darwin/i386 with ghc-7.0, flags: interrupt

where a list of enabled configuration flags are included on the last line.

This is implemented in GF.Infra.BuildInfo by consulting the CPP macros
defined by the respective option in gf.cabal. For this to work,
GF.Infra.BuildInfo obviously has to be updated when new flags are added to
gf.cabal or if the CPP macros are renamed.

(Also, I suspect that if you reconfigure with different flags and rebuild GF
without cleaning first, the BuildInfo module will not be recompiled,
resulting in a misleading welcome message...)
2011-04-13 14:45:21 +00:00
hallgren dbea5b1a19 GF.Infra.UseIO: add functions readBinaryFile & writeBinaryFile 2011-04-13 14:44:18 +00:00
hallgren b2ffdd59eb minibar: fix typo 2011-04-11 13:03:46 +00:00
hallgren ff870aa8f9 minibar: small documentation updates and corrections 2011-04-11 13:00:52 +00:00
hallgren e10b11a1f0 GF shell restricted mode: found one more writeFile that should be restricted 2011-04-08 13:20:50 +00:00
hallgren 1e1d91056d avoid warning from ghc-7.0
Warning: -fglasgow-exts is deprecated: Use individual extensions instead
2011-04-06 13:57:19 +00:00
hallgren 7f830ec5df avoid warning from ghc-7.0
Warning: -fglasgow-exts is deprecated: Use individual extensions instead
2011-04-06 13:43:29 +00:00
hallgren 7416c9acb3 GFI.hs: refactoring to add a function for executing a single GF shell command.
The intention is to use the new function to implement a web service API to
the GF shell.
2011-04-04 20:06:55 +00:00
hallgren 1677df78c9 Add build info to the GF shell welcome message 2011-04-04 19:52:07 +00:00
hallgren 544010b36f gfse: somewhat simplified configuration/installation 2011-03-28 15:04:43 +00:00
hallgren 45547df48c gfse: added an alternate style sheet with the MOLTO color scheme 2011-03-28 14:46:15 +00:00
hallgren 22a70d2608 minibar: don't force focus to the typed input field after every word
On touch-based devices, the on-screen keyboard kept popping up after every word,
which was very annoying if you were entering a sentence by tapping on the
magnets.
2011-03-22 15:17:48 +00:00
hallgren b3e5386d36 minibar: add trailing slash in suggested grammar URLs 2011-03-22 15:12:54 +00:00
hallgren 9fdcc97716 gfse: documentation fixes, links to MOLTO meeting slides and compiler API document 2011-03-09 11:11:47 +00:00
hallgren f30e07f5f8 gfse: create a new concrete syntax by copying an existing one
When adding a new concrete syntax to a grammar, the currently open concrete
syntax will be copied. If the abstract syntax is currently open, the new
concrete syntax will start out empty.
2011-03-07 17:52:15 +00:00
hallgren d46c7ee90d gfse: link back to the editor from the upload page 2011-03-07 16:05:55 +00:00
hallgren 2c6c85974e gfse: minor layout/formatting variation 2011-03-06 10:19:17 +00:00
hallgren 697e96f539 minibar: add icon for word alignment button 2011-03-03 19:19:47 +00:00
hallgren a0cd2c232b minibar: add a button to display word alignment 2011-03-03 19:18:09 +00:00
hallgren affdcf421e GF shell restricted mode
By setting the environment variable GF_RESTRICTED before starting GF, the shell
will be run in restricted mode. This will prevent the GF shell from starting
arbitrary system commands (most uses of System.Cmd.system are blocked) and
writing arbitrary files (most commands that use writeFile et al are blocked).

Restricted mode is intended minimize the potential security risks involved
in allowing public access to the GF shell over the internet. It should be used
in conjuction with system level protection mechanisms (e.g. file permissions)
to make sure that a publicly acessible GF shell does not give access to parts
of the system that should not be publicly accessible.
2011-03-03 15:42:57 +00:00
hallgren 65e1ea2fc4 gf.cabal: bump version number, add source repository info
I changed the version number to 3.2.1-darcs.
I think the version number of the current version from darcs should always
include the "-darcs" suffix (or "-current" perhaps?). The suffix should be
removed only momentarily when making an official release.
2011-03-03 15:24:43 +00:00
hallgren da740b51c2 minibar/support.js: recognize relative URLs as locations on the same server
This means that the relative grammar directory location in the default
configuration will result in AJAX requests rather than the less efficient
JSONP requests.
2011-03-01 14:47:20 +00:00
hallgren a27f58d6ae minibar: make the feedback form work in the generic minibar
It is still disabled by default, since some manual configuraiton of
feedback.cgi is required.
2011-03-01 13:46:00 +00:00
hallgren aad6e864b9 gfse: fix missing startcat flag bug + documentation updates 2011-02-28 16:47:25 +00:00
hallgren fe9eaf0ddd gfse: fix persmission problem in upload.cgi 2011-02-28 15:46:42 +00:00
hallgren 164018b6c0 gfse: include a -path flag to find rgl modules 2011-02-28 15:45:55 +00:00
hallgren 10f2f3e7d7 gfse: support for opening RGL modules 2011-02-28 14:18:20 +00:00
hallgren fc1471717c gfse: minor documentation and style improvements 2011-02-28 12:41:05 +00:00
hallgren b2917c5652 gfse: allow definitions to be reordered by drad-and-drop 2011-02-22 16:04:49 +00:00
hallgren 6173291ec1 gfse: fix typos 2011-02-18 14:51:06 +00:00
hallgren e2096fef35 gfse: document that grammars can be uploaded and tested in the GF shell, the minibar and the translation quiz 2011-02-18 14:47:20 +00:00
hallgren f0a80d0ea6 gfse: updated screen shots 2011-02-18 14:46:18 +00:00
hallgren 1ee4844fca gfse: support for linking to the translation quiz 2011-02-18 11:44:05 +00:00
hallgren 69e7262286 gfse: some small fixes
+ 'make install' to copy all required files to the server
+ configuration options and error checks in upload.cgi
2011-02-17 17:35:22 +00:00
hallgren 1715f683dc Adding the prototype GF editor for simple multilingual grammars 2011-02-17 14:43:41 +00:00
hallgren b7e13dafa1 Adding the prototype GF editor for simple multilingual grammars 2011-02-17 14:42:16 +00:00
hallgren 60980e40e4 Adding the prototype GF editor for simple multilingual grammars 2011-02-17 14:38:46 +00:00
hallgren bfc91294e1 minibar: a small change to make easy to select an alternate grammar directory 2011-01-27 22:23:15 +00:00
hallgren 95055e8cd8 Translation Quiz: fix for race condition on page load 2011-01-26 16:21:23 +00:00
hallgren ad5316279b Translation quiz: improvements from Elnaz 2011-01-25 11:58:49 +00:00
hallgren 57d150c970 New item. GF is part of the CLT Toolkit 2011-01-22 14:26:15 +00:00
hallgren 60d16b8236 Fix broken links in GF Quick Reference 2011-01-22 14:14:00 +00:00
hallgren fa275c3955 News: Phrasedroid on the Android Market 2011-01-18 13:13:02 +00:00
hallgren 81a1368a95 style.css: remove border from linked GF logotypes 2011-01-18 12:59:55 +00:00
hallgren 1f9c15ea23 Release notes: added a link to documentation of the bracketed string data structure 2011-01-12 13:01:23 +00:00