Commit Graph
100 Commits
Author SHA1 Message Date
hallgren 045eeeb280 haskell-bind: add a cabal file and examples/pgf-shell.hs
* The haskell-bind.cabal file makes it easy to build the haskell binding and
  use it in ghci.
* pgf-shell.hs is a simple example of how to use the haskell binding.
2014-01-17 14:02:35 +00:00
hallgren b0a40d82b9 haskell-bind: change the type of CRuntimeFFI.getConcr
Change the type of getConcr from

    getConcr :: PGF -> Language -> Concr

to

    getConcr :: PGF -> Language -> Maybe Concr

This is to prevent programs from crashing later if you try to select a
concrete syntax that is not present in a grammar.
2014-01-17 13:58:48 +00:00
hallgren 41e3b28bfa examples/Phasebook/Makefile2: Lativan is fixed, include it again 2014-01-13 14:18:32 +00:00
hallgren ac33c8a851 examples/Phasebook/Makefile2: Lativan is broken, omit it for now
Also rewrote Makefile2 in a more compact way.
2014-01-10 13:26:42 +00:00
hallgren ed3d30e3d1 Check file datestamp before creating PGF file when compiling grammars
When running a command like

	gf -make L_1.gf ... L_n.gf

gf now avoids recreating the target PGF file if it already exists and is
up-to-date. 

gf still reads all required .gfo files, so significant additional speed
improvements are still possible. This could be done by reading .gfo files
more lazily...
2014-01-09 17:30:24 +00:00
hallgren 768d9de668 Check file datestamps before unioning PGF files (fix)
Also check that no additional output formats have been selected.
2014-01-09 15:14:35 +00:00
hallgren ed1e662dea Check file datestamps before unioning PGF files
When running a command like

 gf -make -name=T L_1.pgf ... L_n.pgf

gf now checks if T.pgf exists and is up-to-date before reading and computing
the union of the L_i.pgf files.

The name (T) of the target PGF file has to be given explicitly for this to work,
since otherwise the name is not known until the union has been computed.
If the functions for reading PGF files and computing the union were lazier,
this would not be necessary...
2014-01-09 14:18:21 +00:00
hallgren d8d78b6187 Release note updates and some other minor things 2013-12-18 16:22:59 +00:00
hallgren 52494afc50 PGFtoPython: add Python translations for nonExist, BIND and SOFT_BIND
Someone who is familiar with the Python translation should check this.
2013-12-18 15:31:39 +00:00
hallgren 4012fa15dd GF home page: use the SVG version of the GF logo in browsers that support it
It looks better on high resolution screens.
2013-12-18 12:01:15 +00:00
hallgren e9e919e6e3 src/server/gf-server.cabal: compile it as a common library + executables 2013-12-17 15:55:14 +00:00
hallgren 9c43c2bae3 examples/phrasebook/Makefile2: Finnish needs a larger stack 2013-12-17 15:13:44 +00:00
hallgren e0481e3b8a Add backward compatibility for reading old PGF files
Some backwards incompatible changes were made to the PGF file format after
the release of GF 3.5. This patch adds a module for reading PGF files in the
old format.

This means that old PGF files on the grammaticalframework.org server will
continue to work after we install the latest version of GF.
2013-12-17 13:27:37 +00:00
hallgren 2b16962835 GF.Compile.ReadFiles: reduced code duplication 2013-12-16 14:04:57 +00:00
hallgren 8455435b75 examples/phrasebook/Makefile2: remove duplicated rule 2013-12-16 13:41:29 +00:00
hallgren 4811de89a4 GF home page: add a link to Grégoire's GF build status page
The link shows the current build status.
2013-12-12 20:54:59 +00:00
hallgren dd1b474a22 testsuite: fix test of generate_trees
There were two differences between the current output and the old gold file: 

  1. The trees are no longer generated with increasing depth
  2. The meaning of the -depth flag has changed: for example, 
     "gt -cat=Nat -depth=1" used to generate only "zero",
     now you also get "succ zero".
