summaryrefslogtreecommitdiff
path: root/src/compiler
AgeCommit message (Collapse)Author
2019-09-20removed more dead codekrangelov
2019-09-20remove obsolete codekrangelov
2019-09-10GrammarToCanonical: bug fix: add missing case for EmptyThomas Hallgren
2019-07-10Minor renamings in JSON formatJohn J. Camilleri
2019-07-10Address @heatherleaf's suggestionsJohn J. Camilleri
2019-07-07Whitespace fixesJohn J. Camilleri
2019-07-07Finish compile to PGF JSON, including JSON schema for resulting format.John J. Camilleri
2019-07-03Finish JSON conversion for abstractJohn J. Camilleri
2019-07-03Start work on PGFtoJSON module. Add compiler flag `-f json`.John J. Camilleri
2019-06-30fully supported case-insensitive parsing/lookupkrangelov
2019-05-20reordered error message for 'no overload'; might be even better to show ↵Aarne Ranta
complete types
2019-05-15Eliminate the dependency on time-compatThomas Hallgren
It was only needed for compatibility with directory<1.2, but directory>=1.2 has been shipped with ghc since ghc-7.6. Note: time-compat-1.9.* (the current version) is a completely different package, that does not provide the needed function toUTCTime, which was provided in time-compat-0.1.*.
2019-04-25GF.Compile.CheckGrammar: discard bad 'lincat C = …' with a warningThomas Hallgren
e.g. if C is a fun and not a cat in the abstract syntax. Discarding bad lincats prevents GF from generating malformed PGFs that are rejected by the C run-time system. I also added code to reject bad lincats with an error, but I left it commented out since it seems a bit pedantic compared to GF's otherwise rather sloppy grammar checking.
2019-04-12respect the probs option also when merging PGFskrangelov
2019-03-26Merge branch 'master' of https://github.com/GrammaticalFramework/gf-corekrangelov
2019-03-26bugfix in the pretty printerkrangelov
2019-03-22GF.Compile.GrammarToCanonical: keep unreachable rows in tablesThomas Hallgren
since unreachable rows can become reachable after grammar transformation. Also export smart constructors for projection and selection.
2019-03-20GF.Grammar.Canonical: pretty printer: omit some redundant bracketsThomas Hallgren
2019-03-14GF.Compile.GrammarToCanonical: allow + in reg exps in pre { }Thomas Hallgren
2019-03-13GF.Grammar.Canonical: some Functor/Foldable/Traversable instancesThomas Hallgren
2019-03-12Merge branch 'master' of https://github.com/GrammaticalFramework/gf-coreThomas Hallgren
2019-03-12GF.Grammar.Canonical: add TuplePattern and CommentedValueThomas Hallgren
2019-03-08canonical GF: flatten several concatenations into one json array, and parse ↵Peter Ljunglöf
the array back into concatenations
2019-03-08added parsing of json into canonical GFPeter Ljunglöf
2019-03-08remove case expressions (no particular reason)Peter Ljunglöf
2019-03-08corrected json printingPeter Ljunglöf
some object labels must be preceded by ".", to not be in conflict with GF records (which are stored as json objects) plus some minor bugfixes and cleaning
2019-03-08Remove "canonical_yaml" from the option descriptionsPeter Ljunglöf
2019-03-07Expose GF.Grammar.Canonical + some refactoringThomas Hallgren
to make it available in other tools by depending on the gf package and importing it
2019-03-07Rename module GF.Compile.ConcreteToCanonical to GF.Compile.GrammarToCanonicalThomas Hallgren
2019-02-26replace aeson with jsonkrangelov
2019-02-21Need aeson>=1.3Thomas Hallgren
Also remove ununsed GF.Compile.PGFtoAbstract
2019-02-08added helper info about canonical grammar outputPeter Ljunglöf
2019-02-08enable export of canonical grammars to JSON and YAMLPeter Ljunglöf
2019-02-08encoding/decoding canonical GF grammars to/from JSON and YAMLPeter Ljunglöf
2019-01-23Export of concrete syntax to Haskell now goes via Canonical GFThomas Hallgren
TODO: better treatment of Predef functions and record subtyping coercions
2019-01-22More work on the canonica_gf exportThomas Hallgren
+ Abstract syntax now is converted directly from the Grammar and not via PGF, so you can use `gf -batch -no-pmcfg -f canonical_gf ...`, to export to canonical_gf while skipping PMCFG and PGF file generation completely. + Flags that are normally copied to PGF files are now included in the caninical_gf output as well (in particular the startcat flag).
2019-01-18Two fixes in GF.Grammar.CanonicalThomas Hallgren
+ Hide Prelude.<> to avoid ambiguity with ghc-8.6 + Vertical alternative in the pretty printer for table types A => B
2019-01-17Adding -output-format canonical_gfThomas Hallgren
This output format converts a GF grammar to a "canonical" GF grammar. A canonical GF grammar consists of - one self-contained module for the abstract syntax - one self-contained module per concrete syntax The concrete syntax modules contain param, lincat and lin definitions, everything else has been eliminated by the partial evaluator, including references to resource library modules and functors. Record types and tables are retained. The -output-format canonical_gf option writes canonical GF grammars to a subdirectory "canonical/". The canonical GF grammars are written as normal GF ".gf" source files, which can be compiled with GF in the normal way. The translation to canonical form goes via an AST for canonical GF grammars, defined in GF.Grammar.Canonical. This is a simple, self-contained format that doesn't cover everyting in GF (e.g. omitting dependent types and HOAS), but it is complete enough to translate the Foods and Phrasebook grammars found in gf-contrib. The AST is based on the GF grammar "GFCanonical" presented here: https://github.com/GrammaticalFramework/gf-core/issues/30#issuecomment-453556553 The translation of concrete syntax to canonical form is based on the previously existing translation of concrete syntax to Haskell, implemented in module GF.Compile.ConcreteToHaskell. This module could now be reimplemented and simplified significantly by going via the canonical format. Perhaps exports to other output formats could benefit by going via the canonical format too. There is also the possibility of completing the GFCanonical grammar mentioned above and using GF itself to convert canonical GF grammars to other formats...
2018-12-01GF.Main: leave the code page unchanged on WindowsThomas Hallgren
This should make it easier to use GF with UTF-8 in the Windows Console See https://groups.google.com/forum/#!topic/gf-dev/DCou6FDhCnU
2018-11-30Fix deprecations from containers >= 0.4.0.0Peter Ljunglöf
E.g. `foldWithKey` has been deprecated since 0.4.0.0 (November 2010)[1] and has been removed in 0.6.0.1 (2018)[2] [1]: https://github.com/haskell/containers/blob/master/changelog.md#0400--nov-2010 [2]: https://github.com/haskell/containers/blob/master/changelog.md#death-of-deprecated-functions (commit originally by @fredefox)
2018-11-28Revert "Completely remove uses of example-based"John J. Camilleri
This reverts commit 69cea20dac8ac73fa0a61ed4ff427d2524ee253b.
2018-11-28Completely remove uses of example-basedJohn J. Camilleri
2018-11-28remove two obsolete optionsKrasimir Angelov
2018-10-19Add {-# LANGUAGE GADTs -#} to the generated Haskell fileInari Listenmaa
2018-10-16gf -cshell bug fixThomas Hallgren
The functions cExpr and hsExpr in GF.Command.Commands2 need to handle string literals.
2018-09-21option rf -paragraphsAarne Ranta
2018-07-22GF_LIB_PATH can now be path1:path2:path3, not just path1meng wong
Traditionally, GF_LIB_PATH points to something like `.../share/ghc-8.0.2-x86_64/gf-3.9/lib` and if you want prelude and alltenses and present, you add a `--# -path=.:present` compiler pragma to the top of your .gf file But if you are developing some kind of application grammar library or contrib of your own, you might find yourself repeating your library path at the top of all your .gf files. After painstakingly maintaining the same library path at the top of all your .gf files, you might say, let's factor this out into GF_LIB_PATH. Then you might then find to your surprise that GF_LIB_PATH doesn't accept the usual colon:separated:path notation familiar from, say, unix PATH and MANPATH. This patch allows you to define `GF_LIB_PATH=gf-3.9.lib:$HOME/gf-contrib/whatever/lib` in a more natural way. If you are an RGL hacker and have your own version of the RGL tree sitting somewhere, you should be able to have both paths in the GF_LIB_PATH, for added convenience. This minor convenience will probably lead to obscure bugs and great frustration when you find that your changes are mysteriously not being picked up by GF; so keep this in mind and use it cautiously. This caution should probably sit in the documentation somewhere. A subsequent commit will do that. If you use zsh, you can do this to quickly build up a big GF_LIB_PATH: % gf_lib_path=( $HOME/src/GF/lib/src/{api,abstract,common,english,api/libraryBrowser,prelude,..} ) % typeset -xT GF_LIB_PATH gf_lib_path
2018-07-04Remove code which tries to get version information from darcs folderJohn J. Camilleri
2018-06-27GF.Server: add 'import Control.Applicative' for compatibilit with GHC<7.10Thomas Hallgren
One could also add stricter version constraints in gf.cabal, e.g. base>=4.8 (implies GHC>=7.10) if we want to only support building with GHC>=7.10.
2018-06-12added transliteration arabic_unvocalized, which omits the vowelsAarne Ranta