2013-12-10 16:49:40 +00:00
hallgren 953c6e8fb5 testsuite: reduced the number of failing tests from 25 to 13
Some tests may fail on Windows because of \ instead of / in paths.
2013-12-06 16:01:13 +00:00
hallgren a98f4aa4be Show relative file paths in error messages
This is to avoid one trivial reason for failures in the test suite.
2013-12-06 15:43:34 +00:00
hallgren 71c1741046 GF.Compile.CheckGrammar: add source path to error message for circular definitions 2013-12-06 13:46:59 +00:00
hallgren d6974a4065 GF shell: fix help text for generate_trees
Trees are not generated with increasing depth.
2013-12-06 13:45:12 +00:00
hallgren f5cda1e6a3 testsuite: Use Cabal's new test suite interface
* The old way: a user hook in Setup.hs
  * The new way: specify it in gf.cabal
  * The test suite is now called gf-tests, and it runs testsuite/run.hs.
  * You can run it manually with 'runhaskell testsuite/run.hs'. It also runs,
    together with rgl-tests, when you do 'cabal test'
  * Currently only 9 of 34 tests pass. Many failures have silly causes:
    - Error messages that look slightly different
    - Same output but in a different order
    - Absolute paths in output
2013-12-03 17:13:39 +00:00
hallgren 6b3ba6d3ba testsuite: use forward slashes in paths 2013-12-03 16:59:33 +00:00
hallgren 91d8bd8e10 examples/phrasebook/Makefile2: Romanian needs a larger stack 2013-11-29 17:34:09 +00:00
hallgren 7d1c011389 Commment code and options relating to the old partial evaluator
This means that the -old-comp and -new-comp flags are not recognized anymore.

The only functional difference is that printnames were still normalized with
the old partial evaluator. Now that is done with the new partial evaluator.
2013-11-29 16:26:49 +00:00
hallgren 729d04051a Minor release/download/developer doc changes 2013-11-29 16:04:52 +00:00
hallgren 7ffdfe9b3a Move typePredefined from GF.Compile.Compute.AppPredefined to GF.Compile.TypeCheck.Primitives
Also move the list of primitives
2013-11-29 15:47:26 +00:00
hallgren 0a59f95d92 Move checkPredefError from GF.Compile.Compute.ConcreteLazy to GF.Grammar.Macros
Also simplified its type.
2013-11-29 14:43:01 +00:00
hallgren de33d7dd7c examples/foods: remove all -path flags
All languages n the Foods grammar compile fine with alltenses.
2013-11-29 13:03:19 +00:00
hallgren ead60581af GFI: adapt to character encoding changes
GF.Compile.Coding is not used any more.
2013-11-28 13:55:08 +00:00
hallgren 29b1607f93 SimpleEditor.Convert: adapt to recent character encoding changes
Things got simpler!
2013-11-28 13:27:45 +00:00
hallgren eea636966d Adding an alternate style for the GF home page 2013-11-27 15:32:25 +00:00
hallgren 3f57151cc3 Represent identifiers as UTF-8-encoded ByteStrings
This was a fairly simple change thanks to previous work on making the Ident
type abstract and the fact that PGF.CId already uses UTF-8-encoded
ByteStrings.

One potential pitfall is that Data.ByteString.UTF8 uses the same type for
ByteStrings as Data.ByteString. I renamed ident2bs to ident2utf8 and
bsCId to utf8CId, to make it clearer that they work with UTF-8-encoded
ByteStrings.

Since both the compiler input and identifiers are now UTF-8-encoded
ByteStrings, the lexer now creates identifiers without copying any characters.
**END OF DESCRIPTION***

Place the long patch description above the ***END OF DESCRIPTION*** marker.
The first line of this file will be the patch name.


This patch contains the following changes:

M ./src/compiler/GF/Compile/CheckGrammar.hs -3 +3
M ./src/compiler/GF/Compile/GrammarToPGF.hs -2 +2
M ./src/compiler/GF/Grammar/Binary.hs -5 +1
M ./src/compiler/GF/Grammar/Lexer.x -11 +13
M ./src/compiler/GF/Infra/Ident.hs -19 +36
M ./src/runtime/haskell/PGF.hs -1 +1
M ./src/runtime/haskell/PGF/CId.hs -2 +3
2013-11-26 16:12:03 +00:00
hallgren 9d7fdf7c9a Change how GF deals with character encodings in grammar files
1. The default encoding is changed from Latin-1 to UTF-8.

2. Alternate encodings should be specified as "--# -coding=enc", the old
   "flags coding=enc" declarations have no effect but are still checked for
   consistency.

3. A transitional warning is generated for files that contain non-ASCII
   characters without specifying a character encoding:

	"Warning: default encoding has changed from Latin-1 to UTF-8"

4. Conversion to Unicode is now done *before* lexing. This makes it possible
   to allow arbitrary Unicode characters in identifiers. But identifiers are
   still stored as ByteStrings, so they are limited to Latin-1 characters
   for now.

5. Lexer.hs is no longer part of the repository. We now generate the lexer
   from Lexer.x with alex>=3. Some workarounds for bugs in alex-3.0 were
   needed. These bugs might already be fixed in newer versions of alex, but
   we should be compatible with what is shipped in the Haskell Platform.
2013-11-25 21:12:11 +00:00
hallgren 3210a50648 examples/phrasebook: add Makefile2 for parallel grammar compilation
Makefile2 specificies the dependencies accurately enough that you can use
make's support for parallel compilation. Run

	make -f Makefile2 -j

to utilize all the cores in your computer to significantly speed up the
creation of Phrasebook.pgf.
2013-11-26 16:32:38 +00:00
hallgren bfea06561d examples/letter: convert grammar files to UTF-8 2013-11-26 12:52:05 +00:00
hallgren 24a10d20a0 GF home page: mention upcoming default character encoding change 2013-11-25 20:11:11 +00:00
hallgren cb27ed0a67 Setup.hs: avoid a problem with Cabal-1.18
In Cabal-1.18, the build command takes some new arguments. The Setup.hs script
should not die if these are present.
2013-11-25 20:03:57 +00:00
hallgren 9541668f76 Document the upcoming default character encoding change in the release notes 2013-11-25 19:47:05 +00:00
hallgren 4a82481a1f examples/phrasebook: adding --# -coding=latin1 to 18 modules
Adding coding pragmas
  
	--# -coding=latin1
    
so that grammars will continue to work when we change the default character
encoding to UTF-8.
2013-11-22 17:47:50 +00:00
hallgren 9c479393f6 examples/foods: add --# -coding=latin1
Adding coding pragmas

	--# -coding=latin1

so that grammars will continue to work when we change the default character
encoding to UTF-8.
2013-11-22 17:21:36 +00:00
hallgren 260c0dfedc Some refactoring in GF.Compile and GF.Compile.GetGrammar
Move source transcoding function GF.Compile to GF.Compile.GetGrammar, in
preparation for doing transcoding before lexing.
2013-11-21 16:27:26 +00:00
hallgren fe065b5ee4 Some more monadic lifting changes 2013-11-21 15:01:04 +00:00
hallgren 308421789a Removed some code duplication in GF.Compile.Update 2013-11-20 01:26:41 +00:00
hallgren 018c9838ed Reduced clutter in monadic code
+ Eliminated vairous ad-hoc coersion functions between specific monads 
  (IO, Err, IOE, Check) in favor of more general lifting functions
  (liftIO, liftErr).
+ Generalized many basic monadic operations from specific monads to
  arbitrary monads in the appropriate class (MonadIO and/or ErrorMonad),
  thereby completely eliminating the need for lifting functions in lots
  of places.

This can be considered a small step forward towards a cleaner
compiler API and more malleable compiler code in general.
2013-11-20 00:45:33 +00:00
hallgren ddac5f9e5a GF shell: improved system_pipe (aka "?") command
1. No temporary files are created.

2. The output of a system command is read lazily, making it feasible to 
   process large or even infinite output, e.g. the following works as
   expected:

	? "yes" | ? "head -5" | ps -lextext
2013-11-19 15:18:58 +00:00
hallgren 982befac20 gfse: re-enable example-based grammar construction 2013-11-14 12:54:25 +00:00
hallgren fa4c327463 Fix Issue 60: Weird output when executing system commands from the gf shell
The system_pipe (aka "?") command creates a temporary file _tmpi containing
the input of the system command. It *both* appends _tmpi as an extra argument
to the system command line *and* adds an input redirection "< _tmpi". (It
also uses and output redirection "> _tmpo" to captures the output of the
command.)

With this patch, the _tmpi argument is no longer appended to the command line.
This allows system_pipe to work with pure filters, such as the "tr" commands,
but it will no longer work with commands that require an input file name.
(It is possible to use write_file instead...)

TODO: it would also be fairly easy to eliminate the creation of the _tmpi and
_tmpo files altogether.
2013-11-12 18:07:38 +00:00
hallgren 709b2bb067 Fix Issue 68: Cannot use an overloaded operator in table defined using square brackets
Add proper type checking of course-of-values tables:

 + Make sure that all subterms have the same type.
 + Resolve overloaded operators.

Note though that the GF book states in C.4.12 that the "course-of-values
table [...] format is not recommended for GF source code, since the
ordering of parameter values is not specified and therefore a
compiler-internal decision."
2013-11-12 13:55:38 +00:00
hallgren 31d7a9f73c GF.System.Chatch: remove redundant #include 2013-11-12 13:51:11 +00:00
hallgren b111b476a7 Fix Issue 41: "," in context-free rules causes parsing failure
The CF parser in GF.Grammar.CF assigns function names to the rules, but they
are not always unique, causing rules to be dropped in the follwing CF->GF
conversion. So a pass has been added before the CF->GF conversion, to make
sure that function names are unique.

A comment says "rules have an amazingly easy parser", but the parser looks
like quick hack. It is very sloppy and silently ignores many errors, e.g.
- Explicitly given function names should end with '.', but if the do not, the
  last character in the function name is silently dropped.
- Everything following a ';' is silently dropped.
2013-11-11 16:50:43 +00:00
hallgren 47e04656fb Fix issue 61: GF shell cannot parse a system command ending with a space
Trailing spaces caused the command line parse to be ambiguous, and
ambiguous parses were rejected by function readCommandLine, causing
the cryptic error message "command not parsed".
2013-11-11 15:13:24 +00:00
hallgren 667a1c0ef0 minibar: fix a mistake the previous bracket fix 2013-11-06 16:54:21 +00:00
hallgren 72a58a8114 minibar: adapt to changed bracket structure in linearization output 2013-11-06 16:45:24 +00:00
hallgren 48660c219a Make PGF.Tree internal
The only use of PGF.Tree outside the PGF library was in GF.Command.Commands,
and it was eliminated by using PGF.Expr directly instead.
PGF.Paraphrase still uses PGF.Tree.
2013-11-06 14:29:17 +00:00
hallgren 7a41b45f13 Remove PGF.Signature
This module should not be part of the public PGF library API, and it was only
used in GF.CompileToAPI, so the code was moved there. The module defined
constFuncs and syntaxFuncs, but only syntaxFuncs was used.
2013-11-06 13:27:29 +00:00
hallgren 3814841d7d Eliminate mutual dependencies between the GF compiler and the PGF library
+ References to modules under src/compiler have been eliminated from the PGF
  library (under src/runtime/haskell). Only two functions had to be moved (from
  GF.Data.Utilities to PGF.Utilities) to make this possible, other apparent
  dependencies turned out to be vacuous.

+ In gf.cabal, the GF executable no longer directly depends on the PGF library
  source directory, but only on the exposed library modules. This means that
  there is less duplication in gf.cabal and that the 30 modules in the
  PGF library will no longer be compiled twice while building GF.

  To make this possible, additional PGF library modules have been exposed, even
  though they should probably be considered for internal use only. They could
  be collected in a PGF.Internal module, or marked as "unstable", to make
  this explicit.

+ Also, by using the -fwarn-unused-imports flag, ~220 redundant imports were
  found and removed, reducing the total number of imports by ~15%.
2013-11-05 13:11:10 +00:00
hallgren 83a10ce25a Add a cabal flag to use the standard binary package
The standard binary package has improved efficiency and error handling [1], so
in the long run we should consider switching to it. At the moment, using it is
possible but not recommended, since it results in incomatible PGF files.

The modified modules from the binary package have been moved from
src/runtime/haskell to src/binary.

[1] http://lennartkolmodin.blogspot.se/2013/03/binary-07.html
2013-10-31 15:43:12 +00:00
hallgren 5bc9e959d0 GF home page: comment out news from 2012-11 and older 2013-10-30 13:52:42 +00:00
hallgren bef74249cb release-next.t2t: add your notes for the next release of GF here
The file will be renamed when the release is made.
2013-10-30 13:44:10 +00:00
hallgren 9410c6b141 Functions merge trees into tries in the GF Shell and the PGF web service
* In the shell, the new command tt (to_trie) merges a list of trees into a
  trie and prints it in a readable way, where unique subtrees are marked with
  a "*" and alternative subtrees are marked with numbers.
* In the PGF web service, adding the parameter trie=yes to the parse and
  translate commands augments the JSON output with a trie.

Example to try in the shell:

	Phrasebook> p -lang=Eng "your son waits for you" | tt
2013-10-24 17:29:02 +00:00
hallgren c2e977c67a Commands.hs: fix a copy-paste error in the documentation of put_tree 2013-10-24 14:32:11 +00:00
hallgren 51bf4e0380 GF home page: update PGF library API link
GF 3.5 is now on Hackage and the automatic generation of Haddock documentation
succeeded for the first time in a long time!
2013-10-23 14:24:04 +00:00
hallgren 7c0936b7ce GF home page: minor style changes
+ Split the list of languages into several columns if space permits
  (in supported browsers, currently Firefox).
+ Limit the size of the GF logo to 75% of width the window. Looks better on
  small screens.
2013-09-29 16:25:16 +00:00
hallgren 95424190d1 Link to GF source code browser
And the summers chool and the Interactive map are not new anymore.
2013-09-23 13:07:24 +00:00
hallgren 9cbd28e9ce Comment out identifier refreshing code only used by the removed refresh pass 2013-09-20 16:36:24 +00:00
hallgren 021b5f06d3 Introduce type RawIdent; only 9 imports of Data.ByteString.Char8 remain
The fact that identifiers are represented as ByteStrings is now an internal
implentation detail in module GF.Infra.Ident. Conversion between ByteString
and identifiers is only needed in the lexer and the Binary instances.
2013-09-19 20:48:10 +00:00
hallgren 3d5b9bd1fd Make Ident abstract; imports of Data.ByteString.Char8 down from 29 to 16 modules
Most of the explicit uses of ByteStrings were eliminated by using identS,

	identS = identC . BS.pack 

which was found in GF.Grammar.CF and moved to GF.Infra.Ident. The function

	prefixIdent :: String -> Ident -> Ident

allowed one additional import of ByteString to be eliminated. The functions

	isArgIdent :: Ident -> Bool
	getArgIndex :: Ident -> Maybe Int

were needed to eliminate explicit pattern matching on Ident from two modules.
2013-09-19 18:23:47 +00:00
hallgren 8a3b97e6a5 Some code verbosity reduction 2013-09-10 14:19:11 +00:00
hallgren aa9280b287 Workaround for a problem with lock fields
This problem showed up after delaing eta expansion until just before partial
evaluation
2013-09-10 13:43:59 +00:00
hallgren b93f817058 new-comp: delay eta expansion until just before partial evaluation
This seems to work for the most part, but a problem showed up in WordsCat.gf in
the phrasebook.
2013-05-30 16:01:12 +00:00
hallgren bf5dfb2293 Nonlinear patterns in concrete syntax are now detected and reported as errors
Before, they were silently converted to linear patterns.
Nonlinear patterns in MorphoCat.gf, ParadigmsGre.gf and ParadigmsFin.gf have
been make linear by renaming pattern variables.
2013-09-09 19:52:08 +00:00
hallgren 3543cb7a16 partial evaluator: prettier complaint about nonlinears patterns 2013-09-09 16:23:01 +00:00
hallgren 990789eb91 partial evaluator: complain about nonlinear patterns 2013-09-09 15:53:14 +00:00
hallgren 83283b0d6a Fix an old name shadowing bug in concrete syntax by removing the refresh pass
The refresh pass does not correctly keep track of the scope of local variables
and can convert things like \x->(\x->x) x into \x1->(\x2->x2) x2. Fortunately,
it appears that the refresh pass is not needed anymore, so it has been removed.
2013-09-09 14:29:57 +00:00
hallgren d7916c1b08 Fix an old bug that prevented pattern matching agains values containg tables
The function GF.Grammar.PatternMatch.isInConstantForm returned False for all
tables, causing matchPattern to fail, claiming that "variables occur in" the
term if it contains tables.

This problem is several years old, confirmed present in GF 3.2.10 (Oct 2010).
2013-09-05 15:20:41 +00:00
hallgren d626a194de gf.cabal: version: 3.5-darcs 2013-09-02 20:27:47 +00:00
hallgren 018b43837b Demo page: added a link to Phrasomatic 2013-08-22 19:27:33 +00:00
hallgren 9efb9ce2fb gfse: don't use multiline text boxes everywhere, just for concrete syntax 2013-08-21 14:19:05 +00:00
hallgren 08766585e6 gf -server: fix for directory URLs without a trailing slash
When a browser requests a URL that refers to a directory, web server usually
redirect the browser to the same URL with a trailing '/' added, if one was not
already present. This is to prevent relative links in the returned document
from being interpreted relative to the parent directory instead of the current
document. This type of redirection was missing in gf -server.
2013-08-20 15:38:26 +00:00
hallgren 4e7be49927 download page: link to Inari's notes on installing GF on windows 2013-08-20 08:09:58 +00:00
hallgren 2aa14bfef8 gfse: only try to upload/compile grammars when browser is online
Show error message "Offline" if browser is offline.
2013-08-19 15:00:55 +00:00
hallgren 029f1d40e5 gfse: always open a resizable text box when editing concrete syntax
(Also fixed a broken link in gf-web-api-examples.html)
2013-08-19 14:19:18 +00:00
hallgren 8a81641b00 doc/gf-developers.t2t: add some notes on how to create .deb and .rpm packages 2013-08-08 12:51:24 +00:00
hallgren fad63a14be Better error messages for attempts to redefine predefined constants
Instead of just "syntax error", you now get e.g.

   PType is a predefined constant, it can not be redefined

This is a simple change in the parser.
2013-08-07 19:36:09 +00:00
hallgren 824fbee593 Update to version 3.5 in gf.cabal and debian/changelog 2013-08-06 15:42:57 +00:00
hallgren 4dd9a42f4a Move GF 3.5 download page into place. Update home page. 2013-08-06 15:32:20 +00:00
hallgren 2b3854b635 Finalize GF 3.4 download page and release notes 2013-08-06 15:28:53 +00:00
hallgren f0cded5f53 Next release will be GF 3.5, release notes moved to download/release-3.5.t2t.
Some more work on the 3.5 release notes and download page.
2013-08-05 12:38:38 +00:00
hallgren 3be7ab3f49 Update shell reference manual 2013-08-05 11:47:17 +00:00
hallgren 27da46a79d Cloud & PGF service: use Content-Type application/json for JSON output
This is in accordance with RFC 4627. http://tools.ietf.org/html/rfc4627
Use application/javascript for JSONP output.
2013-07-29 16:05:54 +00:00
hallgren ecfcaa5395 Adding download page and release notes for the next release of GF
The suggested next release is 3.4.8 in early August.
Feel free to add things in download/release-3.4.8.t2t.
2013-07-29 13:26:22 +00:00
hallgren 3b334b5707 minibar: more robust test for availability localStorage
Minibar should now work if localStorage is disabled or unavailable.
(In Firefox, disabling cookies also disables localStorage.)
2013-07-29 11:58:17 +00:00
hallgren e07a74df01 Allow cross origin requests to GF cloud & PGF services
By adding a header

	Access-Control-Allow-Origin: *

to the HTTP responses, web browsers are informed that it is OK to call the
services from web pages hosted on other sites.

This is apparently supported in most modern browsers, so it should no longer
be necessary to resort to JSONP.

See https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
2013-07-25 16:04:43 +00:00
hallgren fe79e8cd25 gf-server.cabal: same changes as in gf.cabal for ghc-7.6 compatibility 2013-07-15 17:07:51 +00:00
hallgren bdfd663e91 Fix UTF-8 decoding problem in gf -server
The package network-2.4.1.1 thoughlessly introduced a backward incompatible
change to the function Network.URI.unEscapeString, see

    https://github.com/haskell/network/commit/f2168b1f8978b4ad9c504e545755f0795ac869ce

This also affects the function Network.Shed.Httpd.queryToArguments, which is
used in GFServer.hs.

To remain compatible with older and newer versions of the network package,
we need to stay clear of queryToArguments and unEscapeString. A replacement
function has been added to server/URLEncoding.hs.
2013-06-13 08:23:48 +00:00
hallgren d010dfdcfa Update the usage text for the --output-format option
It needs to be updated manually when the list of available output format
changes.
2013-06-10 12:00:14 +00:00
hallgren 5b36461c1d GF.Text.Transliterations: avoid error prone function Data.Map.fromAscList 2013-06-02 10:10:46 +00:00
hallgren 29f1487aa4 Demo page: add a version of the minibar that shows just the MOLTO Application grammars 2013-05-24 14:20:36 +00:00
hallgren da577d15ef Download page: the .deb packages also work on Ubuntu 13.04 2013-05-03 13:14:27 +00:00