1
0
forked from GitHub/gf-rgl

Merge branch 'master' into master

This commit is contained in:
Inari Listenmaa
2020-10-27 10:32:25 +01:00
committed by GitHub
915 changed files with 1138903 additions and 679509 deletions

View File

@@ -12,7 +12,7 @@ addons:
- ghc - ghc
before_install: before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install ghc@8.2 && export PATH="/usr/local/opt/ghc@8.2/bin:$PATH" ; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install ghc@8.6 && export PATH="/usr/local/opt/ghc@8.6/bin:$PATH" ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl http://www.grammaticalframework.org/download/gf-3.9-bin-intel-mac.tar.gz > gf.tar.gz && sudo tar --no-same-owner --no-same-permissions -C /usr/local -zxf gf.tar.gz && rm gf.tar.gz; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl http://www.grammaticalframework.org/download/gf-3.9-bin-intel-mac.tar.gz > gf.tar.gz && sudo tar --no-same-owner --no-same-permissions -C /usr/local -zxf gf.tar.gz && rm gf.tar.gz; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then curl http://www.grammaticalframework.org/download/gf_3.9.1-1_amd64-trusty.deb > gf.deb && sudo dpkg -i gf.deb && rm gf.deb ; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then curl http://www.grammaticalframework.org/download/gf_3.9.1-1_amd64-trusty.deb > gf.deb && sudo dpkg -i gf.deb && rm gf.deb ; fi
- if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then choco install ghc --version=8.4.4 && export PATH="/c/ProgramData/chocolatey/lib/ghc/tools/ghc-8.4.4/bin:$PATH"; fi - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then choco install ghc --version=8.4.4 && export PATH="/c/ProgramData/chocolatey/lib/ghc/tools/ghc-8.4.4/bin:$PATH"; fi
@@ -20,8 +20,8 @@ before_install:
- if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then alias gf='gf.exe' && alias runghc='runghc.exe' ; fi - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then alias gf='gf.exe' && alias runghc='runghc.exe' ; fi
script: script:
- runghc Make.hs build prelude all --verbose - runghc Setup.hs build prelude all --verbose
- rm -rf dist - rm -rf dist
- mkdir dist-bash ; bash Make.sh --dest=dist-bash --verbose - mkdir dist-bash ; bash Setup.sh --dest=dist-bash --verbose
- rm -rf dist ; mkdir dist-bat - rm -rf dist ; mkdir dist-bat
- if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmd //c Make.bat --dest=dist-bat --verbose ; fi - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmd //c Setup.bat --dest=dist-bat --verbose ; fi

206
LICENSE Normal file
View File

@@ -0,0 +1,206 @@
The GF Resource Grammar Library is under GNU LESSER GENERAL PUBLIC LICENSE and BSD.
However the user has the right to choose any license for any application grammar derived from the resource grammar by using the grammar API.
The Resource Grammar Library also includes large coverage lexicons for some languages.
Since these lexicons are derived from external sources they might be under different licenses.
Look at the source file for every lexicon for details.
The rest of this document contains copies of the LGPL and BSD licenses
which are applicable to the different components of the Resource Grammar Library as described above.
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
BSD LICENSE
Copyright (c) 1998, Grammatical Framework
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,6 +1,6 @@
# A simple wrapper over the Haskell-based RGL build script # A simple wrapper over the Haskell-based RGL build script
RUNMAKE=runghc Make.hs RUNMAKE=runghc Setup.hs
.PHONY: build copy install doc clean .PHONY: build copy install doc clean

View File

@@ -6,15 +6,15 @@
The GF Resource Grammar Library is the standard library for Grammatical Framework. It covers the morphology and basic syntax of over 30 languages. The GF Resource Grammar Library is the standard library for Grammatical Framework. It covers the morphology and basic syntax of over 30 languages.
For more about the RGL, see the [synopsis page](http://www.grammaticalframework.org/lib/doc/synopsis.html). For more about the RGL, see the [synopsis page](http://www.grammaticalframework.org/lib/doc/synopsis/).
## Choose your build method ## Choose your build method
There are 3 ways to build and install the RGL: There are 3 ways to build and install the RGL:
- Haskell script `Make.hs` - Haskell script `Setup.hs`
- Shell script `Make.sh` (does not require Haskell) - Shell script `Setup.sh` (does not require Haskell)
- Windows batch file `Make.bat` (does not require Haskell) - Windows batch file `Setup.bat` (does not require Haskell)
## Install locations ## Install locations
@@ -47,7 +47,7 @@ This file should be kept up-to-date and all build methods should read this confi
If default is `y` then anything other than `n`, including the empty string, is treated as true (and vice versa when default is `n`). If default is `y` then anything other than `n`, including the empty string, is treated as true (and vice versa when default is `n`).
## Haskell script: `Make.hs` ## Haskell script: `Setup.hs`
This build method gives you most options. This build method gives you most options.
You will need Haskell installed on your system. You will need Haskell installed on your system.
@@ -69,7 +69,7 @@ There is also `make clean` available.
For more fine-grained control over the build process, you can run the build script directly: For more fine-grained control over the build process, you can run the build script directly:
``` ```
runghc Make ... runghc Setup.hs ...
``` ```
Where `...` is one of: Where `...` is one of:
@@ -99,7 +99,7 @@ If ommitted, the default command is `prelude all`.
- The path to GF installed on your system can be specified via the `--gf` flag (default is that the `gf` executable is in the global system path). - The path to GF installed on your system can be specified via the `--gf` flag (default is that the `gf` executable is in the global system path).
- The `--dest` flag can be used to manually specify where the compiled RGL modules should be copied/installed. This is the same place as `GF_LIB_PATH`. - The `--dest` flag can be used to manually specify where the compiled RGL modules should be copied/installed. This is the same place as `GF_LIB_PATH`.
## Shell script: `Make.sh` ## Shell script: `Setup.sh`
This method is provided as an alternative for those who don't have Haskell installed. This method is provided as an alternative for those who don't have Haskell installed.
Simply run the script to build the entire RGL and install in the default location. Simply run the script to build the entire RGL and install in the default location.
@@ -109,11 +109,11 @@ You can pass the following flags:
- `--gf=...` to specify the path to the `gf` executable, if not available on the system path - `--gf=...` to specify the path to the `gf` executable, if not available on the system path
- `--verbose` or `-v` to show a list of files being built (errors will always be shown) - `--verbose` or `-v` to show a list of files being built (errors will always be shown)
## Windows batch file: `Make.bat` ## Windows batch file: `Setup.bat`
This method is provided as an alternative for Windows users who don't have Haskell or Bash installed. This method is provided as an alternative for Windows users who don't have Haskell or Bash installed.
It is supposed to be a port of `Make.sh` and works in largely the same way. It is supposed to be a port of `Setup.sh` and works in largely the same way.
In particular, it accepts the same flags (in the same format) as described above. In particular, it accepts the same flags (in the same format) as described above.
However it currently tries to build all modules for all languages and doesn't consider the details of which modules should be compiled for each language (specified in `languages.csv`) However it currently tries to build all modules for all languages and doesn't consider the details of which modules should be compiled for each language (specified in `languages.csv`)

View File

@@ -7,7 +7,7 @@ REM ---
REM Modules to compile for each language REM Modules to compile for each language
REM TODO read from languages.csv REM TODO read from languages.csv
set langs=Afr Amh Ara Eus Bul Cat Chi Dan Dut Eng Est Fin Fre Grc Gre Heb Hin Ger Ice Ina Ita Jpn Lat Lav Mlt Mon Nep Nor Nno Pes Pol Por Pnb Ron Rus Snd Spa Swe Tha Tur Urd set langs=Afr Amh Ara Eus Bul Cat Chi Cze Dan Dut Eng Est Fin Fre Grc Gre Heb Hin Hun Ger Ice Ina Ita Jpn Lat Lav Mlt Mon Nep Nor Nno Pes Pol Por Pnb Ron Rus Slo Snd Spa Swe Tha Tur Urd
set modules_langs=All Symbol Compatibility set modules_langs=All Symbol Compatibility
set modules_api=Try Symbolic set modules_api=Try Symbolic
@@ -29,11 +29,28 @@ goto Loop
REM Try to determine install location REM Try to determine install location
if "%dest%"=="" ( if "%dest%"=="" (
set dest=%GF_LIB_PATH% REM Separate paths with search path separator ; and pick first one
for %%p in ("%GF_LIB_PATH:;=";"%") do (
set dest=%%~p
goto BreakLibPath
) )
)
:BreakLibPath
set DATA_DIR=..\gf-core\DATA_DIR
if "%dest%"=="" ( if "%dest%"=="" (
REM TODO Look in ../gf-core/DATA=DIR REM Look in already compiled GF folder
if exist %DATA_DIR% (
for /f "delims=" %%x in (%DATA_DIR%) do (
if not "%%x"=="" (
set dest=%%x\lib
goto BreakDataDir
) )
)
)
)
:BreakDataDir
if "%dest%"=="" ( if "%dest%"=="" (
echo Unable to determine where to install the RGL. Please do one of the following: echo Unable to determine where to install the RGL. Please do one of the following:
echo - Pass the --dest=... flag to this script echo - Pass the --dest=... flag to this script

View File

@@ -9,7 +9,7 @@ import System.IO.Error (catchIOError)
import System.Exit (ExitCode(..),exitFailure) import System.Exit (ExitCode(..),exitFailure)
import System.Environment (getArgs,lookupEnv) import System.Environment (getArgs,lookupEnv)
import System.Process (rawSystem) import System.Process (rawSystem)
import System.FilePath ((</>)) -- ,takeFileName,addExtension,dropExtension) import System.FilePath ((</>),splitSearchPath) -- ,takeFileName,addExtension,dropExtension)
import System.Directory (createDirectoryIfMissing,copyFile,getDirectoryContents,removeDirectoryRecursive,findFile) import System.Directory (createDirectoryIfMissing,copyFile,getDirectoryContents,removeDirectoryRecursive,findFile)
#if __GLASGOW_HASKELL__>=800 #if __GLASGOW_HASKELL__>=800
import System.Directory (getModificationTime,setModificationTime) import System.Directory (getModificationTime,setModificationTime)
@@ -119,7 +119,7 @@ mkInfo = do
-- Look for install location in a few different places -- Look for install location in a few different places
let mflag = getFlag destination_flag args let mflag = getFlag destination_flag args
mbuilt <- catchIOError (readFile "../gf-core/DATA_DIR" >>= \d -> return (Just (d </> "lib"))) (\e -> return Nothing) mbuilt <- catchIOError (readFile "../gf-core/DATA_DIR" >>= \d -> return (Just (d </> "lib"))) (\e -> return Nothing)
menvar <- lookupEnv "GF_LIB_PATH" menvar <- lookupEnv "GF_LIB_PATH" >>= return . fmap (head . splitSearchPath)
let let
inst_dir = inst_dir =
case catMaybes [mflag,menvar,mbuilt] of case catMaybes [mflag,menvar,mbuilt] of

View File

@@ -36,7 +36,7 @@ done
# Try to determine install location # Try to determine install location
if [ -z "$dest" ]; then if [ -z "$dest" ]; then
dest="$GF_LIB_PATH" dest=$(echo "$GF_LIB_PATH" | sed 's/:.*$//')
fi fi
if [ -z "$dest" ] && [ -f "../gf-core/DATA_DIR" ]; then if [ -z "$dest" ] && [ -f "../gf-core/DATA_DIR" ]; then
dest=$(cat ../gf-core/DATA_DIR) dest=$(cat ../gf-core/DATA_DIR)

13
doc/.gitignore vendored Normal file
View File

@@ -0,0 +1,13 @@
synopsis/index.txt
synopsis/index-t2t.html
synopsis/index.html
synopsis/api-examples-*.txt
synopsis/api-examples.gfs
synopsis/categories-imagemap.html
synopsis/categories.png
gfdoc/sources.html
rgl-publications.html
status.html
translation.html

File diff suppressed because it is too large Load Diff

99
doc/CountLines.hs Normal file
View File

@@ -0,0 +1,99 @@
import System.Directory
import Data.Char
import Data.List
-- counting modules and lines in RGL implementations
-- leaving out Lexicon, Structural, dictionaries, Extra, Extend,... (see below the list of prefixes)
main = do
mapM_ getCounts allLanguages
getCounts (lan,language) = do
cs <- mapM (getCount language lan) prefixes
let (ms,ls) = unzip cs
putStrLn $ unwords [language, show (sum ms), show (sum ls)]
getCount language lan pref = do
let file = concat ["../src/",language,"/",pref,lan,".gf"]
--- putStrLn file
ms <- readFileIf file
case ms of
Nothing -> return (0,0)
Just s -> return (1,length (codeLines (lines s)))
codeLines ls = filter (\l -> not (all isSpace l || isPrefixOf "--" l)) ls
readFileIf name = do
b <- doesFileExist name
case b of
True -> readFile name >>= return . Just
False -> return Nothing
prefixes = [
"Adjective"
,"Adverb"
,"Cat"
,"Common"
,"Conjunction"
,"Diff"
,"Grammar"
,"Lang"
-- ,"Lexicon"
,"Noun"
,"Numeral"
,"Phrase"
,"Question"
,"Relative"
,"Sentence"
-- ,"Structural"
,"Tense"
,"Text"
,"Verb"
,"Res"
,"Morpho"
,"Phono"
,"Paradigms"
]
allLanguages = [
("", "abstract")
,("Afr","afrikaans")
,("Ara","arabic")
--- ,("Bul","bulgarian") ---- todo convert to utf8
,("Cat","catalan")
,("Chi","chinese")
,("Dan","danish")
,("Dut","dutch")
,("Eng","english")
,("Est","estonian")
,("Eus","basque")
,("Fin","finnish")
,("Fre","french")
,("Ger","german")
,("Gre","greek")
,("Hin","hindi")
,("Ice","icelandic")
,("Ita","italian")
,("Jpn","japanese")
,("Lav","latvian")
,("Mlt","maltese")
,("Mon","mongolian")
,("Nep","nepali")
,("Nno","nynorsk")
,("Nor","norwegian")
,("Pes","persian")
,("Pnb","punjabi")
,("Pol","polish")
,("Por","portuguese")
---- ,("Ron","romanian")
,("Rus","russian")
,("Snd","sindhi")
,("Spa","spanish")
,("Swe","swedish")
,("Tha","thai")
,("Urd","urdu")
,("Romance","romance")
,("Scand","scandinavian")
,("Hindustani","hindustani")
]

View File

@@ -1,51 +1,21 @@
.PHONY: all index status synopsis abstract .PHONY: all status synopsis abstract sources
GFDOC=gfdoc
S=../src
all: synopsis all: synopsis
GF_alltenses=$(GF_LIB_PATH)/alltenses status: status.html
GF=gf
GFDOC=gfdoc
index: synopsis:
txt2tags -thtml index.txt make -C synopsis GF_LIB_PATH=../$(GF_LIB_PATH)
status:
sources:
make -C gfdoc sources.html
status.html:
txt2tags -thtml status.txt txt2tags -thtml status.txt
synopsis: synopsis.html
S=../src
# List of languages extracted from languages.csv, with 'Synopsis' column == y
LANGS=$(shell cat ../languages.csv | cut -d',' -f1,11 | grep ',y' | cut -d',' -f1)
# This list was constructed by observing what files MkSynopsis.hs reads
SRC_FILES=$(S)/abstract/Common.gf $(S)/abstract/Cat.gf $(S)/api/Constructors.gf $(S)/abstract/Structural.gf $(patsubst %,$S/*/Paradigms%.gf,$(LANGS))
EXAMPLES_OUT=$(patsubst %,api-examples-%.txt,$(LANGS))
INCLUDES=synopsis-intro.txt categories-intro.txt categories-imagemap.html synopsis-additional.txt synopsis-browse.txt synopsis-example.txt
synopsis.html: MkSynopsis.hs MkExxTable.hs $(INCLUDES) $(EXAMPLES_OUT) $(SRC_FILES)
runghc -i.. MkSynopsis.hs
categories.png: categories.dot
dot -Tpng $^ > $@
categories-imagemap.html: categories.dot
dot -Tcmapx $^ > $@
abstract: abstract:
$(GFDOC) -txthtml $S/abstract/*.gf $(GFDOC) -txthtml $S/abstract/*.gf
mv $S/abstract/*.html abstract mv $S/abstract/*.html abstract
api-examples.gfs: api-examples.txt MkExx.hs
runghc MkExx.hs < $< > $@
# Since .gfo files aren't self-contained, the dependencies given here are
# incomplete. But I am thinking that the Try%.gfo file will always be newer
# than any other files it depends on, so the rule will trigger when
# needed anyway. //TH 2018-10-22
api-examples-%.txt: $(GF_alltenses)/Try%.gfo api-examples.gfs
GF_LIB_PATH=$(GF_LIB_PATH) $(GF) -retain -s $< <api-examples.gfs >$@
clean:
rm -rf synopsis.txt api-examples.gfs $(EXAMPLES_OUT)

View File

@@ -1,22 +0,0 @@
import qualified Data.Map as Map
import Data.Char
gold = "CC_eng_tha.txt"
tested = "api-examples-Tha.txt"
main = do
s <- readFile gold
let corrects = Map.fromList $ exx 1 5 2 (lines s)
-- mapM_ putStrLn $ concat [[t,s] | (t,s) <- Map.toList corrects]
t <- readFile tested
mapM_ (doTest corrects) (exx 18 22 1 (map (drop 4) (lines t)))
exx x y z ss = [(ss!!k,ss!!(k+z)) | k <- [x,y .. length ss - 2]]
doTest corrects (t,s) = case Map.lookup t corrects of
Just c -> if unspace s == uncomment c then return () else mapM_ putStrLn [t,unspace s,c]
_ -> return ()
unspace = filter (not . isSpace)
uncomment = unspace . takeWhile (/= '-')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

9
doc/example-tables.gfs Normal file
View File

@@ -0,0 +1,9 @@
-- gf -run alltenses/LangIce.gfo <example-tables.gfs
gt MkDocument (NoDefinition "") (InflectionN ?) "" | l | wf -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionA ?) "" | l | wf -append -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionV ?) "" | l | wf -append -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionV2 ?) "" | l | wf -append -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionV3 ?) "" | l | wf -append -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionVV ?) "" | l | wf -append -file="example-tables.html"
gt MkDocument (NoDefinition "") (InflectionV2V ?) "" | l | wf -append -file="example-tables.html"

19
doc/gfdoc/Makefile Normal file
View File

@@ -0,0 +1,19 @@
TMP=tmp.html
TEMPLATE=../synopsis/template.html
ROOT=../..
TITLE=$(shell head -n 1 sources.txt)
sources.html: sources.txt $(TEMPLATE)
txt2tags --target=html --no-headers --quiet --outfile=$@ --infile=$<
pandoc \
--from=html \
--to=html5 \
--standalone \
--template=$(TEMPLATE) \
--metadata='title:"$(TITLE)"' \
--variable='lang:en' \
--variable='rel-root:$(ROOT)/..' \
--output=$(TMP) \
$@
mv $(TMP) $@
sed -i.bak "s/<table>/<table class=\"table w-auto\">/" $@ && rm "$@.bak"

View File

@@ -1,183 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.org">
<TITLE>More modules in the GF Resource Grammar Library</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<CENTER>
<H1>More modules in the GF Resource Grammar Library</H1>
</CENTER>
<P>
<A HREF="../synopsis.html">back to synopsis</A>
</P>
<H2>Extra syntax modules</H2>
<P>
These modules give language-specific extra constructs not available via the common API.
</P>
<P>
<A HREF="../../src/abstract/Extra.gf">common repository</A>
<A HREF="../../src/romance/ExtraRomanceAbs.gf">Romance (Cat, Fre, Ita, Spa)</A>
<A HREF="../../src/scandinavian/ExtraScandAbs.gf">Scandinavian (Dan, Nor, Swe)</A>
</P>
<P>
<A HREF="../../src/afrikaans/ExtraAfrAbs.gf">Afrikaans</A>
<A HREF="../../src/bulgarian/ExtraBulAbs.gf">Bulgarian</A>
<A HREF="../../src/catalan/ExtraCatAbs.gf">Catalan</A>
<A HREF="../../src/danish/ExtraDanAbs.gf">Danish</A>
<A HREF="../../src/dutch/ExtraDutAbs.gf">Dutch</A>
<A HREF="../../src/english/ExtraEngAbs.gf">English</A>
<A HREF="../../src/finnish/ExtraFinAbs.gf">Finnish</A>
<A HREF="../../src/french/ExtraFreAbs.gf">French</A>
<A HREF="../../src/german/ExtraGerAbs.gf">German</A>
<A HREF="../../src/italian/ExtraItaAbs.gf">Italian</A>
<A HREF="../../src/norwegian/ExtraNorAbs.gf">Norwegian</A>
<A HREF="../../src/persian/ExtraPesAbs.gf">Persian</A>
<A HREF="../../src/polish/ExtraPolAbs.gf">Polish</A>
<A HREF="../../src/punjabi/ExtraPnbAbs.gf">Punjabi</A>
<A HREF="../../src/romanian/ExtraRonAbs.gf">Romanian</A>
<A HREF="../../src/russian/ExtraRusAbs.gf">Russian</A>
<A HREF="../../src/spanish/ExtraSpaAbs.gf">Spanish</A>
<A HREF="../../src/swedish/ExtraSweAbs.gf">Swedish</A>
</P>
<H2>Irregular verbs and other words</H2>
<P>
These modules give lists of irregular words, mostly verbs. Their completeness varies.
</P>
<P>
<A HREF="../../src/catalan/IrregCatAbs.gf">Catalan</A>
<A HREF="../../src/danish/IrregDanAbs.gf">Danish</A>
<A HREF="../../src/dutch/IrregDutAbs.gf">Dutch</A>
<A HREF="../../src/english/IrregEngAbs.gf">English</A>
<A HREF="../../src/french/IrregFreAbs.gf">French</A>
<A HREF="../../src/german/IrregGerAbs.gf">German</A>
<A HREF="../../src/norwegian/IrregNorAbs.gf">Norwegian</A>
<A HREF="../../src/spanish/IrregSpaAbs.gf">Spanish</A>
<A HREF="../../src/swedish/IrregSweAbs.gf">Swedish</A>
<A HREF="../../src/turkish/IrregTurAbs.gf">Turkish</A>
</P>
<H2>Large-scale dictionaries</H2>
<P>
These morphological dictionaries are extracted from open source lexica by using the resource grammar paradigms. The figures give the approximate number of lemmas.
</P>
<P>
<A HREF="../../src/bulgarian/DictBulAbs.gf">Bulgarian</A> 53k
<A HREF="../../src/english/DictEngAbs.gf">English</A> 43k
<A HREF="../../src/finnish/DictFinAbs.gf">Finnish</A> 42k
<A HREF="../../src/french/DictFreAbs.gf">French</A> 92k
<A HREF="../../src/swedish/DictSweAbs.gf">Swedish</A> 43k
<A HREF="../../src/turkish/DictTurAbs.gf">Turkish</A> 24k
</P>
<H2>Abstract Syntax Modules</H2>
<P>
These modules are for internal use of resource grammarians, but the comments give some more linguistic explanation of the different constructs.
</P>
<TABLE BORDER="1" CELLPADDING="4">
<TR>
<TH>module</TH>
<TH>contents</TH>
</TR>
<TR>
<TD><A HREF="Adjective.html">Adjective</A></TD>
<TD>constructors for A, AP</TD>
</TR>
<TR>
<TD><A HREF="Adverb.html">Adverb</A></TD>
<TD>constructors for Adv, AdV</TD>
</TR>
<TR>
<TD><A HREF="Cat.html">Cat</A></TD>
<TD>lincats of all categories</TD>
</TR>
<TR>
<TD><A HREF="Common.html">Common</A></TD>
<TD>default lincats for string categories</TD>
</TR>
<TR>
<TD><A HREF="Conjunction.html">Conjunction</A></TD>
<TD>coordination rules</TD>
</TR>
<TR>
<TD><A HREF="Extra.html">Extra</A></TD>
<TD>constructs available in some languages only</TD>
</TR>
<TR>
<TD><A HREF="Grammar.html">Grammar</A></TD>
<TD>everything except content lexicon</TD>
</TR>
<TR>
<TD><A HREF="Idiom.html">Idiom</A></TD>
<TD>idiomatic constructions</TD>
</TR>
<TR>
<TD><A HREF="Lang.html">Lang</A></TD>
<TD>everything (Grammar and Lexicon)</TD>
</TR>
<TR>
<TD><A HREF="Lexicon.html">Lexicon</A></TD>
<TD>content word lexicon</TD>
</TR>
<TR>
<TD><A HREF="Noun.html">Noun</A></TD>
<TD>constructors for NP, CN, Det</TD>
</TR>
<TR>
<TD><A HREF="Numeral.html">Numeral</A></TD>
<TD>constructors for Numeral and Digits</TD>
</TR>
<TR>
<TD><A HREF="Phrase.html">Phrase</A></TD>
<TD>constructors for Phr, Utt</TD>
</TR>
<TR>
<TD><A HREF="Question.html">Question</A></TD>
<TD>constructors for QS, QCl, IP</TD>
</TR>
<TR>
<TD><A HREF="Relative.html">Relative</A></TD>
<TD>constructors for RS, RCl, RP</TD>
</TR>
<TR>
<TD><A HREF="Sentence.html">Sentence</A></TD>
<TD>constructors for S, Cl, SC</TD>
</TR>
<TR>
<TD><A HREF="Structural.html">Structural</A></TD>
<TD>structural word lexicon</TD>
</TR>
<TR>
<TD><A HREF="Symbol.html">Symbol</A></TD>
<TD>mixtures of verbal and symbolic expressions</TD>
</TR>
<TR>
<TD><A HREF="Tense.html">Tense</A></TD>
<TD>common API tense system</TD>
</TR>
<TR>
<TD><A HREF="Text.html">Text</A></TD>
<TD>constructors for Tex</TD>
</TR>
<TR>
<TD><A HREF="Verb.html">Verb</A></TD>
<TD>constructors for VP, VPSlash, Comp</TD>
</TR>
</TABLE>
<H2>The Module Dependency Tree</H2>
<P>
<IMG ALIGN="middle" SRC="Syntax.png" BORDER="0" ALT="">
</P>
<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
<!-- cmdline: txt2tags -thtml sources.txt -->
</BODY></HTML>

View File

@@ -3,7 +3,7 @@ More modules in the GF Resource Grammar Library
[back to synopsis ../synopsis.html] [Back to synopsis ../synopsis/index.html]
==Extra syntax modules== ==Extra syntax modules==
@@ -93,8 +93,3 @@ These modules are for internal use of resource grammarians, but the comments giv
==The Module Dependency Tree== ==The Module Dependency Tree==
[Syntax.png] [Syntax.png]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -1,267 +0,0 @@
GF Resource Grammar Library v. 1.2
Author: Aarne Ranta <aarne (at) cs.chalmers.se>
Last update: %%date(%c)
% NOTE: this is a txt2tags file.
% Create an html file from this file using:
% txt2tags --toc -thtml index.txt
%!target:html
%!postproc(html): #BCEN <center>
%!postproc(html): #ECEN </center>
#BCEN
[10lang-large.png]
#ECEN
The GF Resource Grammar Library defines the basic grammar of
ten languages:
Danish, English, Finnish, French, German,
Italian, Norwegian, Russian, Spanish, Swedish.
Still incomplete implementations for Arabic and Catalan are also
included.
**New** in December 2007: Browsing the library by syntax editor
[directly on the web ../../../demos/resource-api/editor.html].
==Authors==
Inger Andersson and Therese Soderberg (Spanish morphology),
Nicolas Barth and Sylvain Pogodalla (French verb list),
Ali El Dada (Arabic modules),
Magda Gerritsen and Ulrich Real (Russian paradigms and lexicon),
Janna Khegai (Russian modules),
Bjorn Bringert (many Swadesh lexica),
Carlos Gonzalía (Spanish cardinals),
Harald Hammarström (German morphology),
Patrik Jansson (Swedish cardinals),
Andreas Priesnitz (German lexicon),
Aarne Ranta,
Jordi Saludes (Catalan modules),
Henning Thielemann (German lexicon).
We are grateful for contributions and
comments to several other people who have used this and
the previous versions of the resource library, including
Ludmilla Bogavac,
Ana Bove,
David Burke,
Lauri Carlson,
Gloria Casanellas,
Karin Cavallin,
Robin Cooper,
Hans-Joachim Daniels,
Elisabet Engdahl,
Markus Forsberg,
Kristofer Johannisson,
Anni Laine,
Hans Leiß,
Peter Ljunglöf,
Saara Myllyntausta,
Wanjiku Ng'ang'a,
Nadine Perera,
Jordi Saludes.
==License==
The GF Resource Grammar Library is open-source software licensed under
GNU Lesser General Public License (LGPL). See the file [LICENSE ../LICENSE] for more
details.
==Scope==
Coverage, for each language:
- complete morphology
- lexicon of the ca. 100 most important structural words
- test lexicon of ca. 300 content words (rough equivalents in each language)
- list of irregular verbs (separately for each language)
- representative fragment of syntax (cf. CLE (Core Language Engine))
- rather flat semantics (cf. Quasi-Logical Form of CLE)
Organization:
- top-level (API) modules
- Ground API + special-purpose APIs
- "school grammar" concepts rather than advanced linguistic theory
Presentation:
- tool ``gfdoc`` for generating HTML from grammars
- example collections
==Location==
Assuming you have installed the libraries, you will find the precompiled
``gfc`` and ``gfr`` files directly under ``$GF_LIB_PATH``, whose default
value is ``/usr/local/share/GF/``. The precompiled subdirectories are
```
alltenses
mathematical
multimodal
present
```
Do for instance
```
cd $GF_LIB_PATH
gf alltenses/langs.gfcm
> p -cat=S -lang=LangEng "this grammar is too big" | tb
```
For more details, see the [Synopsis synopsis.html].
==Compilation==
If you want to compile the library from scratch, use ``make`` in the root of
the source directory:
```
cd GF/lib/resource-1.0
make
```
The ``make`` procedure does not by default make Arabic and Catalan, but you
can uncomment the relevant lines in ``Makefile`` to compile them.
==Encoding==
Finnish, German, Romance, and Scandinavian languages are in isolatin-1.
Arabic and Russian are in UTF-8.
English is in pure ASCII.
The different encodings imply, unfortunately, that it is hard to get
a nice view of all languages simultaneously. The easiest way to achieve this is
to use ``gfeditor``, which automatically converts grammars to UTF-8.
==Using the resource as library==
This API is accessible by both ``present`` and ``alltenses``. The modules you most often need are
- ``Syntax``, the interface to syntactic structures
- ``Syntax``//L//, the implementations of ``Syntax`` for each language //L//
- ``Paradigms``//L//, the morphological paradigms for each language //L//
The [Synopsis synopsis.html] gives examples on the typical usage of these
modules.
==Using the resource as top level grammar==
The following modules can be used for parsing and linearization. They are accessible from both
``present`` and ``alltenses``.
- ``Lang``//L// for each language //L//, implementing a common abstract syntax ``Lang``
- ``Danish``, ``English``, etc, implementing ``Lang`` with language-specific extensions
In addition, there is in both ``present`` and ``alltenses`` the file
- ``langs.gfcm``, a package with precompiled ``Lang``//L// grammars
A way to test and view the resource grammar is to load ``langs.gfcm`` either into ``gfeditor``
or into the ``gf`` shell and perform actions such as syntax editing and treebank generation.
For instance, the command
```
> p -lang=LangEng -cat=S "this grammar is too big" | tb
```
creates a treebank entry with translations of this sentence.
For parsing, currently only English and the Scandinavian languages are within the limits ofr
reasonable resources. For other languages //L//, parsing with ``Lang``//L// will probably eat
up the computer resources before finishing the parser generation.
==Accessing the lower level ground API==
The ``Syntax`` API is implemented in terms a bunch of ``abstract`` modules, which
as of version 1.2 are mainly interesting for implementors of the resource.
See the [documentation for version 1.1 index-1.1.html] for more details.
==Known bugs and missing components==
Danish
- the lexicon and chosen inflections are only partially verified
English
Finnish
- wrong cases in some passive constructions
French
- multiple clitics (with V3) not always right
- third person pronominal questions with inverted word order
have wrong forms if "t" is required e.g.
(e.g. "comment fera-t-il" becomes "comment fera il")
German
Italian
- multiple clitics (with V3) not always right
Norwegian
- the lexicon and chosen inflections are only partially verified
Russian
- some functions missing
- some regular paradigms are missing
Spanish
- multiple clitics (with V3) not always right
- missing contractions with imperatives and clitics
Swedish
==More reading==
[Synopsis synopsis.html]. The concise guide to API v. 1.2.
[Grammars as Software Libraries gslt-sem-2006.html]. Slides
with background and motivation for the resource grammar library.
[GF Resource Grammar Library Version 1.0 clt2006.html]. Slides
giving an overview of the library and practical hints on its use.
[How to write resource grammars Resource-HOWTO.html]. Helps you
start if you want to add another language to the library.
[Parametrized modules for Romance languages http://www.cs.chalmers.se/~aarne/geocal2006.pdf].
Slides explaining some ideas in the implementation of
French, Italian, and Spanish.
[Grammar writing by examples http://www.cs.chalmers.se/~aarne/slides/webalt-2005.pdf].
Slides showing how linearization rules are written as strings parsable by the resource grammar.
[Multimodal Resource Grammars http://www.cs.chalmers.se/~aarne/slides/talk-edin2005.pdf].
Slides showing how to use the multimodal resource library. N.B. the library
examples are from ``multimodal/old``, which is a reduced-size API.
[GF Resource Grammar Library ../../../doc/resource.pdf] (pdf).
Printable user manual with API documentation, for version 1.0.

View File

@@ -3,7 +3,7 @@ Aarne Ranta
%!Encoding:utf8 %!Encoding:utf8
%!style(html): ../revealpopup.css %!style(html): revealpopup.css
%!postproc(tex) : "#BECE" "begin{center}" %!postproc(tex) : "#BECE" "begin{center}"
%!postproc(html) : "#BECE" "<center>" %!postproc(html) : "#BECE" "<center>"
@@ -377,5 +377,3 @@ and the ``Num`` //five//. It is also common that a "structural word" in a partic
a feature of the other words it combines with, rather than as a word of its own. For instance, a feature of the other words it combines with, rather than as a word of its own. For instance,
the determiner //the// in Swedish just selects an inflectional form of the noun that it is applied to: the determiner //the// in Swedish just selects an inflectional form of the noun that it is applied to:
"the" + //bil// = //bilen// ("the car"). "the" + //bil// = //bilen// ("the car").

View File

@@ -1,581 +0,0 @@
The Official EU languages
The 20 official languages of the EU and their abbreviations are as follows:
Español ES Spanish
Dansk DA Danish
Deutsch DE German
Elinika EL Greek
English EN
Français FR French
Italiano IT Italian
Nederlands NL Dutch
Português PT Portuguese
Suomi FI Finnish
Svenska SV Swedish
?e?tina CS Czech
Eesti ET Estonian
Latviesu valoda LV Latvian
Lietuviu kalba LT Lithuanian
Magyar HU Hungarian
Malti MT Maltese
Polski PL Polish
Sloven?ina SK Slovak
Sloven??ina SL Slovene
http://europa.eu.int/comm/education/policies/lang/languages/index_en.html
-----
http://www.w3.org/WAI/ER/IG/ert/iso639.htm
ar arabic
no norwegian
ru russian
--
ISO 639: 3-letter codes
abk ab Abkhazian
ace Achinese
ach Acoli
ada Adangme
aar aa Afar
afh Afrihili
afr af Afrikaans
afa Afro-Asiatic (Other)
aka Akan
akk Akkadian
alb/sqi sq Albanian
ale Aleut
alg Algonquian languages
tut Altaic (Other)
amh am Amharic
apa Apache languages
ara ar Arabic
arc Aramaic
arp Arapaho
arn Araucanian
arw Arawak
arm/hye hy Armenian
art Artificial (Other)
asm as Assamese
ath Athapascan languages
map Austronesian (Other)
ava Avaric
ave Avestan
awa Awadhi
aym ay Aymara
aze az Azerbaijani
nah Aztec
ban Balinese
bat Baltic (Other)
bal Baluchi
bam Bambara
bai Bamileke languages
bad Banda
bnt Bantu (Other)
bas Basa
bak ba Bashkir
baq/eus eu Basque
bej Beja
bem Bemba
ben bn Bengali
ber Berber (Other)
bho Bhojpuri
bih bh Bihari
bik Bikol
bin Bini
bis bi Bislama
bra Braj
bre be Breton
bug Buginese
bul bg Bulgarian
bua Buriat
bur/mya my Burmese
bel be Byelorussian
cad Caddo
car Carib
cat ca Catalan
cau Caucasian (Other)
ceb Cebuano
cel Celtic (Other)
cai Central American Indian (Other)
chg Chagatai
cha Chamorro
che Chechen
chr Cherokee
chy Cheyenne
chb Chibcha
chi/zho zh Chinese
chn Chinook jargon
cho Choctaw
chu Church Slavic
chv Chuvash
cop Coptic
cor Cornish
cos co Corsican
cre Cree
mus Creek
crp Creoles and Pidgins (Other)
cpe Creoles and Pidgins, English-based (Other)
cpf Creoles and Pidgins, French-based (Other)
cpp Creoles and Pidgins, Portuguese-based (Other)
cus Cushitic (Other)
hr Croatian
ces/cze cs Czech
dak Dakota
dan da Danish
del Delaware
din Dinka
div Divehi
doi Dogri
dra Dravidian (Other)
dua Duala
dut/nla nl Dutch
dum Dutch, Middle (ca. 1050-1350)
dyu Dyula
dzo dz Dzongkha
efi Efik
egy Egyptian (Ancient)
eka Ekajuk
elx Elamite
eng en English
enm English, Middle (ca. 1100-1500)
ang English, Old (ca. 450-1100)
esk Eskimo (Other)
epo eo Esperanto
est et Estonian
ewe Ewe
ewo Ewondo
fan Fang
fat Fanti
fao fo Faroese
fij fj Fijian
fin fi Finnish
fiu Finno-Ugrian (Other)
fon Fon
fra/fre fr French
frm French, Middle (ca. 1400-1600)
fro French, Old (842- ca. 1400)
fry fy Frisian
ful Fulah
gaa Ga
gae/gdh Gaelic (Scots)
glg gl Gallegan
lug Ganda
gay Gayo
gez Geez
geo/kat ka Georgian
deu/ger de German
gmh German, Middle High (ca. 1050-1500)
goh German, Old High (ca. 750-1050)
gem Germanic (Other)
gil Gilbertese
gon Gondi
got Gothic
grb Grebo
grc Greek, Ancient (to 1453)
ell/gre el Greek, Modern (1453-)
kal kl Greenlandic
grn gn Guarani
guj gu Gujarati
hai Haida
hau ha Hausa
haw Hawaiian
heb he Hebrew
her Herero
hil Hiligaynon
him Himachali
hin hi Hindi
hmo Hiri Motu
hun hu Hungarian
hup Hupa
iba Iban
ice/isl is Icelandic
ibo Igbo
ijo Ijo
ilo Iloko
inc Indic (Other)
ine Indo-European (Other)
ind id Indonesian
ina ia Interlingua (International Auxiliary language Association)
ine - Interlingue
iku iu Inuktitut
ipk ik Inupiak
ira Iranian (Other)
gai/iri ga Irish
sga Irish, Old (to 900)
mga Irish, Middle (900 - 1200)
iro Iroquoian languages
ita it Italian
jpn ja Japanese
jav/jaw jv/jw Javanese
jrb Judeo-Arabic
jpr Judeo-Persian
kab Kabyle
kac Kachin
kam Kamba
kan kn Kannada
kau Kanuri
kaa Kara-Kalpak
kar Karen
kas ks Kashmiri
kaw Kawi
kaz kk Kazakh
kha Khasi
khm km Khmer
khi Khoisan (Other)
kho Khotanese
kik Kikuyu
kin rw Kinyarwanda
kir ky Kirghiz
kom Komi
kon Kongo
kok Konkani
kor ko Korean
kpe Kpelle
kro Kru
kua Kuanyama
kum Kumyk
kur ku Kurdish
kru Kurukh
kus Kusaie
kut Kutenai
lad Ladino
lah Lahnda
lam Lamba
oci oc Langue d'Oc (post 1500)
lao lo Lao
lat la Latin
lav lv Latvian
ltz Letzeburgesch
lez Lezghian
lin ln Lingala
lit lt Lithuanian
loz Lozi
lub Luba-Katanga
lui Luiseno
lun Lunda
luo Luo (Kenya and Tanzania)
mac/mak mk Macedonian
mad Madurese
mag Magahi
mai Maithili
mak Makasar
mlg mg Malagasy
may/msa ms Malay
mal Malayalam
mlt ml Maltese
man Mandingo
mni Manipuri
mno Manobo languages
max Manx
mao/mri mi Maori
mar mr Marathi
chm Mari
mah Marshall
mwr Marwari
mas Masai
myn Mayan languages
men Mende
mic Micmac
min Minangkabau
mis Miscellaneous (Other)
moh Mohawk
mol mo Moldavian
mkh Mon-Kmer (Other)
lol Mongo
mon mn Mongolian
mos Mossi
mul Multiple languages
mun Munda languages
nau na Nauru
nav Navajo
nde Ndebele, North
nbl Ndebele, South
ndo Ndongo
nep ne Nepali
new Newari
nic Niger-Kordofanian (Other)
ssa Nilo-Saharan (Other)
niu Niuean
non Norse, Old
nai North American Indian (Other)
nor no Norwegian
nno Norwegian (Nynorsk)
nub Nubian languages
nym Nyamwezi
nya Nyanja
nyn Nyankole
nyo Nyoro
nzi Nzima
oji Ojibwa
ori or Oriya
orm om Oromo
osa Osage
oss Ossetic
oto Otomian languages
pal Pahlavi
pau Palauan
pli Pali
pam Pampanga
pag Pangasinan
pan pa Panjabi
pap Papiamento
paa Papuan-Australian (Other)
fas/per fa Persian
peo Persian, Old (ca 600 - 400 B.C.)
phn Phoenician
pol pl Polish
pon Ponape
por pt Portuguese
pra Prakrit languages
pro Provencal, Old (to 1500)
pus ps Pushto
que qu Quechua
roh rm Rhaeto-Romance
raj Rajasthani
rar Rarotongan
roa Romance (Other)
ron/rum ro Romanian
rom Romany
run rn Rundi
rus ru Russian
sal Salishan languages
sam Samaritan Aramaic
smi Sami languages
smo sm Samoan
sad Sandawe
sag sg Sango
san sa Sanskrit
srd Sardinian
sco Scots
sel Selkup
sem Semitic (Other)
sr Serbian
scr sh Serbo-Croatian
srr Serer
shn Shan
sna sn Shona
sid Sidamo
bla Siksika
snd sd Sindhi
sin si Singhalese
sit - Sino-Tibetan (Other)
sio Siouan languages
sla Slavic (Other)
ssw ss Siswant
slk/slo sk Slovak
slv sl Slovenian
sog Sogdian
som so Somali
son Songhai
wen Sorbian languages
nso Sotho, Northern
sot st Sotho, Southern
sai South American Indian (Other)
esl/spa es Spanish
suk Sukuma
sux Sumerian
sun su Sudanese
sus Susu
swa sw Swahili
ssw Swazi
sve/swe sv Swedish
syr Syriac
tgl tl Tagalog
tah Tahitian
tgk tg Tajik
tmh Tamashek
tam ta Tamil
tat tt Tatar
tel te Telugu
ter Tereno
tha th Thai
bod/tib bo Tibetan
tig Tigre
tir ti Tigrinya
tem Timne
tiv Tivi
tli Tlingit
tog to Tonga (Nyasa)
ton Tonga (Tonga Islands)
tru Truk
tsi Tsimshian
tso ts Tsonga
tsn tn Tswana
tum Tumbuka
tur tr Turkish
ota Turkish, Ottoman (1500 - 1928)
tuk tk Turkmen
tyv Tuvinian
twi tw Twi
uga Ugaritic
uig ug Uighur
ukr uk Ukrainian
umb Umbundu
und Undetermined
urd ur Urdu
uzb uz Uzbek
vai Vai
ven Venda
vie vi Vietnamese
vol vo Volapük
vot Votic
wak Wakashan languages
wal Walamo
war Waray
was Washo
cym/wel cy Welsh
wol wo Wolof
xho xh Xhosa
sah Yakut
yao Yao
yap Yap
yid yi Yiddish
yor yo Yoruba
zap Zapotec
zen Zenaga
zha za Zhuang
zul zu Zulu
zun Zuni
ISO 639: 2-letter codes
AA "Afar"
AB "Abkhazian"
AF "Afrikaans"
AM "Amharic"
AR "Arabic"
AS "Assamese"
AY "Aymara"
AZ "Azerbaijani"
BA "Bashkir"
BE "Byelorussian"
BG "Bulgarian"
BH "Bihari"
BI "Bislama"
BN "Bengali" "Bangla"
BO "Tibetan"
BR "Breton"
CA "Catalan"
CO "Corsican"
CS "Czech"
CY "Welsh"
DA "Danish"
DE "German"
DZ "Bhutani"
EL "Greek"
EN "English" "American"
EO "Esperanto"
ES "Spanish"
ET "Estonian"
EU "Basque"
FA "Persian"
FI "Finnish"
FJ "Fiji"
FO "Faeroese"
FR "French"
FY "Frisian"
GA "Irish"
GD "Gaelic" "Scots Gaelic"
GL "Galician"
GN "Guarani"
GU "Gujarati"
HA "Hausa"
HI "Hindi"
HR "Croatian"
HU "Hungarian"
HY "Armenian"
IA "Interlingua"
IE "Interlingue"
IK "Inupiak"
IN "Indonesian"
IS "Icelandic"
IT "Italian"
IW "Hebrew"
JA "Japanese"
JI "Yiddish"
JW "Javanese"
KA "Georgian"
KK "Kazakh"
KL "Greenlandic"
KM "Cambodian"
KN "Kannada"
KO "Korean"
KS "Kashmiri"
KU "Kurdish"
KY "Kirghiz"
LA "Latin"
LN "Lingala"
LO "Laothian"
LT "Lithuanian"
LV "Latvian" "Lettish"
MG "Malagasy"
MI "Maori"
MK "Macedonian"
ML "Malayalam"
MN "Mongolian"
MO "Moldavian"
MR "Marathi"
MS "Malay"
MT "Maltese"
MY "Burmese"
NA "Nauru"
NE "Nepali"
NL "Dutch"
NO "Norwegian"
OC "Occitan"
OM "Oromo" "Afan"
OR "Oriya"
PA "Punjabi"
PL "Polish"
PS "Pashto" "Pushto"
PT "Portuguese"
QU "Quechua"
RM "Rhaeto-Romance"
RN "Kirundi"
RO "Romanian"
RU "Russian"
RW "Kinyarwanda"
SA "Sanskrit"
SD "Sindhi"
SG "Sangro"
SH "Serbo-Croatian"
SI "Singhalese"
SK "Slovak"
SL "Slovenian"
SM "Samoan"
SN "Shona"
SO "Somali"
SQ "Albanian"
SR "Serbian"
SS "Siswati"
ST "Sesotho"
SU "Sudanese"
SV "Swedish"
SW "Swahili"
TA "Tamil"
TE "Tegulu"
TG "Tajik"
TH "Thai"
TI "Tigrinya"
TK "Turkmen"
TL "Tagalog"
TN "Setswana"
TO "Tonga"
TR "Turkish"
TS "Tsonga"
TT "Tatar"
TW "Twi"
UK "Ukrainian"
UR "Urdu"
UZ "Uzbek"
VI "Vietnamese"
VO "Volapuk"
WO "Wolof"
XH "Xhosa"
YO "Yoruba"
ZH "Chinese"
ZU "Zulu"

View File

@@ -1,48 +0,0 @@
Morphological Paradigms in the GF Resource Grammar Library
Aarne Ranta
This is a synopsis of the main morphological paradigms for
nouns (``N``), adjectives (``A``), and verbs (``V``).
=English=
```
mkN : (flash : Str) -> N ; -- car, bus, ax, hero, fly, boy
mkN : (man,men : Str) -> N ; -- index, indices
mkN : (man,men,man's,men's : Str) -> N ;
mkN : Str -> N -> N ; -- baby boom
mkA : (happy : Str) -> A ; -- small, happy, free
mkA : (fat,fatter : Str) -> A ;
mkA : (good,better,best,well : Str) -> A
compoundA : A -> A ; -- -/more/most ridiculous
mkV : (cry : Str) -> V ; -- call, kiss, echo, cry, pray
mkV : (stop,stopped : Str) -> V ;
mkV : (drink,drank,drunk : Str) -> V ;
mkV : (run,ran,run,running : Str) -> V ;
mkV : (go,goes,went,gone,going : Str) -> V
```
=French=
```
mkN : (cheval : Str) -> N ; -- pas, prix, nez, bijou, cheval
mkN : (foie : Str) -> Gender -> N ;
mkN : (oeil,yeux : Str) -> Gender -> N ;
mkN : N -> Str -> N
mkA : (cher : Str) -> A ; -- banal, heureux, italien, jeune, amer, carré, joli
mkA : (sec,seche : Str) -> A ;
mkA : (banal,banale,banaux,banalement : Str) -> A ;
mkA : (bon : A) -> (meilleur : A) -> A
prefixA : A -> A ;
mkV : (finir : Str) -> V ; -- aimer, céder, placer, manger, payer, finir
mkV : (jeter,jette,jettera : Str) -> V ;
mkV : V2 -> V
etreV : V -> V ;
reflV : V -> V ;
```

View File

@@ -1,109 +0,0 @@
// Find an element with a certain tag containing a certain text.
function findElement(tagname,text) {
var els=document.body.getElementsByTagName(tagname)
for(var i=0;i<els.length;i++)
if(els[i].innerText==text) return els[i]
return null
}
function text(s) { return document.createTextNode(s); }
function appendChildren(n,ds) {
if(Array.isArray(ds)) for(var i in ds) n.appendChild(ds[i]);
else if(typeof ds=="string")
n.appendChild(text(ds))
else
n.appendChild(ds)
}
function node(tag,cls,ds) {
var n=document.createElement(tag)
if(cls) n.className=cls
if(ds) appendChildren(n,ds)
return n
}
function a(href,txt) {
var a=node("a","",txt)
a.href=href
return a
}
function tr(ds) { return node("tr","",ds) }
function th(d) { return node("th","",d) }
function td(d) { return node("td","",d) }
function forAllLinks(list,f) {
for(var i=0;i<list.length;i++) {
var c=list[i].firstElementChild
if(c && c.tagName=="A" && c.href) f(c)
}
}
/* -------------------------------------------------------------------------- */
// Extract links to the syntax rules
function listrules(ul) {
var rules=[]
if(ul.tagName!="UL") return []
forAllLinks(ul.children,function(c) {
rules.push({href:c.href,text:c.innerText.split(" -")[0],
full:c.innerText})
})
return rules
}
// Extract the links to the paradigm sections for all the languages
function listlangs(ul) {
var langs=[]
if(ul.tagName!="UL") return []
forAllLinks(ul.children,function(c) {
if(/^Paradigms for /.test(c.innerText))
langs.push({href:c.href,text:c.innerText.substr(14),
full:c.innerText})
})
return langs
}
function linklist(links) {
var d=node("td","quicklinks")
for(var i=0;i<links.length;i++) {
var l=a(links[i].href,links[i].text)
l.title=links[i].full
d.appendChild(l)
}
return d
}
function quicklinks() {
// Find the detailed table of contents
var h1toc=findElement("h1","Table of Contents")
var ultoc=h1toc.nextElementSibling
while(ultoc && ultoc.tagName!="UL") ultoc=ultoc.nextElementSibling
var lis=ultoc.children
var syntaxrules=[],langs=[]
// Find the Syntax Rules and Lexical Paradigms sections in the toc
for(var i=0;i<lis.length;i++) {
var li=lis[i],c=li.firstElementChild
if(c.tagName=="A") {
if(/^Syntax Rules /.test(c.innerText))
syntaxrules=listrules(c.nextElementSibling)
else if(c.innerText=="Lexical Paradigms")
langs=listlangs(c.nextElementSibling)
}
}
var table=node("table","quicklinks",
[tr([th("Syntax"),th("Morphology")]),
tr([linklist(syntaxrules),linklist(langs)])])
return node("div","quicklinks",
[text("Quick links"),
node("div","expand",table)])
}
document.body.appendChild(quicklinks())

View File

@@ -1,529 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.org">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf8">
<LINK REL="stylesheet" TYPE="text/css" HREF="../../css/style.css">
<TITLE>GF Resource Grammar Library Documentation and Publications</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<CENTER>
<H1>GF Resource Grammar Library Documentation and Publications</H1>
<FONT SIZE="4"><I>Aarne Ranta</I></FONT><BR>
<FONT SIZE="4">20170119</FONT>
</CENTER>
<P>
<I>To be completed. Contributions welcome - in particular, links to open access publications!</I>
</P>
<H3>Afrikaans</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/afrikaans">http://www.grammaticalframework.org/lib/src/afrikaans</A> (Laurette Pretorius, Laurette Marais)
</UL>
<H3>Amharic</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/amharic">http://www.grammaticalframework.org/lib/src/amharic</A> (Markos Kassa Gobena)
<P></P>
<LI><B>Publications</B>
<P></P>
Markos Kassa Gobena.
<I>Implementing and Open Source Amharic Resource Grammar in GF</I>,
MSc thesis, Chalmers University, 2010.
<A HREF="http://publications.lib.chalmers.se/records/fulltext/146295.pdf">http://publications.lib.chalmers.se/records/fulltext/146295.pdf</A>
</UL>
<H3>Arabic</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/arabic">http://www.grammaticalframework.org/lib/src/arabic</A> (Ali El Dada)
<P></P>
<LI><B>Publications</B>
<P></P>
Ali El Dada.
<I>Arabic Resource Grammar in GF</I>, MSc Thesis, Chalmers University, 2006.
<P></P>
A. El Dada and A. Ranta.
Implementing an Open Source Arabic Resource Grammar in GF.
In M. Mughazy (ed),
<I>Perspectives on Arabic Linguistics XX. Papers from the Twentieth Annual Symposium on Arabic Linguistics, Kalamazoo, March 26</I>
John Benjamins Publishing Company.
2007.
<br>
<I>An outline of the Arabic resource grammar project, focusing on linguistic aspects.</I>
<P></P>
A. El Dada.
Implementation of the Arabic Numerals and their Syntax in GF.
Computational Approaches to Semitic Languages: Common Issues and Resources,
ACL-2007 Workshop,
June 28, 2007, Prague.
2007.
<A HREF="http://acl.ldc.upenn.edu/W/W07/W07-08.pdf">http://acl.ldc.upenn.edu/W/W07/W07-08.pdf</A>
<br>
<I>A case study with the resource grammar, focusing on the morphosyntax</I>
<I>and agreement of constructions with numerals.</I>
</UL>
<H3>Bulgarian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/bulgarian">http://www.grammaticalframework.org/lib/src/bulgarian</A> (Krasimir Angelov)
<P></P>
<LI><B>Publications</B>
<P></P>
K. Angelov.
Type-Theoretical Bulgarian Grammar.
In B. Nordström and A. Ranta (eds),
<I>Advances in Natural Language Processing (GoTAL 2008)</I>,
LNCS/LNAI 5221, Springer,
2008.
<A HREF="http://link.springer.com/chapter/10.1007%2F978-3-540-85287-2_6">http://link.springer.com/chapter/10.1007%2F978-3-540-85287-2_6</A>
<br>
<I>Explains the implementation of a Bulgarian resource grammar in GF.</I>
</UL>
<H3>Catalan</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/catalan">http://www.grammaticalframework.org/lib/src/catalan</A> <A HREF="http://www.grammaticalframework.org/lib/src/romance">http://www.grammaticalframework.org/lib/src/romance</A> (Jordi Saludes, Inari Listenmaa)
</UL>
<H3>Chinese</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/chinese">http://www.grammaticalframework.org/lib/src/chinese</A> (Aarne Ranta, Zhuo Lin Qiqige, Chen Peng, Qiao Haiyan)
<P></P>
<LI><B>Publications</B>
<P></P>
Chen Peng,
Implementation of a Chinese Resource Grammar in Grammatical Framework.
<I>International Journal of Knowledge and Language Processing</I>,
4(1),
2013,
pp. 26-34.
<A HREF="http://www.ijklp.org/archives/vol4no1/Implementation%20of%20Chinese%20Resource%20Grammar%20in%20Grammatical%20Framework.pdf">http://www.ijklp.org/archives/vol4no1/Implementation%20of%20Chinese%20Resource%20Grammar%20in%20Grammatical%20Framework.pdf</A>
<P></P>
Aarne Ranta.
Grammatical Framework and Chinese.
Appendix to the GF book (A. Ranta, <I>Grammatical Framework</I>, CSLI 2011),
2012.
<A HREF="http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf">http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf</A>
</UL>
<H3>Danish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/danish">http://www.grammaticalframework.org/lib/src/danish</A> <A HREF="http://www.grammaticalframework.org/lib/src/scandinavian">http://www.grammaticalframework.org/lib/src/scandinavian</A> (Aarne Ranta)
</UL>
<H3>Dutch</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/dutch">http://www.grammaticalframework.org/lib/src/dutch</A> (Aarne Ranta, Femke Johansson)
</UL>
<H3>English</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/english">http://www.grammaticalframework.org/lib/src/english</A> (Aarne Ranta, Björn Bringert, Krasimir Angelov)
<P></P>
<LI><B>Publications</B>
<P></P>
A. Ranta.
The GF Resource Grammar Library.
<I>Linguistic Issues in Language Technology</I>,
2 (2),
2009.
<A HREF="http://elanguage.net/journals/index.php/lilt/article/viewFile/214/158">PDF</A>
<br>
<I>A systematic presentation of the library from the linguistic point of view.</I>
<I>Not only about English, but English examples abound.</I>
</UL>
<H3>Estonian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/estonian">http://www.grammaticalframework.org/lib/src/estonian</A> (Kaarel Kaljurand, Inari Listenmaa)
</UL>
<H3>Finnish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/finnish">http://www.grammaticalframework.org/lib/src/finnish</A> (Aarne Ranta, Inari Listenmaa)
<P></P>
<LI><B>Publications</B>
<P></P>
A. Ranta.
On the Syntax and Translation of Finnish Discourse Clitics.
In D. Santos, K. Lindén and W. Ng'ang'a (eds),
<I>Shall We Play the Festschrift Game?</I>
<I>Essays on the Occasion of Lauri Carlson's 60th Birthday</I>.
Springer, Heidelberg, 2012.
pp. 227-241.
<A HREF="http://link.springer.com/chapter/10.1007/978-3-642-30773-7_14">http://link.springer.com/chapter/10.1007/978-3-642-30773-7_14</A>
draft version <A HREF="http://www.cse.chalmers.se/~aarne/articles/discourse-clitics.pdf">http://www.cse.chalmers.se/~aarne/articles/discourse-clitics.pdf</A>
<P></P>
A. Ranta.
How predictable is Finnish morphology? An experiment on lexicon construction.
In J. Nivre, M. Dahllöf and B. Megyesi (eds),
<I>Resourceful Language Technology: Festschrift in Honor of Anna Sågvall Hein</I>,
University of Uppsala,
2008.
<A HREF="http://publications.uu.se/abstract.xsql?dbid=8933">http://publications.uu.se/abstract.xsql?dbid=8933</A>
<br>
<I>Presents an experiment on smart paradigms in Finnish.</I>
</UL>
<H3>French</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/french">http://www.grammaticalframework.org/lib/src/french</A> <A HREF="http://www.grammaticalframework.org/lib/src/romance">http://www.grammaticalframework.org/lib/src/romance</A> (Aarne Ranta, Ramona Enache)
</UL>
<H3>German</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/german">http://www.grammaticalframework.org/lib/src/german</A> (Aarne Ranta, Harald Hammarström, Erzsébet Galgóczy)
</UL>
<H3>Greek</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/greek">http://www.grammaticalframework.org/lib/src/greek</A> (Ioanna Papadopoulou)
<P></P>
<LI><B>Publications</B>
<P></P>
Ioanna Papadopoulou.
GF Modern Greek Resource Grammar,
MA thesis, University of Gothenburg,
2013.
<P></P>
Ioanna Papadopoulou.
GF Modern Greek Resource Grammar.
RANLP 2013.
</UL>
<H3>Hebrew</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/hebrew">http://www.grammaticalframework.org/lib/src/hebrew</A> (Dana Dannélls)
<P></P>
<LI><B>Publications</B>
<P></P>
D. Dannélls and J. Camilleri.
Verb Morphology of Hebrew and Maltese - Towards an Open Source Type Theoretical Resource Grammar in GF.
<I>Proceedings of the Language Resources (LRs) and Human Language Technologies (HLT) for Semitic Languages Status, Updates, and Prospects, LREC-2010 Workshop</I>,
Malta, pp. 57-61.
2010.
<A HREF="http://spraakdata.gu.se/svedd/pub/lrec10.pdf">http://spraakdata.gu.se/svedd/pub/lrec10.pdf</A>
</UL>
<H3>Hindi</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/hindi">http://www.grammaticalframework.org/lib/src/hindi</A> <A HREF="http://www.grammaticalframework.org/lib/src/hindustani">http://www.grammaticalframework.org/lib/src/hindustani</A> (Shafqat Virk, K.V.S. Prasad, Muhammad Humayoun, Aarne Ranta)
<P></P>
<LI><B>Publications</B>
<P></P>
Shafqat Virk.
<I>Computational Linguistics Resources for Indo-Iranian Languages</I>,
PhD Thesis, University of Gothenburg, 2013.
<A HREF="http://www.cse.chalmers.se/~virk/shafqat-phd-thesis.pdf">http://www.cse.chalmers.se/~virk/shafqat-phd-thesis.pdf</A>
<P></P>
K.V.S. Prasad and Shafqat Virk.
Computational evidence that
Hindi and Urdu share a grammar but not the lexicon.
In The 3rd Workshop
on South and Southeast Asian NLP, COLING 2012. <I>Reprinted in Shafqat's thesis</I>
</UL>
<H3>Icelandic</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/icelandic">http://www.grammaticalframework.org/lib/src/icelandic</A> (Bjarki Traustason)
<P></P>
<B>Publications</B>
<P></P>
Bjarki Traustason, MSc thesis, Chalmers
</UL>
<H3>Interlingua</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/interlingua">http://www.grammaticalframework.org/lib/src/interlingua</A> (Jean-Philippe Bernardy)
</UL>
<H3>Italian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/italian">http://www.grammaticalframework.org/lib/src/italian</A> <A HREF="http://www.grammaticalframework.org/lib/src/romance">http://www.grammaticalframework.org/lib/src/romance</A> (Aarne Ranta, Ramona Enache, Gabriele Paganelli)
</UL>
<H3>Japanese</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/japanese">http://www.grammaticalframework.org/lib/src/japanese</A> (Liza Zimina)
<P></P>
<LI><B>Publications</B>
<P></P>
Elizaveta Zimina.
GF Japanese Resource Grammar,
MA Thesis, University of Gothenburg,
2012.
<A HREF="http://www.ling.gu.se/~lager/MLT/zimina_thesis_draft.pdf">http://www.ling.gu.se/~lager/MLT/zimina_thesis_draft.pdf</A>
<P></P>
Elizaveta Zimina.
Fitting a Round Peg in a Square Hole: Japanese Resource Grammar in GF.
<I>Advances in Natural Language Processing (JapTAL-2012)</I>
Lecture Notes in Computer Science Volume 7614, 2012, pp 156-167.
<A HREF="http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16">http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16</A>
</UL>
<H3>Latin</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/latin">http://www.grammaticalframework.org/lib/src/latin</A> (Aarne Ranta)
</UL>
<H3>Latvian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/latvian">http://www.grammaticalframework.org/lib/src/latvian</A> (Normunds Gruzitis, Peter Paikens)
<P></P>
<LI><B>Publications</B>
P. Paikens and N. Gruzitis.
An implementation of a Latvian resource grammar in Grammatical Framework,
LREC 2012, pp. 1680-1685.
<A HREF="http://lrec.elra.info/proceedings/lrec2012/pdf/976_Paper.pdf">http://lrec.elra.info/proceedings/lrec2012/pdf/976_Paper.pdf</A>
</UL>
<H3>Maltese</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/maltese">http://www.grammaticalframework.org/lib/src/maltese</A> (John J. Camilleri)
<P></P>
<LI><B>Publications</B>
<P></P>
John J. Camilleri,
MSc thesis, Chalmers University of Technology, 2013.
<P></P>
John J. Camilleri.
A computational grammar for Maltese: Talk at the 4th International Conference on Maltese Linguistics (GĦILM 2013). Lyon, France, 2013.
<A HREF="http://academic.johnjcamilleri.com/presentations/2013-06%20G%C4%A6ILM%201.pdf">http://academic.johnjcamilleri.com/presentations/2013-06%20G%C4%A6ILM%201.pdf</A>
<P></P>
D. Dannélls and J. Camilleri.
Verb Morphology of Hebrew and Maltese - Towards an Open Source Type Theoretical Resource Grammar in GF.
<I>Proceedings of the Language Resources (LRs) and Human Language Technologies (HLT) for Semitic Languages Status, Updates, and Prospects, LREC-2010 Workshop</I>,
Malta, pp. 57-61.
2010.
<A HREF="http://spraakdata.gu.se/svedd/pub/lrec10.pdf">http://spraakdata.gu.se/svedd/pub/lrec10.pdf</A>
</UL>
<H3>Nepali</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/nepali">http://www.grammaticalframework.org/lib/src/nepali</A> (Dinesh Simk)
<P></P>
<LI><B>Publications</B>
<P></P>
Dinesh Simk.
Implementing the GF Resource Grammar for Nepali Language,
MSc thesis, Chalmers University of Technology,
2012.
<A HREF="http://publications.lib.chalmers.se/records/fulltext/161384.pdf">http://publications.lib.chalmers.se/records/fulltext/161384.pdf</A>
</UL>
<H3>Norwegian (bokmål)</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/norwegian">http://www.grammaticalframework.org/lib/src/norwegian</A> <A HREF="http://www.grammaticalframework.org/lib/src/scandinavian">http://www.grammaticalframework.org/lib/src/scandinavian</A> (Aarne Ranta)
</UL>
<H3>Norwegian (nynorsk)</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/nynorsk">http://www.grammaticalframework.org/lib/src/nynorsk</A> (Stian Rødven Eide) <A HREF="http://www.grammaticalframework.org/lib/src/scandinavian">http://www.grammaticalframework.org/lib/src/scandinavian</A> (Aarne Ranta)
</UL>
<H3>Persian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/persian">http://www.grammaticalframework.org/lib/src/persian</A> (Shafqat Virk, Elnaz Abolahrar, Sofy Moradi)
<P></P>
<LI><B>Publications</B>
<P></P>
Shafqat Mumtaz Virk and Elnaz Abolahrar.
An Open Source Persian Computational Grammar,
LREC 2012, pp. 1686-1693.
<A HREF="http://www.lrec-conf.org/proceedings/lrec2012/pdf/1028_Paper.pdf">http://www.lrec-conf.org/proceedings/lrec2012/pdf/1028_Paper.pdf</A>
</UL>
<H3>Polish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/polish">http://www.grammaticalframework.org/lib/src/polish</A> (Adam Slaski, Ilona Novak)
<P></P>
<LI><B>Publications</B>
<P></P>
Adam Slaski.
Some Interesting Features of the Polish Language in Grammatical Framework.
Slide presentation, TYPES 2010, Warsaw,
2010.
<A HREF="http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf">http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf</A>
</UL>
<H3>Punjabi</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/punjabi">http://www.grammaticalframework.org/lib/src/punjabi</A> (Shafqat Virk, Muhammad Humayoun)
<P></P>
<LI><B>Publications</B>
<P></P>
S. Virk, M. Humayoun, and A. Ranta.
An Open-Source Punjabi Resource Grammar.
Proceedings of RANLP-2011, Recent Advances in Natural Language Processing,
Hissar, Bulgaria, 12-14 September, 2011.
pp. 70-76.
<A HREF="http://lml.bas.bg/~iva/ranlp2011/RANLR2011_Proceedings.PDF">http://lml.bas.bg/~iva/ranlp2011/RANLR2011_Proceedings.PDF</A>
<P></P>
M. Humayoun and A. Ranta.
Developing Punjabi Morphology, Corpus and Lexicon.
<I>The 24th Pacific Asia conference on Language, Information and Computation (PACLIC24)</I>,
2010.
</UL>
<H3>Romanian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/romanian">http://www.grammaticalframework.org/lib/src/romanian</A> (Ramona Enache)
<P></P>
<LI><B>Publications</B>
<P></P>
R. Enache, A. Ranta, and K. Angelov.
An Open-Source Computational Grammar of Romanian.
A. Gelbukh (ed.), <I>CiCLING-2010</I>,
LNCS 6008,
2010.
</UL>
<H3>Russian</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/russian">http://www.grammaticalframework.org/lib/src/russian</A> (Janna Khegai, Nikita Frolov)
<P></P>
<LI><B>Publications</B>
<P></P>
J. Khegai.
GF parallel resource grammars and Russian.
In proceedings of ACL2006
(The joint conference of the International Committee on Computational
Linguistics and the Association for Computational Linguistics) (pp. 475-482),
Sydney, Australia, July 2006.
<P></P>
J. Khegai and A. Ranta.
Building and Using a Russian Resource Grammar in GF.
In A. Gelbukh (ed),
<I>Intelligent Text Processing and Computational Linguistics (CICLing-2004)</I>,
Seoul, Korea, February 2003,
Springer LNCS 945,
pp. 38-41,
2004.
</UL>
<H3>Sindhi</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/sindhi">http://www.grammaticalframework.org/lib/src/sindhi</A> (Jherna Devi Oad)
<P></P>
<LI><B>Publications</B>
<P></P>
Jherna Devi Oad.
Implementing GF Resource Grammar for Sindhi language,
MSc Thesis, Chalmers University of Technology,
2012.
<A HREF="http://publications.lib.chalmers.se/records/fulltext/163234.pdf">http://publications.lib.chalmers.se/records/fulltext/163234.pdf</A>
</UL>
<H3>Spanish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/spanish">http://www.grammaticalframework.org/lib/src/spanish</A> <A HREF="http://www.grammaticalframework.org/lib/src/romance">http://www.grammaticalframework.org/lib/src/romance</A>
(Aarne Ranta, Ingrid Andersson, Therese Söderberg, Inari Listenmaa)
</UL>
<H3>Swahili</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/swahili">http://www.grammaticalframework.org/lib/src/swahili</A> (Wanjiku Ng'ang'a)
</UL>
<UL>
<LI><B>Publications</B>
<P></P>
Wanjiku Ng'ng'a.
Building Swahili Resource Grammars for the Grammatical Framework,
In D. Santos, K. Lindén and W. Ng'ang'a (eds),
<I>Shall We Play the Festschrift Game?</I>
<I>Essays on the Occasion of Lauri Carlson's 60th Birthday</I>.
Springer, Heidelberg, 2012.
pp. 227-241.
<A HREF="http://link.springer.com/chapter/10.1007/978-3-642-30773-7_13">http://link.springer.com/chapter/10.1007/978-3-642-30773-7_13</A>
</UL>
<H3>Swedish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/swedish">http://www.grammaticalframework.org/lib/src/swedish</A> <A HREF="http://www.grammaticalframework.org/lib/src/scandinavian">http://www.grammaticalframework.org/lib/src/scandinavian</A> (Aarne Ranta, Malin Ahlberg, Markus Forsberg)
<P></P>
<LI><B>Publications</B>
<P></P>
Malin Ahlberg.
<I>Towards a Wide-Coverage Grammar for Swedish Using GF</I>,
MSc thesis, University of Gothenburg,
2012.
<A HREF="https://gupea.ub.gu.se/bitstream/2077/28838/1/gupea_2077_28838_1.pdf">https://gupea.ub.gu.se/bitstream/2077/28838/1/gupea_2077_28838_1.pdf</A>
<P></P>
Malin Ahlberg and Ramona Enache.
A Type-Theoretical Wide-Coverage Computational Grammar for Swedish.
P. Sojka et al (eds), TSD 2012, LNCS 7499, pp. 183-190.
<A HREF="http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf">http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf</A>
</UL>
<H3>Thai</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/thai">http://www.grammaticalframework.org/lib/src/thai</A> (Aarne Ranta, Chotiros Kairoje)
</UL>
<H3>Turkish</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/turkish">http://www.grammaticalframework.org/lib/src/turkish</A> (Server Cimen)
</UL>
<H3>Urdu</H3>
<UL>
<LI><B>Source</B>: <A HREF="http://www.grammaticalframework.org/lib/src/urdu">http://www.grammaticalframework.org/lib/src/urdu</A> <A HREF="http://www.grammaticalframework.org/lib/src/hindustani">http://www.grammaticalframework.org/lib/src/hindustani</A> (Shafqat Virk, Muhamman Humayoun)
<P></P>
<LI><B>Publications</B>
<P></P>
S. Virk, M. Humayoun, and A. Ranta.
An Open Source Urdu Resource Grammar.
<I>Proceedings of the 8th Workshop on Asian Language Resources (Coling 2010 workshop)</I>,
2010.
<P></P>
M. Humayoun, H. Hammarström, and A. Ranta.
Urdu Morphology, Orthography and Lexicon Extraction.
<I>CAASL-2: The Second Workshop on Computational Approaches to Arabic Script-based Languages</I>,
July 21-22, 2007, LSA 2007 Linguistic Institute, Stanford University.
2007.
<P></P>
See also <B>Hindi</B> above.
</UL>
<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
<!-- cmdline: txt2tags -thtml rgl-publications.txt -->
</BODY></HTML>

View File

@@ -67,6 +67,16 @@ http://acl.ldc.upenn.edu/W/W07/W07-08.pdf
//and agreement of constructions with numerals.// //and agreement of constructions with numerals.//
===Basque===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/basque (Inari Listenmaa, Francis Tyers)
- **Publications**
Inari Listenmaa.
//Formal Methods for Testing Grammars.// PhD thesis. Chalmers University of Technology and University of Gothenburg. 2019. [PDF https://gupea.ub.gu.se/bitstream/2077/59037/1/gupea_2077_59037_1.pdf]
#BR
//Mentioned in Chapter 5 of the thesis.//
===Bulgarian=== ===Bulgarian===
@@ -117,6 +127,10 @@ Appendix to the GF book (A. Ranta, //Grammatical Framework//, CSLI 2011),
http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf
===Czech===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/czech (Aarne Ranta, Michal Měchura)
===Danish=== ===Danish===
@@ -155,8 +169,13 @@ The GF Resource Grammar Library.
- **Source**: http://www.grammaticalframework.org/lib/src/estonian (Kaarel Kaljurand, Inari Listenmaa) - **Source**: http://www.grammaticalframework.org/lib/src/estonian (Kaarel Kaljurand, Inari Listenmaa)
%- **Publications** - **Publications**
Inari Listenmaa and Kaarel Kaljurand.
Computational Estonian Grammar in Grammatical Framework.
//Proceedings of the SALTMIL Workshop at LREC//,
2014.
[PDF http://ixa2.si.ehu.es/~jipsagak/SALTMIL/LREC_2014_Workshop_Proceedings_Saltmil.pdf]
===Finnish=== ===Finnish===
@@ -256,6 +275,9 @@ In The 3rd Workshop
on South and Southeast Asian NLP, COLING 2012. //Reprinted in Shafqat's thesis// on South and Southeast Asian NLP, COLING 2012. //Reprinted in Shafqat's thesis//
===Hungarian===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/hungarian (Inari Listenmaa, Julia Jansson)
===Icelandic=== ===Icelandic===
@@ -281,8 +303,6 @@ Bjarki Traustason, MSc thesis, Chalmers
%- **Publications** %- **Publications**
===Japanese=== ===Japanese===
- **Source**: http://www.grammaticalframework.org/lib/src/japanese (Liza Zimina) - **Source**: http://www.grammaticalframework.org/lib/src/japanese (Liza Zimina)
@@ -302,14 +322,31 @@ Lecture Notes in Computer Science Volume 7614, 2012, pp 156-167.
http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16 http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16
===Korean===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/korean (Inari Listenmaa)
===Latin=== ===Latin===
- **Source**: http://www.grammaticalframework.org/lib/src/latin (Aarne Ranta) - **Source**: http://www.grammaticalframework.org/lib/src/latin (Herbert Lange, Aarne Ranta)
%- **Publications** - **Publications**
Herbert Lange.
Erstellen einer Grammatik für das Lateinische im “Grammatical Framework”,
Masters thesis (Magiserarbeit), Ludwig-Maximilians-University Munich, 2013.
Herbert Lange. Implementation of a Latin Grammar in Grammatical Framework, //DATeCH//, 2017.
Herbert Lange and Peter Ljunglöf.
MULLE: A grammar-based Latin language learning tool to supplement the classroom setting.
//Proceedings of the 5th Workshop on Natural Language Processing Techniques for Educational Applications//,
2018.
[PDF https://www.aclweb.org/anthology/W18-3715.pdf]
#BR
//Latin RGL used in a language-learning application.//
===Latvian=== ===Latvian===
@@ -397,6 +434,15 @@ Slide presentation, TYPES 2010, Warsaw,
http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf
===Portuguese===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/portuguese (Bruno Cuconato)
- **Publications**
Bruno Cuconato Claro.
//A computational grammar for Portuguese//. MSc thesis. Rio de Janeiro, 2019.
===Punjabi=== ===Punjabi===
@@ -438,7 +484,7 @@ LNCS 6008,
===Russian=== ===Russian===
- **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov) - **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov, Roman Suzi)
- **Publications** - **Publications**
@@ -475,6 +521,21 @@ MSc Thesis, Chalmers University of Technology,
http://publications.lib.chalmers.se/records/fulltext/163234.pdf http://publications.lib.chalmers.se/records/fulltext/163234.pdf
===Slovak===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovak (Aarne Ranta, Slavomír Čéplö, Michal Měchura)
===Slovenian===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovenian (Krasimir Angelov, Anna Ehrlemark)
===Somali===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/somali (Inari Listenmaa)
===Spanish=== ===Spanish===
- **Source**: http://www.grammaticalframework.org/lib/src/spanish http://www.grammaticalframework.org/lib/src/romance - **Source**: http://www.grammaticalframework.org/lib/src/spanish http://www.grammaticalframework.org/lib/src/romance
@@ -485,7 +546,8 @@ http://publications.lib.chalmers.se/records/fulltext/163234.pdf
===Swahili=== ===Swahili===
- **Source**: http://www.grammaticalframework.org/lib/src/swahili (Wanjiku Ng'ang'a) - **Source**: http://www.grammaticalframework.org/lib/src/swahili (Benson Kituku).
- **Previous version**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/swahili/old (Wanjiku Ng'ang'a).
- **Publications** - **Publications**
@@ -519,10 +581,6 @@ P. Sojka et al (eds), TSD 2012, LNCS 7499, pp. 183-190.
http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf
===Thai=== ===Thai===
- **Source**: http://www.grammaticalframework.org/lib/src/thai (Aarne Ranta, Chotiros Kairoje) - **Source**: http://www.grammaticalframework.org/lib/src/thai (Aarne Ranta, Chotiros Kairoje)
@@ -556,3 +614,17 @@ July 21-22, 2007, LSA 2007 Linguistic Institute, Stanford University.
2007. 2007.
See also **Hindi** above. See also **Hindi** above.
===Zulu===
- **Source:** https://github.com/LauretteM/gf-rgl-zul/tree/master/src/zulu (Laurette Marais, Laurette Pretorius)
- **Publications**
Laurette Marais, Johannes A. Louw, Jaco Badenhorst, Karen Calteaux, Ilana Wilken, Nina van Niekerk,and Glenn Stein.
AwezaMed: A Multilingual, MultimodalSpeech-To-Speech Translation Application for Maternal Health Care.
//Proceedings of the 23rd International Conference on Information Fusion//.
July 6-9, 2020.
#BR
//The article presents a health care translation system, which uses the Zulu resource grammar.//

BIN
doc/rgl-tutorial/Syntax.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
doc/rgl-tutorial/arav.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/rgl-tutorial/engdut.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
doc/rgl-tutorial/hindi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

3209
doc/rgl-tutorial/index.t2t Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
doc/rgl-tutorial/parse.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -1,862 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.org">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf8">
<TITLE>The Status of the GF Resource Grammar Library</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<CENTER>
<H1>The Status of the GF Resource Grammar Library</H1>
<FONT SIZE="4"><I>Aarne Ranta</I></FONT><BR>
<FONT SIZE="4">20170119</FONT>
</CENTER>
<P>
The following table gives the languages currently available in the
GF Resource Grammar Library.
</P>
<P>
For another view, see the
<A HREF="http://www.postcrashgames.com/gf_world/">The Resource Grammar Library coverage map</A> .
</P>
<P>
Corrections and additions are welcome! Notice that only those parts of implementations
that are currently available via <A HREF="http://grammaticalframework.org">http://grammaticalframework.org</A>
are marked in the table
</P>
<TABLE BORDER="1" CELLPADDING="4">
<TR>
<TH>ISO</TH>
<TH>Language</TH>
<TH>Darcs</TH>
<TH>Mini</TH>
<TH>Parad</TH>
<TH>Lex</TH>
<TH>Lang</TH>
<TH>API</TH>
<TH>Symb</TH>
<TH>Irreg</TH>
<TH>Dict</TH>
<TH>Trans</TH>
<TH>tested</TH>
<TH>publ</TH>
<TH COLSPAN="2">authors</TH>
</TR>
<TR>
<TD>Afr</TD>
<TD>Afrikaans</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>*LP,LM</TD>
</TR>
<TR>
<TD>Amh</TD>
<TD>Amharic</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*MK</TD>
</TR>
<TR>
<TD>Ara</TD>
<TD>Arabic</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>AD</TD>
</TR>
<TR>
<TD>Bul</TD>
<TD>Bulgarian</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>*KA</TD>
</TR>
<TR>
<TD>Cat</TD>
<TD>Catalan</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>++</TD>
<TD>-</TD>
<TD>*JS,*IL</TD>
</TR>
<TR>
<TD>Chi</TD>
<TD>Chinese</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>ZL,*AR,*CP,QH</TD>
</TR>
<TR>
<TD>Dan</TD>
<TD>Danish</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>-</TD>
<TD>*AR</TD>
</TR>
<TR>
<TD>Dut</TD>
<TD>Dutch</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>*AR,FJ</TD>
</TR>
<TR>
<TD>Eng</TD>
<TD>English</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>*AR,BB,KA</TD>
</TR>
<TR>
<TD>Est</TD>
<TD>Estonian</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*KK,*IL</TD>
</TR>
<TR>
<TD>Fin</TD>
<TD>Finnish</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>*AR,*IL</TD>
</TR>
<TR>
<TD>Fre</TD>
<TD>French</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>-</TD>
<TD>*AR,RE</TD>
</TR>
<TR>
<TD>Ger</TD>
<TD>German</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>-</TD>
<TD>*AR,HH,EG</TD>
</TR>
<TR>
<TD>Gre</TD>
<TD>Greek(mod)</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*IP</TD>
</TR>
<TR>
<TD>Grc</TD>
<TD>Greek(anc)</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*HLe</TD>
</TR>
<TR>
<TD>Heb</TD>
<TD>Hebrew</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*DD</TD>
</TR>
<TR>
<TD>Hin</TD>
<TD>Hindi</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*SV,*KP,MH,AR,PK</TD>
</TR>
<TR>
<TD>Ice</TD>
<TD>Icelandic</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*BT</TD>
</TR>
<TR>
<TD>Ina</TD>
<TD>Interlingua</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>JB</TD>
</TR>
<TR>
<TD>Ita</TD>
<TD>Italian</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>++</TD>
<TD>-</TD>
<TD>*AR,*RE,GP</TD>
</TR>
<TR>
<TD>Jpn</TD>
<TD>Japanese</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*LZ</TD>
</TR>
<TR>
<TD>Lat</TD>
<TD>Latin</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>*AR,*HLa</TD>
</TR>
<TR>
<TD>Lav</TD>
<TD>Latvian</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*NG,*PP</TD>
</TR>
<TR>
<TD>Mlt</TD>
<TD>Maltese</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*JC</TD>
</TR>
<TR>
<TD>Mon</TD>
<TD>Mongolian</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*NE</TD>
</TR>
<TR>
<TD>Nep</TD>
<TD>Nepali</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*DS</TD>
</TR>
<TR>
<TD>Nno</TD>
<TD>Norwegian(n)</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>*SRE</TD>
</TR>
<TR>
<TD>Nor</TD>
<TD>Norwegian(b)</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>-</TD>
<TD>*AR</TD>
</TR>
<TR>
<TD>Pes</TD>
<TD>Persian</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*SV,*EA,SM</TD>
</TR>
<TR>
<TD>Pnb</TD>
<TD>Punjabi</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*SV,MH</TD>
</TR>
<TR>
<TD>Pol</TD>
<TD>Polish</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>IN,*AS</TD>
</TR>
<TR>
<TD>Ron</TD>
<TD>Romanian</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*RE</TD>
</TR>
<TR>
<TD>Rus</TD>
<TD>Russian</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>JK,*NF</TD>
</TR>
<TR>
<TD>Snd</TD>
<TD>Sindhi</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*SV,*JD</TD>
</TR>
<TR>
<TD>Spa</TD>
<TD>Spanish</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>+</TD>
<TD>++</TD>
<TD>-</TD>
<TD>*AR,IA,TS,*IL</TD>
</TR>
<TR>
<TD>Swa</TD>
<TD>Swahili</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>*WN,JM</TD>
</TR>
<TR>
<TD>Swe</TD>
<TD>Swedish</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>*MA,*AR,MF</TD>
</TR>
<TR>
<TD>Tha</TD>
<TD>Thai</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>*AR,CK</TD>
</TR>
<TR>
<TD>Tsn</TD>
<TD>Tswana</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>*LPs,AB</TD>
</TR>
<TR>
<TD>Tur</TD>
<TD>Turkish</TD>
<TD>+</TD>
<TD>-</TD>
<TD>++</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>*SC,KA</TD>
</TR>
<TR>
<TD>Urd</TD>
<TD>Urdu</TD>
<TD>+</TD>
<TD>+</TD>
<TD>++</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>+</TD>
<TD>-</TD>
<TD>-</TD>
<TD>-</TD>
<TD>+</TD>
<TD>+</TD>
<TD>*SV,MH</TD>
</TR>
</TABLE>
<P>
ISO = 3-letter ISO language code, used in library file names
(mostly ISO 639-2 B (bibliographic))
</P>
<P>
Darcs = available in the darcs repository of <S><A HREF="http://code.haskell.org/gf">http://code.haskell.org/gf</A></S> <A HREF="http://www.grammaticalframework.org/">http://www.grammaticalframework.org/</A>
</P>
<P>
Mini = minimal resource, compiles with <CODE>make minimal</CODE> (obsolete)
</P>
<P>
Parad = <CODE>Paradigms</CODE> file complete for major POS, ++ means with smart paradigms
</P>
<P>
Lex = the resource <CODE>Lexicon</CODE> (nearly) complete
</P>
<P>
Lang = the resource <CODE>Syntax</CODE> (nearly) complete
</P>
<P>
API = the <CODE>Syntax</CODE> compiles
</P>
<P>
API = the <CODE>Symbolic</CODE> API compiles
</P>
<P>
Irreg = the <CODE>Irreg</CODE> module with irregular verbs exists
</P>
<P>
Dict = the <CODE>Dict</CODE> module, large-scale morphological lexicon, exists
</P>
<P>
Trans = large-scale translation module and dictionary exists
</P>
<P>
tested = tested in some applications, ++ means extensively tested with no major issues
</P>
<P>
publ = publications available, see <A HREF="./rgl-publications.html">RGL publication list</A>
</P>
<P>
authors = main contributors, * means still active
(ready to fix bugs, answer to questions, etc)
</P>
<H3>Author codes</H3>
<P>
AB Ansu Berg,
AD Ali El Dada,
AR Aarne Ranta,
AS Adam Slaski,
BB Björn Bringert,
BT Bjarki Traustason,
CK Chotiros Kairoje,
CP Chen Peng,
DD Dana Dannélls,
DS Dinesh Simk,
EA Elnaz Abolahrar,
EG Erzsébet Galgóczy
FJ Femke Johansson,
HH Harald Hammarström,
HLa Herbert Lange,
HLe Hans Leiss,
GP Gabriele Paganelli,
IA Ingrid Andersson,
IL Inari Listenmaa,
IN Ilona Novak,
IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy,
JC John J. Camilleri,
JD Jherna Devi,
JK Janna Khegai,
JM Juliet Mutahi,
JS Jordi Saludes,
KA Krasimir Angelov,
KK Kaarel Kaljurand,
KP Kuchi Prasad,
LM Laurette Marais,
LP Laurette Pretorius,
LZ Liza Zimina,
MA Malin Ahlberg,
MF Markus Forsberg,
MK Markos Kassa Gobena,
MH Muhammad Humayoun,
NE Nyamsuren Erdenebadrakh,
NF Nick Frolov,
NG Normunds Gruzitis,
QH Qiao Haiyan,
RE Ramona Enache,
PP Peteris Paikens,
SC Server Cimen,
SM Sofy Moradi,
SRE Stian Rødven Eide,
SV Shafqat Virk,
TH Therese Söderberg,
WN Wanjiku Ng'ang'a,
ZL Zhuo Lin Qiqige
</P>
<H2>Rules</H2>
<P>
Only components available at <A HREF="http://grammaticalframework.org">http://grammaticalframework.org</A> are indicated in the table
(exceptions: Ancient Greek, Mongolian, to appear soon).
</P>
<P>
If you want to work on a language already in the table, please be kind and contact the
active authors of it.
</P>
<P>
Feel free to start a new language that is not yet in the table - but let us know and
contribute some code as soon as you can!
</P>
<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
<!-- cmdline: txt2tags -thtml status.txt -->
</BODY></HTML>

View File

@@ -11,60 +11,63 @@ For another view, see the
[The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] . [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] .
Corrections and additions are welcome! Notice that only those parts of implementations Corrections and additions are welcome! Notice that only those parts of implementations
that are currently available via http://grammaticalframework.org that are currently available via https://github.com/GrammaticalFramework/gf-rgl/
are marked in the table are marked in the table
|| ISO | Language | Darcs | Mini | Parad | Lex | Lang | API | Symb | Irreg | Dict | Trans | tested | publ | authors || || ISO | Language | Parad | Lex | Lang | API | Symb | Irreg | Dict | WN | tested | publ | authors ||
| Afr | Afrikaans | + | - | ++ | + | + | + | - | - | - | - | - | - | *LP,LM | Afr | Afrikaans | ++ | + | + | + | - | - | - | - | - | - | *LP,LM |
| Amh | Amharic | + | + | ++ | + | + | - | - | - | - | - | - | + | *MK | Amh | Amharic | ++ | + | + | - | - | - | - | - | - | + | *MK |
| Ara | Arabic | + | + | + | + | - | - | - | - | - | - | - | + | AD | Ara | Arabic | + | + | + | + | + | - | - | - | + | + | AD,*IL |
| Bul | Bulgarian | + | + | + | + | + | + | + | + | + | + | ++ | + | *KA | Bul | Bulgarian | + | + | + | + | + | + | + | + | ++ | + | *KA |
| Cat | Catalan | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL | Cat | Catalan | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL |
| Chi | Chinese | + | - | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH | Chi | Chinese | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH |
| Dan | Danish | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR | Cze | Czech | + | + | + | + | - | - | - | - | + | - | *AR,*MM |
| Dut | Dutch | + | + | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ | Dan | Danish | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Eng | English | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA | Dut | Dutch | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ |
| Est | Estonian | + | - | ++ | + | + | + | - | - | - | - | + | + | *KK,*IL | Eng | English | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA |
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL | Est | Estonian | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL |
| Fre | French | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,RE | Eus | Basque | ++ | + | + | + | - | - | - | - | - | + | *IL |
| Ger | German | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,HH,EG | Fin | Finnish | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL |
| Gre | Greek(mod) | + | - | ++ | + | + | + | - | - | - | - | - | + | *IP | Fre | French | ++ | + | + | + | + | + | + | - | ++ | - | *AR,RE |
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | - | - | + | *HLe | Ger | German | ++ | + | + | + | + | + | + | - | ++ | - | *AR,HH,EG |
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | - | - | + | *DD | Gre | Greek(mod) | ++ | + | + | + | - | - | - | - | - | + | *IP |
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | + | + | + | *SV,*KP,MH,AR,PK | Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | + | *HLe |
| Ice | Icelandic | + | - | ++ | + | + | + | - | - | - | - | - | + | *BT | Heb | Hebrew | - | - | - | - | - | - | - | - | - | + | *DD |
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | - | - | - | JB | Hin | Hindi | ++ | + | + | + | + | - | - | - | + | + | *SV,*KP,MH,AR,PK |
| Ita | Italian | + | + | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP | Hun | Hungarian | ++ | + | + | + | + | - | - | - | + | - | *IL,*JJ |
| Jpn | Japanese | + | - | ++ | + | + | + | - | - | - | + | + | + | *LZ | Ice | Icelandic | ++ | + | + | + | - | - | - | - | - | + | *BT |
| Lat | Latin | + | - | - | - | - | - | - | - | + | - | - | - | *AR,*HLa | Ina | Interlingua | ++ | + | + | - | - | - | - | - | - | - | JB |
| Lav | Latvian | + | - | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP | Ita | Italian | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP |
| Mlt | Maltese | + | + | ++ | + | + | + | + | - | - | - | - | + | *JC | Jpn | Japanese | ++ | + | + | + | - | - | - | - | + | + | *LZ |
| Mon | Mongolian | + | - | ++ | + | + | + | - | - | + | - | - | + | *NE | Kor | Korean | ++ | + | + | + | + | - | - | - | + | - | *IL |
| Nep | Nepali | + | + | ++ | + | + | - | - | - | - | - | - | + | *DS | Lat | Latin | - | - | - | - | - | - | + | - | - | - | *AR,*HLa |
| Nno | Norwegian(n) | + | + | ++ | + | + | + | + | + | - | - | - | - | *SRE | Lav | Latvian | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP |
| Nor | Norwegian(b) | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR | Mlt | Maltese | ++ | + | + | + | + | - | - | - | - | + | *JC |
| Pes | Persian | + | - | + | + | + | + | - | - | - | - | + | + | *SV,*EA,SM | Mon | Mongolian | ++ | + | + | + | - | - | + | - | - | + | *NE |
| Pnb | Punjabi | + | + | + | + | + | + | + | - | - | - | - | + | *SV,MH | Nep | Nepali | ++ | + | + | - | - | - | - | - | - | + | *DS |
| Pol | Polish | + | + | + | + | + | + | + | - | - | - | + | + | IN,*AS | Nno | Norwegian(n) | ++ | + | + | + | + | + | - | - | - | - | *SRE |
| Ron | Romanian | + | + | ++ | + | + | + | + | - | - | - | + | + | *RE | Nor | Norwegian(b) | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Rus | Russian | + | + | ++ | + | + | + | - | - | + | + | - | + | JK,*NF | Pes | Persian | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL |
| Snd | Sindhi | + | + | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD | Pnb | Punjabi | + | + | + | + | + | - | - | - | - | + | *SV,MH |
| Spa | Spanish | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL | Pol | Polish | + | + | + | + | + | - | - | - | + | + | IN,*AS |
| Swa | Swahili | + | - | - | - | - | - | - | - | - | - | - | + | *WN,JM | Por | Portuguese | ++ | + | + | + | + | + | + | + | + | + | *BC |
| Swe | Swedish | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF | Ron | Romanian | ++ | + | + | + | + | - | - | - | + | + | *RE |
| Tha | Thai | + | - | ++ | + | + | + | + | - | - | + | + | - | *AR,CK | Rus | Russian | ++ | + | + | + | - | - | + | - | - | + | JK,NF,*RS |
| Tsn | Tswana | - | - | - | - | - | - | - | - | - | - | - | - | *LPs,AB | Slk | Slovak | + | + | + | + | - | - | - | - | + | - | *AR,*MM,SČ |
| Tur | Turkish | + | - | ++ | + | - | - | - | - | + | - | - | - | *SC,KA | Slv | Slovene | ++ | + | + | + | - | - | - | + | + | - | *KA,AE |
| Urd | Urdu | + | + | ++ | + | + | + | + | - | - | - | + | + | *SV,MH | Snd | Sindhi | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD |
| Som | Somali | + | - | - | - | - | - | - | - | - | - | *IL |
| Spa | Spanish | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL |
| Swa | Swahili | + | + | - | - | - | - | - | - | - | + | *WN,JM,BK |
| Swe | Swedish | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF |
| Tha | Thai | ++ | + | + | + | + | - | - | + | + | - | *AR,CK |
| Tur | Turkish | ++ | + | - | - | - | - | + | + | - | - | *SC,KA |
| Urd | Urdu | ++ | + | + | + | + | - | - | - | + | + | *SV,MH |
ISO = 3-letter ISO language code, used in library file names ISO = 3-letter ISO language code, used in library file names
(mostly ISO 639-2 B (bibliographic)) (mostly ISO 639-2 B (bibliographic))
Darcs = available in the darcs repository of --http://code.haskell.org/gf-- http://www.grammaticalframework.org/
Mini = minimal resource, compiles with ``make minimal`` (obsolete)
Parad = ``Paradigms`` file complete for major POS, ++ means with smart paradigms Parad = ``Paradigms`` file complete for major POS, ++ means with smart paradigms
Lex = the resource ``Lexicon`` (nearly) complete Lex = the resource ``Lexicon`` (nearly) complete
@@ -73,13 +76,13 @@ Lang = the resource ``Syntax`` (nearly) complete
API = the ``Syntax`` compiles API = the ``Syntax`` compiles
API = the ``Symbolic`` API compiles Symb = the ``Symbolic`` API complete
Irreg = the ``Irreg`` module with irregular verbs exists Irreg = the ``Irreg`` module with irregular verbs exists
Dict = the ``Dict`` module, large-scale morphological lexicon, exists Dict = the ``Dict`` module, large-scale morphological lexicon, exists
Trans = large-scale translation module and dictionary exists WN = [WordNet https://cloud.grammaticalframework.org/wordnet] lexicon exists
tested = tested in some applications, ++ means extensively tested with no major issues tested = tested in some applications, ++ means extensively tested with no major issues
@@ -93,9 +96,12 @@ authors = main contributors, * means still active
AB Ansu Berg, AB Ansu Berg,
AD Ali El Dada, AD Ali El Dada,
AE Anna Ehrlemark,
AR Aarne Ranta, AR Aarne Ranta,
AS Adam Slaski, AS Adam Slaski,
BB Björn Bringert, BB Björn Bringert,
BC Bruno Cuconato,
BK Benson Kituku,
BT Bjarki Traustason, BT Bjarki Traustason,
CK Chotiros Kairoje, CK Chotiros Kairoje,
CP Chen Peng, CP Chen Peng,
@@ -115,6 +121,7 @@ IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy, JB Jean-Philippe Bernardy,
JC John J. Camilleri, JC John J. Camilleri,
JD Jherna Devi, JD Jherna Devi,
JJ Julia Jansson,
JK Janna Khegai, JK Janna Khegai,
JM Juliet Mutahi, JM Juliet Mutahi,
JS Jordi Saludes, JS Jordi Saludes,
@@ -128,13 +135,16 @@ MA Malin Ahlberg,
MF Markus Forsberg, MF Markus Forsberg,
MK Markos Kassa Gobena, MK Markos Kassa Gobena,
MH Muhammad Humayoun, MH Muhammad Humayoun,
MM Michal Měchura,
NE Nyamsuren Erdenebadrakh, NE Nyamsuren Erdenebadrakh,
NF Nick Frolov, NF Nick Frolov,
NG Normunds Gruzitis, NG Normunds Gruzitis,
QH Qiao Haiyan, QH Qiao Haiyan,
RE Ramona Enache, RE Ramona Enache,
RS Roman Suzi,
PP Peteris Paikens, PP Peteris Paikens,
SC Server Cimen, SC Server Cimen,
SČ Slavomír Čéplö,
SM Sofy Moradi, SM Sofy Moradi,
SRE Stian Rødven Eide, SRE Stian Rødven Eide,
SV Shafqat Virk, SV Shafqat Virk,
@@ -146,8 +156,7 @@ ZL Zhuo Lin Qiqige
==Rules== ==Rules==
Only components available at http://grammaticalframework.org are indicated in the table Only components available at https://github.com/GrammaticalFramework/gf-rgl/ are indicated in the table.
(exceptions: Ancient Greek, Mongolian, to appear soon).
If you want to work on a language already in the table, please be kind and contact the If you want to work on a language already in the table, please be kind and contact the
active authors of it. active authors of it.

File diff suppressed because it is too large Load Diff

79
doc/synopsis/Makefile Normal file
View File

@@ -0,0 +1,79 @@
# Your GF_LIB_PATH must be set in order for this build script to work
.PHONY: all index clean
GF_alltenses=$(GF_LIB_PATH)/alltenses
GF=gf
GFDOC=gfdoc
ROOT=../..
S=$(ROOT)/src
CONFIG=$(ROOT)/languages.csv
# List of languages extracted from languages.csv, with 'Synopsis' column == y
LANGS=$(shell cat $(CONFIG) | cut -d',' -f1,11 | grep ',y' | cut -d',' -f1)
# This list was constructed by observing what files MkSynopsis.hs reads
SRC_FILES=$(S)/abstract/Common.gf $(S)/abstract/Cat.gf $(S)/api/Constructors.gf $(S)/abstract/Structural.gf $(patsubst %,$S/*/Paradigms%.gf,$(LANGS))
EXAMPLES_OUT=$(patsubst %,api-examples-%.txt,$(LANGS))
INCLUDES=intro.txt categories-intro.txt categories-imagemap.html categories.png additional.txt browse.txt example.txt
TMP=tmp.html
TEMPLATE=template.html
all: index
index: index.html
index.txt: MkSynopsis.hs MkExxTable.hs $(INCLUDES) $(EXAMPLES_OUT) $(SRC_FILES)
runghc -i$(ROOT) MkSynopsis.hs
index-t2t.html: index.txt
txt2tags --target=html --no-headers --quiet --toc --outfile=$@ --infile=$<
sed -i.bak "s/<A NAME=\"\(.*\)\"><\/A>/<div id=\"\1\"><\/div>/" $@
rm "$@.bak"
TITLE=$(shell head -n 1 index.txt)
index.html: index-t2t.html $(TEMPLATE)
pandoc \
--from=html \
--to=html5 \
--standalone \
--template=$(TEMPLATE) \
--metadata='title:"$(TITLE)"' \
--variable='lang:en' \
--variable='rel-root:$(ROOT)/..' \
--css="synopsis.css" \
--include-after-body="quicklinks.html" \
--output=$(TMP) \
index-t2t.html
mv $(TMP) $@
sed -i.bak "s/<table>/<table class=\"table w-auto\">/" $@
sed -i.bak -e '/img src="categories.png"/r categories-imagemap.html' -e '/img src="categories.png"/d' $@
rm "$@.bak"
categories.png: categories.dot
dot -Tpng $^ > $@
categories-imagemap.html: categories.dot
rm -f $@
echo '<img src="categories.png" usemap="#categoriesmap" alt="RGL categories">' > $@
dot -Tcmapx $^ >> $@
api-examples.gfs: api-examples.txt MkExx.hs
runghc MkExx.hs < $< > $@
# Since .gfo files aren't self-contained, the dependencies given here are
# incomplete. But I am thinking that the Try%.gfo file will always be newer
# than any other files it depends on, so the rule will trigger when
# needed anyway. //TH 2018-10-22
api-examples-%.txt: $(GF_alltenses)/Try%.gfo api-examples.gfs
GF_LIB_PATH=$(GF_LIB_PATH) $(GF) -retain -s $< <api-examples.gfs >$@
clean:
rm -rf \
index.txt \
index.html \
api-examples.gfs \
$(EXAMPLES_OUT)

View File

@@ -1,72 +1,62 @@
import MkExxTable import MkExxTable
import System.Process(system) import System.Process(system)
import System.Environment(getArgs)
import System.FilePath((</>),(<.>)) import System.FilePath((</>),(<.>))
import Data.Char import Data.Char
import Data.List import Data.List
import qualified Data.Map as M import qualified Data.Map as M
import Text.Printf import Text.Printf
import Config import Config (loadLangsFrom, LangInfo (..))
import qualified Config
type Cats = [(String,String,String)] type Cats = [(String,String,String)]
type Rules = [(String,String,String)] type Rules = [(String,String,String)]
-- the file generated -- the file generated
synopsis :: FilePath outfile :: FilePath
synopsis = "synopsis.txt" outfile = "index.txt"
-- the languages.csv config file
configFile :: FilePath
configFile = ".." </> ".." </> Config.configFile
-- the language in which revealed examples are shown -- the language in which revealed examples are shown
revealedLang :: String revealedLang :: String
revealedLang = "Eng" revealedLang = "Eng"
-- all languages shown (a copy of this list appears in Makefile) -- | This function puts together a txt2tags file which is then converted to HTML by the Makefile
apiExxFiles :: IO [FilePath]
apiExxFiles = do
langs <- loadLangsFrom (".." </> configFile)
return $
[ "api-examples-" ++ (langCode lang) ++ ".txt"
| lang <- langs
, langSynopsis lang
]
main :: IO () main :: IO ()
main = do main = do
xx <- getArgs langs <- loadLangsFrom configFile >>= return . filter langSynopsis
let isLatex = case xx of
"-tex":_ -> True
_ -> False
cs1 <- getCats commonAPI cs1 <- getCats commonAPI
cs2 <- getCats catAPI cs2 <- getCats catAPI
let cs = sortCats (cs1 ++ cs2) let cs = sortCats (cs1 ++ cs2)
writeFile synopsis "GF Resource Grammar Library: Synopsis" writeFile outfile "GF Resource Grammar Library: Synopsis"
-- append "B. Bringert, T. Hallgren, and A. Ranta"
space space
append "%!Encoding:utf-8" append "%!Encoding:utf-8"
append "%!style(html): ./revealpopup.css"
space
append "%!postproc(html): '#divreveal' '<div class=reveal>'" append "%!postproc(html): '#divreveal' '<div class=reveal>'"
append "%!postproc(html): '#divpopup' '<div class=popup>'" append "%!postproc(html): '#divpopup' '<div class=popup>'"
append "%!postproc(html): '#ediv' '</div>'" append "%!postproc(html): '#ediv' '</div>'"
append "%!postproc(html): '#UL' '<ul>'" append "%!postproc(html): '#UL' '<ul>'"
append "%!postproc(html): '#EUL' '</ul>'" append "%!postproc(html): '#EUL' '</ul>'"
append "%!postproc(html): '#LI' '<li>'" append "%!postproc(html): '#LI' '<li>'"
append "%!postproc(html): '(SRC=\"categories.png\")' '\\1 USEMAP=\"#categories\"'"
append "%!postproc(html): '#LParadigms' '<a name=\"RParadigms\"></a>'" append "%!postproc(html): '#LParadigms' '<a name=\"RParadigms\"></a>'"
append "%!postproc(tex): '#LParadigms' ''" append ("%!postproc(html): '#LANGUAGE_COUNT' '" ++ show (length langs) ++ "'")
append "%!postproc(html): '#quicklinks' '<script src=\"quicklinks.js\"></script>'" append ("%!postproc(html): '#LANGUAGES' '" ++ intercalate ", " (map langName langs) ++ ".'")
append "%!postproc(tex): '#quicklinks' ''"
delimit $ addToolTips cs delimit $ addToolTips cs
include "synopsis-intro.txt" include "intro.txt"
space
title "Categories" title "Categories"
space space
link "Source 1:" commonAPI link "Source 1:" commonAPI
space space
link "Source 2:" catAPI link "Source 2:" catAPI
space space
append "==A hierarchic view==\n" stitle "A hierarchic view"
space
include "categories-intro.txt" include "categories-intro.txt"
append "==Explanations==\n" stitle "Explanations"
delimit $ mkCatTable isLatex cs space
delimit $ mkCatTable cs
space space
title "Syntax Rules and Structural Words" title "Syntax Rules and Structural Words"
space space
@@ -74,42 +64,35 @@ main = do
space space
link "Source 2:" structuralAPI link "Source 2:" structuralAPI
space space
apiExx <- apiExxFiles >>= getApiExx apiExx <- getApiExx (apiExxFiles langs)
rs <- getRules apiExx syntaxAPI rs <- getRules apiExx syntaxAPI
--- putStrLn $ unlines ["p -cat=" ++ last (words t) ++
--- " \"" ++ e ++ "\"" | (_,t,e) <- rs, not (null e)] ----
rs2 <- getRules apiExx structuralAPI rs2 <- getRules apiExx structuralAPI
let rss = rs ++ rs2 let rss = rs ++ rs2
--- mapM_ putStrLn [f ++ " " ++ e | (f,_,e) <- rss] delimit $ mkSplitTables True apiExx cs rss
delimit $ mkSplitTables True isLatex apiExx cs rss
space space
-- title "Structural Words" -- title "Structural Words"
-- space -- space
-- link "Source:" structuralAPI -- link "Source:" structuralAPI
-- space -- space
-- rs <- rulesTable False isLatex cs structuralAPI -- rs <- rulesTable False cs structuralAPI
-- delimit rs -- delimit rs
space space
title "Lexical Paradigms" title "Lexical Paradigms"
paradigmFiles >>= mapM_ (putParadigms isLatex cs) append "#LParadigms"
mapM_ (putParadigms cs) (paradigmFiles langs)
space space
include "synopsis-additional.txt" include "additional.txt"
space space
include "synopsis-browse.txt" include "browse.txt"
space space
title "An Example of Usage" title "An Example of Usage"
space space
include "synopsis-example.txt" include "example.txt"
space space
title "Table of Contents" title "Table of Contents"
space space
append "%%toc" append "%%toc"
space space
append "#quicklinks"
space
let format = if isLatex then "tex" else "html"
system $ "txt2tags -t" ++ format ++ " " ++ " --toc " ++ synopsis
if isLatex then (system $ "pdflatex synopsis.tex") >> return () else return ()
addToolTips :: Cats -> [String] addToolTips :: Cats -> [String]
addToolTips = map f addToolTips = map f
@@ -130,10 +113,10 @@ getCats file = do
(expl,ex) = span (/="e.g.") exp (expl,ex) = span (/="e.g.") exp
_ -> getrs rs ss2 _ -> getrs rs ss2
rulesTable :: ApiExx -> Bool -> Bool -> Cats -> FilePath -> IO [String] rulesTable :: ApiExx -> Bool -> Cats -> FilePath -> IO [String]
rulesTable aexx hasEx isLatex cs file = do rulesTable aexx hasEx cs file = do
rs <- getRules aexx file rs <- getRules aexx file
return $ mkTable hasEx isLatex aexx cs rs return $ mkTable hasEx aexx cs rs
getRules :: ApiExx -> FilePath -> IO Rules getRules :: ApiExx -> FilePath -> IO Rules
@@ -161,14 +144,13 @@ getRules aexx file = do
n:ws | last n == '.' && not (null (init n)) && all isDigit (init n) -> ws n:ws | last n == '.' && not (null (init n)) && all isDigit (init n) -> ws
_ -> e _ -> e
putParadigms :: Bool -> Cats -> (String, FilePath) -> IO () putParadigms :: Cats -> (String, FilePath) -> IO ()
putParadigms isLatex cs (lang,file) = do putParadigms cs (lang,file) = do
stitle ("Paradigms for " ++ lang) stitle ("Paradigms for " ++ lang)
append "#LParadigms"
space space
link "source" file link "source" file
space space
rs <- rulesTable M.empty False isLatex cs file rs <- rulesTable M.empty False cs file
space space
delimit rs delimit rs
space space
@@ -180,25 +162,25 @@ inChunks i f = concat . intersperse ["\n\n"] . map f . chunks i where
-- Makes one table per result category. -- Makes one table per result category.
-- Adds a subsection header for each table. -- Adds a subsection header for each table.
mkSplitTables :: Bool -> Bool -> ApiExx -> Cats -> Rules -> [String] mkSplitTables :: Bool -> ApiExx -> Cats -> Rules -> [String]
mkSplitTables hasEx isLatex aexx cs = concatMap t . addLexicalCats cs . sortRules mkSplitTables hasEx aexx cs = concatMap t . addLexicalCats cs . sortRules
where t (c, xs) = [subtitle c expl] ++ tableOrLink where t (c, xs) = [subtitle c expl, "\n"] ++ tableOrLink
where where
expl = case [e | (n,e,_) <- cs, n == c] of expl = case [e | (n,e,_) <- cs, n == c] of
[] -> "" [] -> ""
e:_ -> e e:_ -> e
tableOrLink = if null xs then parad else mkTable hasEx isLatex aexx cs xs tableOrLink = if null xs then parad else mkTable hasEx aexx cs xs
parad = [ parad = [
"Lexical category, constructors given in", "Lexical category, constructors given in",
"[lexical paradigms #RParadigms]." "[lexical paradigms #RParadigms]."
] ]
mkTable :: Bool -> Bool -> ApiExx -> Cats -> Rules -> [String] mkTable :: Bool -> ApiExx -> Cats -> Rules -> [String]
mkTable hasEx isLatex aexx cs = inChunks chsize (\rs -> header : map (unwords . row) rs) mkTable hasEx aexx cs = inChunks chsize (\rs -> header : map (unwords . row) rs)
where where
chsize = if isLatex then 40 else 1000 chsize = 1000
header = if hasEx then "|| Function | Type | Example ||" header = if hasEx then "|| Function | Type | Example |"
else "|| Function | Type | Explanation ||" else "|| Function | Type | Explanation |"
row (name,typ,ex) = row (name,typ,ex) =
let ntyp = mkIdent (name ++ " : " ++ typ) in let ntyp = mkIdent (name ++ " : " ++ typ) in
if hasEx then ["|", name', "|", typ', "|", ex' ntyp, "|"] if hasEx then ["|", name', "|", typ', "|", ex' ntyp, "|"]
@@ -213,6 +195,7 @@ mkTable hasEx isLatex aexx cs = inChunks chsize (\rs -> header : map (unwords .
expl typ = if null ex then itf "-" else itf ex expl typ = if null ex then itf "-" else itf ex
-- make an example with hover-popup translations -- make an example with hover-popup translations
mkExample :: M.Map String String -> String -> String
mkExample es ex = unwords [ mkExample es ex = unwords [
"#divreveal", "#divreveal",
itf (maybe ex (mkEx revealedLang) (M.lookup revealedLang es)), itf (maybe ex (mkEx revealedLang) (M.lookup revealedLang es)),
@@ -235,35 +218,34 @@ mkIdent = concatMap unspec where
':' -> "-" ':' -> "-"
_ -> [c] _ -> [c]
mkCatTable :: Bool -> Cats -> [String] mkCatTable :: Cats -> [String]
mkCatTable isLatex cs = inChunks chsize (\rs -> header ++ map mk1 rs) cs mkCatTable cs = inChunks chsize (\rs -> header ++ map mk1 rs) cs
where where
header = ["|| Category | Explanation | Example ||"] header = ["|| Category | Explanation | Example |"]
chsize = if isLatex then 40 else 1000 chsize = 1000
mk1 (name,expl,ex) = unwords ["|", showCat cs name, "|", expl, "|", typo ex, "|"] mk1 (name,expl,ex) = unwords ["|", showCat cs name, "|", expl, "|", typo ex, "|"]
typo ex = if take 1 ex == "\"" then itf (init (tail ex)) else ex typo ex = if take 1 ex == "\"" then itf (init (tail ex)) else ex
srcPath = ((</>) "../src") srcPath :: FilePath -> FilePath
srcPath = ((</>) "../../src")
commonAPI = srcPath "abstract/Common.gf" commonAPI = srcPath "abstract/Common.gf"
catAPI = srcPath "abstract/Cat.gf" catAPI = srcPath "abstract/Cat.gf"
syntaxAPI = srcPath "api/Constructors.gf" syntaxAPI = srcPath "api/Constructors.gf"
structuralAPI = srcPath "abstract/Structural.gf" structuralAPI = srcPath "abstract/Structural.gf"
paradigmFiles :: IO [(String,FilePath)] -- all languages shown (a copy of this list appears in Makefile)
paradigmFiles = do apiExxFiles :: [LangInfo] -> [FilePath]
langs <- loadLangsFrom (".." </> configFile) apiExxFiles langs =
return $ [ "api-examples-" ++ (langCode lang) ++ ".txt"
[ (name, srcPath $ printf "%s/Paradigms%s.gf" (langDir lang) (langCode lang))
| lang <- langs | lang <- langs
, langSynopsis lang
, let name = formatName (langDir lang)
] ]
-- | Format language name from directory name paradigmFiles :: [LangInfo] -> [(String,FilePath)]
-- "ancient_greek -> Ancient Greek" paradigmFiles langs =
formatName :: String -> String [ (langName lang, srcPath $ printf "%s/Paradigms%s.gf" (langDir lang) (langCode lang))
formatName = unwords . map (\(s:ss) -> toUpper s : ss) . splitOn (=='_') | lang <- langs
]
-- | Split a string at given character, similar to words -- | Split a string at given character, similar to words
splitOn :: (Char -> Bool) -> String -> [String] splitOn :: (Char -> Bool) -> String -> [String]
@@ -274,18 +256,18 @@ splitOn f s = takeWhile (not.f) s : splitOn f rest
"" -> [] "" -> []
_:xs -> xs _:xs -> xs
append s = appendFile synopsis ('\n':s) append s = appendFile outfile ('\n':s)
title s = append $ "=" ++ s ++ "=" title s = append $ "=" ++ s ++ "="
stitle s = append $ "==" ++ s ++ "==" stitle s = append $ "==" ++ s ++ "=="
include s = append $ "%!include: " ++ s include s = append $ "%!include: " ++ s
space = append "\n" space = append "\n"
delimit ss = mapM_ append ss delimit ss = mapM_ append ss
link s f = append $ s ++ " [``" ++ f ++ "`` " ++ fa ++ "]" where link s f = append $ s ++ " [``" ++ f ++ "`` " ++ f ++ "]"
fa = "http://www.grammaticalframework.org/lib" ++ dropWhile (=='.') f
ttf s = "``" ++ s ++ "``" ttf s = "``" ++ s ++ "``"
itf s = "//" ++ s ++ "//" itf s = "//" ++ s ++ "//"
hiddenLine :: String -> Bool
hiddenLine s = case reverse (words s) of hiddenLine s = case reverse (words s) of
"--%":_ -> True "--%":_ -> True
_ -> False _ -> False
@@ -313,7 +295,7 @@ addLexicalCats cs rss =
resultCat :: (String,String,String) -> String resultCat :: (String,String,String) -> String
resultCat (_,t,_) = last (words t) resultCat (_,t,_) = last (words t)
subtitle :: String -> String -> String
subtitle cat expl = "==" ++ cat ++ e ++ "==" ++ "[" ++ cat ++ "]" subtitle cat expl = "==" ++ cat ++ e ++ "==" ++ "[" ++ cat ++ "]"
where e = if null expl then "" else " - " ++ expl where e = if null expl then "" else " - " ++ expl
@@ -332,6 +314,7 @@ showTyp cs = unwords . map f . words
&& isUpper (head cat) && isUpper (head cat)
-- to work around GHC 6.12 file input -- to work around GHC 6.12 file input
readFileC :: String -> FilePath -> IO String
readFileC cod file = do readFileC cod file = do
let tmp = file <.> "tmp" let tmp = file <.> "tmp"
case cod of case cod of
@@ -342,8 +325,9 @@ readFileC cod file = do
-- 'intelligently' determine the coding of a file -- 'intelligently' determine the coding of a file
---- AR 5/6/2016: now utf8 is used for all languages except Bul, where no characters are shown in documentation anyway ---- AR 5/6/2016: now utf8 is used for all languages except Bul, where no characters are shown in documentation anyway
coding :: FilePath -> String
coding file = case language file of coding file = case language file of
"Bul" -> "CP1251" --- "ISO-8859-1" "Bul" -> "CP1251" --- "ISO-8859-1"
_ -> "utf8" _ -> "utf8"
where
language = reverse . take 3 . drop 3 . reverse language = reverse . take 3 . drop 3 . reverse

View File

@@ -7,10 +7,9 @@
==The Prelude module== ==The Prelude module==
The ``Prelude`` defines commonly used utility functions, in particular for The ``Prelude`` defines commonly used utility functions, in particular for strings and booleans.
strings and booleans.
|| Oper | Type | Explanation || || Oper | Type | Explanation |
| ``SS`` | ``Type`` | the type ``{s : Str}`` | ``SS`` | ``Type`` | the type ``{s : Str}``
| ``ss`` | ``Str -> SS`` | record from string | ``ss`` | ``Str -> SS`` | record from string
| ``nonExist`` | ``Str`` | missing form | ``nonExist`` | ``Str`` | missing form
@@ -30,7 +29,7 @@ strings and booleans.
These functions are hard-coded in GF. They are available without explicit opening, by the used of qualified names, e.g. ``Predef.tk``. These functions are hard-coded in GF. They are available without explicit opening, by the used of qualified names, e.g. ``Predef.tk``.
|| operation | type | explanation || || Oper | Type | Explanation |
| ``PBool`` | ``PType`` | ``PTrue | PFalse`` | ``PBool`` | ``PType`` | ``PTrue | PFalse``
| ``Error`` | ``Type`` | the empty type | ``Error`` | ``Type`` | the empty type
| ``Integer`` | ``Type`` | the type of integers | ``Integer`` | ``Type`` | the type of integers
@@ -57,7 +56,7 @@ These functions are hard-coded in GF. They are available without explicit openin
This module is used for defining formal languages, in particular ones that This module is used for defining formal languages, in particular ones that
use precedence levels and parentheses for grouping subexpressions. use precedence levels and parentheses for grouping subexpressions.
|| Oper | Type | Explanation || || Oper | Type | Explanation |
| ``Prec`` | ``PType`` | precedence levels 0..4 | ``Prec`` | ``PType`` | precedence levels 0..4
| ``TermPrec`` | ``Type`` | string with precedence | ``TermPrec`` | ``Type`` | string with precedence
| ``mkPrec`` | ``Prec -> Str -> TermPrec`` | construct a ``TermPrec`` | ``mkPrec`` | ``Prec -> Str -> TermPrec`` | construct a ``TermPrec``
@@ -75,7 +74,7 @@ This module is used for embedding symbolic notation in natural-language
text constructed by the resource grammar API. It works for all resource text constructed by the resource grammar API. It works for all resource
languages. languages.
|| Function | Type | Example || || Function | Type | Explanation |
| ``symb`` | ``Str -> NP`` | //x// | ``symb`` | ``Str -> NP`` | //x//
| ``symb`` | ``Int -> NP`` | //23// | ``symb`` | ``Int -> NP`` | //23//
| ``symb`` | ``Float -> NP`` | //0.99// | ``symb`` | ``Float -> NP`` | //0.99//
@@ -92,7 +91,7 @@ languages.
This module gives shortcuts for defining predicates (``pred``) and function This module gives shortcuts for defining predicates (``pred``) and function
expressions (``app``). It works for all resource languages. expressions (``app``). It works for all resource languages.
|| Function | Type | Example || || Function | Type | Explanation |
| ``pred`` | ``V -> NP -> Cl`` | //x converges// | ``pred`` | ``V -> NP -> Cl`` | //x converges//
| ``pred`` | ``V2 -> NP -> NP -> Cl`` | //x intersects y// | ``pred`` | ``V2 -> NP -> NP -> Cl`` | //x intersects y//
| ``pred`` | ``V -> NP -> NP -> Cl`` | //x and y intersect// | ``pred`` | ``V -> NP -> NP -> Cl`` | //x and y intersect//
@@ -111,5 +110,3 @@ expressions (``app``). It works for all resource languages.
| ``app`` | ``N2 -> NP -> CN`` | //divisor of x// | ``app`` | ``N2 -> NP -> CN`` | //divisor of x//
| ``app`` | ``N3 -> NP -> NP -> CN`` | //path from x to y// | ``app`` | ``N3 -> NP -> NP -> CN`` | //path from x to y//
| ``app`` | ``N2 -> NP -> NP -> CN`` | //path between x and y// | ``app`` | ``N2 -> NP -> NP -> CN`` | //path between x and y//

View File

@@ -8,12 +8,9 @@ of //C// that takes //D// as an argument. What the constructors exactly are,
and what other arguments they take, is described by separate tables for and what other arguments they take, is described by separate tables for
each category. each category.
| [categories.png] |
%!include(html): ''categories-imagemap.html'' %!include(html): ''categories-imagemap.html''
The rectangular boxes mark open lexical categories, which have constructors The rectangular boxes mark open lexical categories, which have constructors
also in the ``Paradigms`` modules. also in the ``Paradigms`` modules.

View File

@@ -1,5 +1,5 @@
digraph categories { digraph categoriesmap {
size = "11,11" ; size = "11,11" ;
node [href="#\N"]; node [href="#\N"];

View File

@@ -5,7 +5,7 @@ An abstract syntax:
``` ```
abstract Music = { abstract Music = {
cat cat
Kind, Kind ;
Property ; Property ;
fun fun
PropKind : Kind -> Property -> Kind ; PropKind : Kind -> Property -> Kind ;
@@ -23,7 +23,7 @@ A domain lexicon interface:
``` ```
A functor on ``Syntax`` and the domain lexicon interface: A functor on ``Syntax`` and the domain lexicon interface:
``` ```
incomplete concrete MusicI of Music = open Syntax, MusicLex in { incomplete concrete MusicI of Music = open Syntax, LexMusic in {
lincat lincat
Kind = CN ; Kind = CN ;
Property = AP ; Property = AP ;

View File

@@ -1,46 +1,10 @@
Versions: [3.9 ./synopsis-v3.9.html] | latest (this one)
=Introduction= =Introduction=
The GF Resource Grammar Library is the standard library for Grammatical Framework. The GF Resource Grammar Library is the standard library for Grammatical Framework.
It covers the morphology and basic syntax of currently 34 languages: It covers the morphology and basic syntax of currently #LANGUAGE_COUNT languages:
Afrikaans, #LANGUAGES
Arabic,
Bulgarian,
Catalan,
Chinese (simplified),
Danish,
Dutch,
English,
Estonian,
Finnish,
French,
German,
Greek,
Hindi,
Icelandic,
Japanese,
Italian,
Latvian,
Maltese,
Mongolian,
Nepali,
Norwegian (bokmål),
Norwegial (nynorsk),
Persian,
Polish,
Portuguese,
Punjabi,
Romanian,
Russian,
Sindhi,
Spanish,
Swedish,
Thai,
Urdu.
This document contains the most important parts of the GF Resource Grammar API, This document contains the most important parts of the GF Resource Grammar API,
as needed by a GF application programmer. as needed by a GF application programmer.
@@ -49,51 +13,43 @@ to the relevant source files, which give more information. Some of the files hav
not yet been prepared so that the machine generated documentation has the nicest not yet been prepared so that the machine generated documentation has the nicest
possible format. possible format.
% These hardcoded TOC links (chapter 4 onwards) need to be updated as new languages are added.
The main contents are: The main contents are:
- [Chapter 1 #toc2]: categories, with links to the functions for - [Chapter 1 #toc2]: categories, with links to the functions for constructing trees in them.
constructing trees in them. - [Chapter 2 #toc5]: syntactic construction functions, with cross-links and examples.
- [Chapter 2 #toc5]: syntactic construction functions, with cross-links and - [Chapter 3 #toc85]: morphological (lexical) paradigms.
examples. - [Chapter 4 #toc121]: additional libraries.
- [Chapter 3 #toc85]: morphological paradigms. - [Chapter 5 #toc127]: how to "browse" the library by loading the grammars into the ``gf`` command editor.
- [Chapter 4 #toc120]: additional libraries. - [Chapter 6 #toc128]: a brief example of how application grammars can use the resource modules.
- [Chapter 5 #toc126]: how to "browse" the library by - [Detailed table of contents #toc129].
loading the grammars into the ``gf`` command editor.
- [Chapter 6 #toc127]: a brief example of how application grammars can
use the resource modules. The [RGL Browser http://www.grammaticalframework.org/~john/rgl-browser/] tool allows you to interactively browse through
- [Detailed table of contents #toc128]. the library, view all functions in a module's scope, and quickly jump to their definitions.
Other relevant documents: Other relevant documents:
- [The RGL Status Document ./status.html]: the current status of different languages - [The RGL Status Document ../status.html]: the current status of different languages
and the authors of each grammar and the authors of each grammar
- [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] - [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/]
- [RGL Documentation and Publications ./rgl-publications.html]: links to publications and other documentation - [RGL Documentation and Publications ../rgl-publications.html]: links to publications and other documentation
- [More modules gfdoc/sources.html]: extra modules, dictionaries, and - [More modules ../gfdoc/sources.html]: extra modules, dictionaries, and
the internals of the resource grammar the internals of the resource grammar
- [Internal abstract syntax ./absfuns.html]: synopsis of internal - [Internal abstract syntax ../absfuns.html]: synopsis of internal
abstract functions and their Universal Dependency labels abstract functions and their Universal Dependency labels
- [RGL Source Browser ./browse]: look up functions and their source code
- [Minibar http://cloud.grammaticalframework.org/minibar/minibar.html]: - [Minibar http://cloud.grammaticalframework.org/minibar/minibar.html]:
find resource grammar expressions by parsing (select Grammar: LibraryBrowser) find resource grammar expressions by parsing (select Grammar: LibraryBrowser)
or test translations between all languages (select Grammar: ResourceDemo) or test translations between all languages (select Grammar: ResourceDemo)
- [Resource Grammar Tutorial http://www.grammaticalframework.org/doc/gf-lrec-2010.pdf] - [Resource Grammar Tutorial http://www.grammaticalframework.org/lib/doc/rgl-tutorial/index.html],
as presented in LREC-2010. as previously presented in LREC-2010.
- Paper "The GF Resource Grammar Library" by A. Ranta - Paper "The GF Resource Grammar Library" by A. Ranta
(//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of (//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of
the library with linguistic motivations. the library with linguistic motivations.
[PDF http://elanguage.net/journals/index.php/lilt/article/viewFile/214/158] [PDF http://journals.linguisticsociety.org/elanguage/lilt/article/download/214/214-501-1-PB.pdf]
- Paper "Grammars as Software Libraries" by A. Ranta - Paper "Grammars as Software Libraries" by A. Ranta
(In Y. Bertot, G. Huet, J-J. Lévy, and G. Plotkin (eds.), (In Y. Bertot, G. Huet, J-J. Lévy, and G. Plotkin (eds.),
//From Semantics to Computer Science//, Cambridge University Press, //From Semantics to Computer Science//, Cambridge University Press,
Cambridge, pp. 281--308, 2009). Cambridge, pp. 281--308, 2009).
The library from a software engineering point of view. The library from a software engineering point of view.
[PDF http://www.cse.chalmers.se/~aarne/old/articles/libraries-kahn.pdf] [PDF http://www.cse.chalmers.se/~aarne/old/articles/libraries-kahn.pdf]
Many examples in [Chapter 2 #toc5] can be seen in multiple languages by hovering the
mouse over the example, as shown in the following screenshot:
[hovering.png]

View File

@@ -0,0 +1 @@
<script src="quicklinks.js"></script>

168
doc/synopsis/quicklinks.js Normal file
View File

@@ -0,0 +1,168 @@
// Find an element with a certain tag containing a certain text.
function findElement (tagname, text) {
var els = document.body.getElementsByTagName(tagname)
for (var i = 0; i < els.length; i++) {
if (els[i].innerText === text) return els[i]
}
return null
}
function text (s) {
return document.createTextNode(s)
}
function appendChildren (n, ds) {
if (Array.isArray(ds)) for (var i in ds) n.appendChild(ds[i])
else if (typeof ds === 'string') n.appendChild(text(ds))
else n.appendChild(ds)
}
function node (tag, cls, ds) {
var n = document.createElement(tag)
if (cls) n.className = cls
if (ds) appendChildren(n, ds)
return n
}
function a (href, txt) {
var a = node('a', '', txt)
a.href = href
return a
}
function forAllLinks (list, f) {
for (var i = 0; i < list.length; i++) {
var c = list[i].firstElementChild
if (c && c.tagName === 'A' && c.href) f(c)
}
}
/* -------------------------------------------------------------------------- */
// Extract links to the syntax rules
function listrules (ul) {
var rules = []
if (ul.tagName !== 'UL') return []
forAllLinks(ul.children, function (c) {
rules.push({
href: c.href,
text: c.innerText.split(' -')[0],
full: c.innerText
})
})
return rules
}
// Extract the links to the paradigm sections for all the languages
function listlangs (ul) {
var langs = []
if (ul.tagName !== 'UL') return []
forAllLinks(ul.children, function (c) {
if (/^Paradigms for /.test(c.innerText)) {
langs.push({
href: c.href,
text: c.innerText.substr(14),
full: c.innerText
})
}
})
return langs
}
function linklist (links) {
var d = node('div')
for (var i = 0; i < links.length; i++) {
var l = a(links[i].href, links[i].text)
l.title = links[i].full
d.appendChild(l)
d.appendChild(text(' '))
}
return d
}
function quicklinks () {
// Find the detailed table of contents
var h1toc = findElement('h1', 'Table of Contents')
var ultoc = h1toc.nextElementSibling
while (ultoc && ultoc.tagName !== 'UL') {
ultoc = ultoc.nextElementSibling
}
var lis = ultoc.children
var syntaxrules = []
var langs = []
// Find the Syntax Rules and Lexical Paradigms sections in the toc
for (var i = 0; i < lis.length; i++) {
var li = lis[i]
var c = li.firstElementChild
if (c.tagName === 'A') {
if (/^Syntax Rules /.test(c.innerText)) {
syntaxrules = listrules(c.nextElementSibling)
} else if (c.innerText === 'Lexical Paradigms') {
langs = listlangs(c.nextElementSibling)
}
}
}
return node(
'div',
'row',
[ node('div', 'col-5', [ node('h6', '', 'Syntax'), linklist(syntaxrules) ]),
node('div', 'col-7', [ node('h6', '', 'Morphology'), linklist(langs) ])
]
)
}
appendChildren(
document.getElementById('quicklinks'),
[
node('h5', '', 'Quick links'),
quicklinks()
]
)
/* -------------------------------------------------------------------------- */
// Toggle quicklinks
function toggleSidebar () {
var m = document.getElementById('main')
var q = document.getElementById('quicklinks')
var mClasses = 'col-md-9 col-xl-10'
var qClasses = 'col-4 col-md-3 col-xl-2 offset-8 offset-md-9 offset-xl-10'
if (hasClass(q, 'd-none')) {
// Show
addClass(m, mClasses)
addClass(q, qClasses)
removeClass(q, 'd-none')
} else {
// Hide
removeClass(m, mClasses)
removeClass(q, qClasses)
addClass(q, 'd-none')
}
}
document.getElementById('btn-quicklinks-toggle').addEventListener('click', toggleSidebar)
if (window.innerWidth >= 768) {
// Below 768 (== 'md' breakpoint) sidebar overlays content and best left hidden
toggleSidebar()
}
/* -------------------------------------------------------------------------- */
// Helpers
// Won't work on IE9; use className and split
function addClass (elem, classnames) {
for (var c of classnames.split(' ')) elem.classList.add(c)
}
function removeClass (elem, classnames) {
for (var c of classnames.split(' ')) elem.classList.remove(c)
}
// function toggleClass (elem, classnames) {
// for (var c of classnames.split(' ')) elem.classList.toggle(c)
// }
function hasClass (elem, classname) {
return elem.classList.contains(classname)
}

35
doc/synopsis/synopsis.css Normal file
View File

@@ -0,0 +1,35 @@
/* Quick links */
#quicklinks {
line-height: 140%;
}
#quicklinks.sidebar {
overflow-y: scroll;
height: 100%;
position: fixed;
}
#quicklinks a {
display: block;
}
/* Reveal popup */
.popup {
display: none;
background: #ffffccee;
border: 1px solid #dee2e6;
padding: 1em 1em 1em 0;
}
.reveal:hover .popup {
display: block;
position: absolute;
margin: 0 1em;
}
/* General */
.table td, .table th {
padding: 0.5em .75rem;
}

147
doc/synopsis/template.html Normal file
View File

@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ $endif$$pagetitle$</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.2/css/all.css" integrity="sha384-/rXc/GQVaYpyDdyxK+ecHPVYJSN9bmVFBvjA/9eOB+pb3F2w2N6fc5qB9Ew5yIns" crossorigin="anonymous">
$for(css)$
<link rel="stylesheet" href="$css$" />
$endfor$
$if(math)$
$math$
$endif$
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
$for(header-includes)$
$header-includes$
$endfor$
</head>
<body>
$for(include-before)$
$include-before$
$endfor$
<div class="container-fluid">
<div class="row">
<button class="btn btn-light m-1" id="btn-quicklinks-toggle" style="position: fixed; top: 0; right: 0; z-index: 10;">
<i class="fas fa-bars"></i>
</button>
<main role="main" class="col my-3" style="overflow-x: scroll" id="main">
$if(title)$
<header id="title-block-header">
<a href="$rel-root$" title="Home">
<img src="$rel-root$/doc/Logos/gf1.svg" height="200" class="float-md-right ml-3 mb-3 bg-white" alt="GF Logo">
</a>
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
</header>
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
$table-of-contents$
</nav>
$endif$
$body$
</main>
<nav class="d-none sidebar py-3 border-left bg-light" id="quicklinks">
<!-- filled dynamically via quicklinks.js -->
</nav>
</div><!-- .row -->
</div><!-- .container-fluid -->
<footer class="bg-light mt-5 py-5 position-relative">
<div class="container">
<div class="row">
<div class="col-6 col-sm-3">
<a href="$rel-root$">
<i class="fas fa-home"></i>
Home
</a>
<h6 class="text-muted mt-3">Get started</h6>
<ul class="list-unstyled">
<li><a href="https://www.youtube.com/watch?v=x1LFbDQhbso">Google Tech Talk</a></li>
<li><a href="http://cloud.grammaticalframework.org/">GF Cloud</a></li>
<li><a href="$rel-root$/doc/tutorial/gf-tutorial.html">Tutorial</a></li>
<li><a href="$rel-root$/download"><strong>Download GF</strong></a></li>
</ul>
</div>
<div class="col-6 col-sm-3">
<h6 class="text-muted">Learn more</h6>
<ul class="list-unstyled">
<li><a href="$rel-root$/gf-book">The GF Book</a></li>
<li><a href="$rel-root$/doc/gf-refman.html">Reference Manual</a></li>
<li><a href="$rel-root$/doc/gf-shell-reference.html">GF Shell Reference</a></li>
<li><a href="http://www.molto-project.eu/sites/default/files/MOLTO_D2.3.pdf">Best Practices</a></li>
<li><a href="$rel-root$/lib/doc/synopsis/index.html"><strong>RGL Synopsis</strong></a></li>
</ul>
</div>
<div class="col-6 col-sm-3">
<h6 class="text-muted">Develop</h6>
<ul class="list-unstyled">
<li><a href="$rel-root$/doc/gf-developers.html">Developers Guide</a></li>
<li><a href="http://hackage.haskell.org/package/gf/docs/PGF.html">PGF library API (Haskell runtime)</a></li>
<li><a href="$rel-root$/doc/runtime-api.html">PGF library API (C runtime)</a></li>
<li><a href="http://hackage.haskell.org/package/gf/docs/GF.html">GF compiler API</a></li>
<li><a href="$rel-root$/doc/gf-editor-modes.html">Text Editor Support</a></li>
</ul>
</div>
<div class="col-6 col-sm-3">
<h6 class="text-muted">Contribute</h6>
<ul class="list-unstyled">
<li><a href="http://groups.google.com/group/gf-dev">Mailing List</a></li>
<li><a href="https://github.com/GrammaticalFramework/gf-core/issues">Issue Tracker</a></li>
<li><a href="$rel-root$/doc/gf-people.html">Authors</a></li>
<li><a href="http://school.grammaticalframework.org/2018/">Summer School</a></li>
</ul>
<h6 class="text-muted">
Repositories
<i class="fab fa-github ml-1"></i>
</h6>
<a href="https://github.com/GrammaticalFramework/gf-core">GF</a> ·
<a href="https://github.com/GrammaticalFramework/gf-rgl">RGL</a> ·
<a href="https://github.com/GrammaticalFramework/gf-contrib">Contributions</a>
</div>
</div>
</div>
</footer>
$for(include-after)$
$include-after$
$endfor$
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-7811807-3");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>

View File

@@ -1,329 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.org">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf8">
<TITLE>From Resource Grammar to Wide Coverage Translation with GF</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<CENTER>
<H1>From Resource Grammar to Wide Coverage Translation with GF</H1>
<FONT SIZE="4"><I>Aarne Ranta et al.</I></FONT><BR>
<FONT SIZE="4">January-May 2014</FONT>
</CENTER>
<H2>Scope</H2>
<P>
Wide-coverage interlingual translator for
Bulgarian, Chinese, Dutch, English, Finnish, French, German,
Hindi, Italian, Spanish, Swedish.
</P>
<H2>How to use it</H2>
<P>
If you just want to try it before reading more,
here are the main ways to get started:
</P>
<P>
1. <B>Run on our server.</B> <A HREF="http://www.grammaticalframework.org/demos/translation.html">http://www.grammaticalframework.org/demos/translation.html</A>
</P>
<P>
2. <B>Get an Android app.</B> <A HREF="http://www.grammaticalframework.org/demos/app.html">http://www.grammaticalframework.org/demos/app.html</A>
</P>
<P>
3. <B>Compile and run in the shell.</B> Get the latest GF sources (with darcs or github) and then
</P>
<UL>
<LI>compile and install the GF compiler and library and the C runtime (<CODE>pgf-translate</CODE>).
<P></P>
<LI>compile the translator:
<PRE>
cd GF/lib/src
make -j Translate11.pgf
</PRE>
This will take a long time (fifteen minutes or more) and will probably require at least 8GB of RAM.
<P></P>
<LI>run the translator
<PRE>
pgf-translate Translate11.pgf Phr TranslateEng TranslateSwe
</PRE>
with obviously the possibility to vary the source and the target language.
</UL>
<P>
4. To modify the sources, work on the files in
</P>
<PRE>
GF/lib/src/translator/
</PRE>
<P>
It is these files that will be explained below.
</P>
<H2>GF and the RGL</H2>
<P>
GF, Grammatical Framework, was originally designed for the purpose of <B>multilingual controlled language systems</B>,
which would enable high-quality translation on limited domains. The <B>abstract syntax</B> of GF defines the semantic
structures relevant for the domain, and the <B>concrete syntaxes</B> map these structures to grammatically correct
and idiomatic text in each target language. The <B>reversibility</B> of GF enables both <B>generation</B> and <B>parsing</B>,
and thereby <B>translation</B> where the abstract syntax functions as an <B>interlingua</B>.
</P>
<P>
As a bottle-neck of GF applications, it was soon realized that the definition of concrete syntax requires a lot
of manual work and linguistic skill, because of the complexities of natural language syntax and morphology. Some of
the complexities can be ignored in a small system. For instance, in a mathematical system, it may be enough to
use verbs in the present tense only. But very much the same linguistic problems must be solved again and again
in new applications: French verb inflection is the same in mathematics as in a tourist phrasebook. To solve
this problem, the <B>GF Resource Grammar Library</B> (RGL) was developed, to take care of "low-level" linguistic
rules such as inflection, agreement, and word order. This enables the authors of <B>application grammars</B> to focus
on the semantics (when designing the abstract syntax) and on selecting RGL functions that produce the idioms they
want. The RGL grew into an international open-source project, where more than 50 persons have contributed to
implementing it for 29 languages by the time of writing this.
</P>
<H2>Scaling up GF translation</H2>
<P>
The RGL was thus originally designed to be used just as its name says: as a library
for application grammars. Only the latter were meant to be used as <B>top-level grammars</B>, i.e. for
parsing, generation, and translation at run time. Little attention was therefore
paid to the usability of RGL as a top-level
grammar by itself. But when applications accumulated, ranging from technical text to spoken dialogue, the coverage
of the RGL grew into a coverage that approximates a "complete grammar" of many of the languages.
And recently, there has indeed been success in using the RGL as a wide-coverage translation grammar,
mainly due to Krasimir Angelov's efforts to scale up the size of GF applications from language fragments
to open-text processing. This success is a result of four lines of development:
</P>
<UL>
<LI><B>More efficient processing</B>, both due to better algorithms and to an optimized C implementation of a PGF
interpreter, the <B>C runtime</B>, achieving speeds competitive with the state of the art, e.g. the Stanford parser.
This development is also based on the work of Peter Ljunglöf on GF parsing and Lauri Alanko on the C runtime.
<P></P>
<LI><B>Large-scale dictionaries</B>, both manually built and extracted from free sources, and linked into a multilingual
translation dictionary now covering 10k to 60k entries for eleven languages. This work was started by Björn Bringert,
who ported the Oxford Advanced Learner's Dictionary of English to GF.
<P></P>
<LI><B>Probabilistic disambiguation</B>, using a model trained from the Penn Treebank. Due to the common abstract syntax,
the same model can be used for other languages as well, even though the adequacy of this transfer has not
been systematically evaluated.
<P></P>
<LI><B>Robust parsing</B>, which recovers from unknown words and syntax
by using chunk-by-chunk translations. This leads to loss of quality, but fulfills the principle that
"something is better than nothing".
</UL>
<H2>Remaining problems</H2>
<P>
The result of all this work is a wide-coverage translation system, which can be used in the same way as Google
Translate, Bing, Systran, and Apertium - to "translate anything", albeit with a varying quality. At the moment of
writing, the performance is not yet generally on the level with the best of the competition, but shows some promising
improvements in e.g. long-distance agreement and word order. To make these advantages into absolute improvements, we
will need to fix problems that the other systems (or at least some of them) get right but where GF translation
often fails:
</P>
<UL>
<LI><B>Lexical coverage</B>, to eliminate parsing failures due to unknown words.
<P></P>
<LI><B>Disambiguation</B>, with more sophisticated than the essentially context-free tree model used now.
<P></P>
<LI><B>Speed</B>, which gets worse with long sentences and with more complex languages.
<P></P>
<LI><B>Idiomacy</B>, due to the lack of idiomatic constructions that are not compositional and therefore don't get right
in the RGL but are often correct in phrase-based SMT.
</UL>
<H2>Advantages of GF translation</H2>
<P>
Given that these issues get resolved, the strengths of the GF approach can be made more visible:
</P>
<UL>
<LI><B>Grammaticality</B>, in particular the already mentioned issues of agreement and word order.
<P></P>
<LI><B>Predictability</B>, in the sense that a local change in the input usually results in a corresponding
local change in the output (unless otherwise required by idiomacy).
<P></P>
<LI><B>Feedback</B>, i.e. the ease of showing the confidence level of the translation, alternative translations,
and linguistic information.
<P></P>
<LI><B>Adaptability</B>, i.e. the ease of fixing bugs, adapting the system to special domains, and personalizing it.
This can be done with great precision. For instance, a bug in a grammar can be fixed without
breaking anything else.
<P></P>
<LI><B>Light weight</B>. The system runs on standard laptops and even on mobile phones; the size of the run-time
system for all pairs of 11 languages is under 25MB (on the Android platform), and recompiling the whole
system (e.g. after bug fixes or
domain adaptation) is a matter of a few minutes, where corresponding figures for SMT systems are gigabytes of size
and days of retraining.
<P></P>
<LI><B>Multilinguality</B>, in the sense that once the parsing of the input is settled, the output can be readily
rendered into all other languages,
and also in the sense that the GF model works equally well for any language pair.
</UL>
<H2>Wanted: more work, new ideas</H2>
<P>
The recipes for improvement are, as always, <B>more work</B> and <B>new ideas</B>. Each of the four weaknesses mentioned
above can be relieved by more work - in particular, lexical coverage by more work on the lexicon, since
automatic extraction methods cannot really be trusted. As for disambiguation, new ideas about probabilistic
tree models are being discussed. As for speed, new ideas on parsing (in particular, the integration of disambiguation
with parsing) would help, but also the complexity of grammatical structures plays a major role. As for idiomacy,
more work is being done in introducing <B>constructions</B> (non-compositional syntax rules, generalizing the notion of
<B>multiword expressions</B>, in particular, <B>phrases</B> in SMT), but also new ideas are being discussed on how to
extract such constructions from e.g. phrase tables.
</P>
<P>
In the following, we will focus on describing the role of grammar in the GF translation system - in particular, how
RGL can be modified to become usable as a top-level grammar for translating open text.
As RGL was not meant to be used for parsing open text, but rather for the controlled language generation task,
it has serious restrictions:
</P>
<UL>
<LI><B>Limited coverage</B>. The RGL does not cover all structures in any language - hence it is likely to fail when
parsing unlimited text.
<P></P>
<LI><B>Semantic overgeneration</B>. Semantic distinctions, such as between mass and count nouns, or place and manner
adverbials, are assumed to be defined in application grammars; the RGL just defines the combinatorics of
elements, but doesn't prescribe which elements can really go together.
<P></P>
<LI><B>Spurious ambiguities</B>. RGL parsing creates more ambiguities than what would be necessary, if there
was more semantic control. In addition, there are partly overlapping structures, which generate
spurious syntactic ambiguities.
<B>Example</B>: the very liberal apposition function.
<P></P>
<LI><B>Inefficiency</B>. Partly because of ambiguities, partly of the deep nesting and complex data structures, parsing
with the RGL can be very slow when compared to application grammars, even the comprehensive ResourceDemo grammar.
For some languages (Romanian, versions of French and Finnish), parsing is not practically possible at all because
PGF generation fails for memory reasons.
<P></P>
<LI><B>Syntax orientation</B>. The structures of the RGL are rather superficial and don't guarantee translation
equivalence when used as interlingua.
<P></P>
<LI><B>Coarse categories</B>. This is a particular aspect of syntax orientation, and causes at the same time overgeneration
and spurious ambiguities.
<B>Example</B>: the category <CODE>Adv</CODE>.
</UL>
<H2>What speaks for using RGL</H2>
<P>
Despite these problems, the RGL has shown to be a possible starting point for large-scale translation. It has a couple
of advantages speaking for this:
</P>
<UL>
<LI><B>Coverage</B>. Even though not complete, the RGL has grown into a coverage that is close to complete enough; work
with English shows that just about 20% more constructions can take us there.
<P></P>
<LI><B>Maintainability</B>. The RGL is constantly developed and maintained on its own right, and it makes sense to take
advantage of this and avoid duplicated work with some other large-scale grammar.
</UL>
<P>
Of course, we are still left with the other
option of addressing translation with an <I>application grammar</I>, something
similar to the ResourceDemo with flatter and more semantic structures. But this would in turn require
the replication of many rules, even though it would be to a large extent doable by using a <B>functor</B>, that is,
by just one set of rules covering all languages.
</P>
<H2>The structure of the wide-coverage translation grammar</H2>
<P>
Thus the path chosen is a mixture of RGL and application grammar. In brief, the translation grammar consists of
</P>
<UL>
<LI><B>Selected RGL modules and functions</B>, as they are (using restricted inheritance); around 80% of the syntax.
<P></P>
<LI><B>Overridden RGL functions</B>, with more general types; just a few of them.
<P></P>
<LI><B>Overridden RGL linearizations</B>, typically with more <B>variants</B> in individual languages; just a few, but
increasing.
<P></P>
<LI><B>Syntax extension</B>, new categories and functions, around 20% of the syntax, and increasing.
<P></P>
<LI><B>Big lexicon</B>, with an abstract syntax of 65k lemmas, increasing.
<P></P>
<LI><B>Constructions</B>, inspired by (and partly derived from) Construction Grammars, to capture idioms that
involve specific lexical items and are therefore "between the syntax and the lexicon".
</UL>
<P>
The following picture shows the principal module structure of the translation grammar.
</P>
<P>
<IMG ALIGN="middle" SRC="translation.png" BORDER="0" ALT="">
</P>
<P>
Here is a description of each of the modules:
</P>
<UL>
<LI><B>Translate</B> is the top module, which combines the RGL syntax with syntax extensions and a dictionary.
The RGL syntax is not inherited in its entirety, which is indicated by a dashed line. The overridden abstract
syntax functions (common to all languages) are replaced by functions in the Extensions module, whereas the
overridden concrete syntax definitions (specific to each language) are defined in this Translate module.
This consists of the module named <CODE>Translate</CODE>.
<P></P>
<LI><B>RGLSyntax</B> stands for the standard RGL module for syntax, excluding the RGL test lexicon and
the language-specific extensions of it. This consists of the standard module named <CODE>Grammar</CODE> and
the emerging module named <CODE>Construction</CODE>.
<P></P>
<LI><B>Extensions</B> stands for the syntax extensions added to the RGL syntax. This consists of the module
named <CODE>Extensions</CODE>.
<P></P>
<LI><B>Dictionary</B> is a large-scale multilingual dictionary. Its abstract syntax uses as identifiers English words
suffixed by categories and word sense information. This consists of the module named <CODE>Dictionary</CODE>.
<P></P>
<LI><B>RGLCategories</B> stands for the type system of the standard RGL, the module named <CODE>Cat</CODE>.
<P></P>
<LI><B>Chunk</B> is the grammar defining what chunks (noun phrases, verbs,
adverbs, etc) can be used and how they are combined, when exact
syntactic combination fails.
</UL>
<H2>Where and why the translation grammar differs from the RGL</H2>
<P>
A guiding principle is thus that the translation grammar preserves <I>as much as possible</I> of the RGL, so that
duplicated work is avoided. But as the purposes of the two are different, not everything is possible. Two
diverging principles have already been mentioned:
</P>
<UL>
<LI><B>Free variation</B>. The RGL bans free variation, because library users need to have full control on selecting
variants. For instance, English negation has two forms, contracted (<I>don't</I>) and uncontracted (<I>do not</I>),
which in the translation grammar are treated as variants. But RGL users sometimes need to choose the one or the
other, for instance, excluding contracted negation in formal style.
<P></P>
<LI><B>Semantic distinctions</B>. The RGL avoids semantic distinctions that are not absolutely necessary for syntax.
The reason for this is the ambition to keep the library as simple as possible, in particular for the voluntary
implementors of new languages. But meaning-preserving translation needs more distinctions, for instance, in
word senses, subcategorizations, selection restrictions, and tense and aspect systems.
</UL>
<P>
The old design principles of the RGL are thus kept in force, and this is made possible by separating parts of the
translation grammar modules from the RGL.
</P>
<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
<!-- cmdline: txt2tags -thtml translation.txt -->
</BODY></HTML>

View File

@@ -8,17 +8,18 @@ FocusObjS nsubj head -- again might be wrong; more correct to call
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head? QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
QuestQVP nsubj head QuestQVP nsubj head
QuestSlash dobj head QuestSlash obj head
QuestVP nsubj head QuestVP nsubj head
IdetCN det head
PredSCVP csubj head PredSCVP csubj head
ComplSlash head dobj ComplSlash head obj
ComplSlashIP head dobj ComplSlashIP head obj
Slash3V3 head dobj Slash3V3 head obj
SlashV2VNP head dobj xcomp SlashV2VNP head obj xcomp
PastPartAgentAP head dobj PastPartAgentAP head obj
AdvQVP head dobj AdvQVP head obj
Slash2V3 head iobj Slash2V3 head iobj
@@ -66,8 +67,8 @@ RelSlash mark head
ComplN2 head nmod ComplN2 head nmod
ComplN3 nmod head ComplN3 nmod head
AdvCN head nmod AdvCN head nmod
PossNP nmod head PossNP head nmod
PartNP nmod head PartNP head nmod
ExistNPAdv head nmod ExistNPAdv head nmod
OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function
@@ -80,12 +81,12 @@ ApposNP head appos
RelNP head acl RelNP head acl
RelCN head acl RelCN head acl
SentCN head acl SentCN head acl
SentAP amod acl SentAP head acl
DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function
DetCN det head DetCN det head
IDetCN det head IdetCN det head
IDetQuant head empty IdetQuant head nummod
CountNP det head CountNP det head
PredetNP det head PredetNP det head
PPartNP head amod -- only in core RGL PPartNP head amod -- only in core RGL
@@ -156,12 +157,12 @@ TExclMark head dep -- punctuation in the middle in these three
TFullStop head dep TFullStop head dep
TQuestMark head dep TQuestMark head dep
ComplV2 head dobj -- shortcuts in App ComplV2 head obj -- shortcuts in App
ComplV2V head dobj xcomp ComplV2V head obj xcomp
ComplV3 head iobj dobj ---- could be dobj dobj ComplV3 head iobj obj ---- could be dobj dobj
PassAgentV2 head ncomp -- not sure PassAgentV2 head ncomp -- not sure
RelV2 mark nsubj head RelV2 mark nsubj head
QuestV2 dobj nsubj head QuestV2 obj nsubj head
ModCN amod head -- in ResourceDemo ModCN amod head -- in ResourceDemo
RSubjS mark advcl head RSubjS mark advcl head

View File

@@ -39,6 +39,7 @@ fun
n_units_AP : Card -> CN -> A -> AP ; -- x inches long n_units_AP : Card -> CN -> A -> AP ; -- x inches long
n_units_of_NP : Card -> CN -> NP -> NP ; -- x ounces of this flour n_units_of_NP : Card -> CN -> NP -> NP ; -- x ounces of this flour
n_unit_CN : Card -> CN -> CN -> CN ; -- x gallon bottle
-- containers -- containers
@@ -79,6 +80,7 @@ cat
fun fun
timeunitAdv : Card -> Timeunit -> Adv ; -- (for) three hours timeunitAdv : Card -> Timeunit -> Adv ; -- (for) three hours
timeunitRange : Card -> Card -> Timeunit -> Adv ; -- (cats live) ten to twenty years
oneHour : Hour ; oneHour : Hour ;
twoHour : Hour ; twoHour : Hour ;
@@ -105,8 +107,8 @@ fun
twentyThreeHour : Hour ; twentyThreeHour : Hour ;
twentyFourHour : Hour ; twentyFourHour : Hour ;
timeHour : Hour -> Adv ; -- at three (o'clock / am / pm) timeHour : Hour -> Adv ; -- at three a.m./p.m.
timeHourMinute : Hour -> Card -> Adv ; -- at forty past six timeHourMinute : Hour -> Card -> Adv ; -- at six forty a.m./p.m.
weekdayPunctualAdv : Weekday -> Adv ; -- on Monday weekdayPunctualAdv : Weekday -> Adv ; -- on Monday
weekdayHabitualAdv : Weekday -> Adv ; -- on Mondays weekdayHabitualAdv : Weekday -> Adv ; -- on Mondays

View File

@@ -45,6 +45,13 @@ abstract Extend = Cat ** {
MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept
ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep
PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep] PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
SQuestVPS : NP -> VPS -> QS ; -- has she walked
QuestVPS : IP -> VPS -> QS ; -- who has walked
-- existentials that work in the absence of Cl
ExistS : Temp -> Pol -> NP -> S ; -- there was a party
ExistNPQS : Temp -> Pol -> NP -> QS ; -- was there a party
ExistIPQS : Temp -> Pol -> IP -> QS ; -- what was there
MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol) MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol)
ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk
@@ -105,6 +112,10 @@ abstract Extend = Cat ** {
NominalizeVPSlashNP : VPSlash -> NP -> NP ; NominalizeVPSlashNP : VPSlash -> NP -> NP ;
-- counterpart to ProgrVP, for VPSlash
ProgrVPSlash : VPSlash -> VPSlash;
-- existential for mathematics -- existential for mathematics
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
@@ -115,6 +126,10 @@ abstract Extend = Cat ** {
ExistMassCN : CN -> Cl ; -- there is beer / there is no beer ExistMassCN : CN -> Cl ; -- there is beer / there is no beer
ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees
-- generalisation of existential, with adverb as a parameter
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
AdvIsNPAP : Adv -> NP -> AP -> Cl ; -- here are the instructions documented
-- infinitive for purpose AR 21/8/2013 -- infinitive for purpose AR 21/8/2013
PurposeVP : VP -> Adv ; -- to become happy PurposeVP : VP -> Adv ; -- to become happy
@@ -141,6 +156,16 @@ abstract Extend = Cat ** {
AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe) AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe)
AdjAsNP : AP -> NP ; -- green (is good) AdjAsNP : AP -> NP ; -- green (is good)
-- infinitive complement for IAdv
PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk?
-- alternative to EmbedQS. For English, EmbedQS happens to work,
-- because "what" introduces question and relative. The default linearization
-- could be e.g. "the thing we did (was fun)".
EmbedSSlash : SSlash -> SC ; -- what we did (was fun)
-- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns -- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns
-- This is necessary in languages like Swedish, which have special reflexive possessives. -- This is necessary in languages like Swedish, which have special reflexive possessives.
-- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate. -- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate.
@@ -206,6 +231,10 @@ abstract Extend = Cat ** {
DetNPMasc : Det -> NP ; DetNPMasc : Det -> NP ;
DetNPFem : Det -> NP ; DetNPFem : Det -> NP ;
UseComp_estar : Comp -> VP ; -- (Cat, Spa, Por) "está cheio" instead of "é cheio"
SubjRelNP : NP -> RS -> NP ; -- Force RS in subjunctive: lo que les *resulte* mejor
iFem_Pron : Pron ; -- I (Fem) iFem_Pron : Pron ; -- I (Fem)
youFem_Pron : Pron ; -- you (Fem) youFem_Pron : Pron ; -- you (Fem)
weFem_Pron : Pron ; -- we (Fem) weFem_Pron : Pron ; -- we (Fem)

View File

@@ -17,6 +17,10 @@ fun
verb_Category : Category ; verb_Category : Category ;
adverb_Category : Category ; adverb_Category : Category ;
preposition_Category : Category ; preposition_Category : Category ;
numeral_Category : Category ;
pronoun_Category : Category ;
determiner_Category : Category ;
article_Category : Category ;
number_ParameterType : ParameterType ; number_ParameterType : ParameterType ;
gender_ParameterType : ParameterType ; gender_ParameterType : ParameterType ;
@@ -65,6 +69,7 @@ fun
active_Parameter : Parameter ; active_Parameter : Parameter ;
passive_Parameter : Parameter ; passive_Parameter : Parameter ;
middle_Parameter : Parameter ;
present_Parameter : Parameter ; present_Parameter : Parameter ;
past_Parameter : Parameter ; past_Parameter : Parameter ;
@@ -99,6 +104,9 @@ fun
short_Parameter : Parameter ; -- short form of e.g. a Fin infinitive short_Parameter : Parameter ; -- short form of e.g. a Fin infinitive
long_Parameter : Parameter ; long_Parameter : Parameter ;
strong_Parameter : Parameter ; -- German adjective declensions
weak_Parameter : Parameter ;
finite_Modifier : Modifier ; finite_Modifier : Modifier ;
transitive_Modifier : Modifier ; transitive_Modifier : Modifier ;
nominal_Modifier : Modifier ; nominal_Modifier : Modifier ;

View File

@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsCze = Combinators with
(Cat = CatCze),
(Structural = StructuralCze),
(Constructors = ConstructorsCze)
** open MissingCze in {}

View File

@@ -0,0 +1,7 @@
--# -path=.:alltenses:prelude:src/hungarian
resource CombinatorsHun = Combinators with
(Cat = CatHun),
(Structural = StructuralHun),
(Noun = NounHun),
(Constructors = ConstructorsHun) ** open MissingHun in {} ;

View File

@@ -0,0 +1,7 @@
--# -path=.:alltenses:prelude:../korean
resource CombinatorsKor = Combinators with
(Cat = CatKor),
(Structural = StructuralKor),
(Noun = NounKor),
(Constructors = ConstructorsKor) ** open MissingKor in {} ;

View File

@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsSlo = Combinators with
(Cat = CatSlo),
(Structural = StructuralSlo),
(Constructors = ConstructorsSlo)
** open MissingSlo in {}

View File

@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsTur = Combinators with
(Cat = CatTur),
(Structural = StructuralTur),
(Noun = NounTur),
(Constructors = ConstructorsTur) **
{
}

View File

@@ -1180,6 +1180,8 @@ incomplete resource Constructors = open Grammar in { --%
= \a,p -> TUseQCl TPres a p ; --% = \a,p -> TUseQCl TPres a p ; --%
mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS -- who wouldn't have slept mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS -- who wouldn't have slept
= TUseQCl ; --% = TUseQCl ; --%
mkQS : Temp -> Pol -> QCl -> QS -- who wouldn't have slept --%
= UseQCl ; --%
-- Since 'yes-no' question clauses can be built from clauses (see below), -- Since 'yes-no' question clauses can be built from clauses (see below),
-- we give a shortcut -- we give a shortcut

View File

@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude
resource ConstructorsCze = Constructors with (Grammar = GrammarCze)
** open MissingCze in {}

View File

@@ -0,0 +1,3 @@
--# -path=.:alltenses:prelude:../hungarian
resource ConstructorsHun = Constructors with (Grammar = GrammarHun) ** open MissingHun in {} ;

View File

@@ -0,0 +1,3 @@
--# -path=.:alltenses:prelude:../korean
resource ConstructorsKor = Constructors with (Grammar = GrammarKor) ** open MissingKor in {} ;

View File

@@ -1,4 +1,4 @@
--# -path=.:alltenses:prelude:../latin --# -path=.:alltenses:prelude:../latin
resource ConstructorsLat = Constructors with (Grammar = GrammarLat) ** resource ConstructorsLat = Constructors with (Grammar = GrammarLat) **
open MissingLat in {} open MissingLat in {} ;

View File

@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude
resource ConstructorsSlo = Constructors with (Grammar = GrammarSlo)
** open MissingSlo in {}

View File

@@ -0,0 +1,3 @@
--# -path=.:alltenses:prelude
resource ConstructorsTur = Constructors with (Grammar = GrammarTur) ;

6
src/api/SymbolicCze.gf Normal file
View File

@@ -0,0 +1,6 @@
--# -path=.:../czech:../common:../abstract:../prelude
resource SymbolicCze = Symbolic with
(Symbol = SymbolCze),
(Grammar = GrammarCze)
** open MissingCze in {}

5
src/api/SymbolicHun.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:../hungarian:../common:../abstract:../prelude
resource SymbolicHun = Symbolic with
(Symbol = SymbolHun),
(Grammar = GrammarHun) ** open MissingHun in {} ;

5
src/api/SymbolicKor.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:../korean:../common:../abstract:../prelude
resource SymbolicKor = Symbolic with
(Symbol = SymbolKor),
(Grammar = GrammarKor) ** open MissingKor in {} ;

View File

@@ -1,5 +1,5 @@
--# -path=.:../icelandic:../common:../abstract:../prelude --# -path=.:../latin:../common:../abstract:../prelude
resource SymbolicLat = Symbolic with resource SymbolicLat = Symbolic with
(Symbol = SymbolLat), (Symbol = SymbolLat),
(Grammar = GrammarLat) ; (Grammar = GrammarLat) ** open MissingLat in {} ;

6
src/api/SymbolicSlo.gf Normal file
View File

@@ -0,0 +1,6 @@
--# -path=.:../slovak:../common:../abstract:../prelude
resource SymbolicSlo = Symbolic with
(Symbol = SymbolSlo),
(Grammar = GrammarSlo)
** open MissingSlo in {}

4
src/api/SyntaxCze.gf Normal file
View File

@@ -0,0 +1,4 @@
--# -path=.:./alltenses:../prelude
instance SyntaxCze of Syntax =
ConstructorsCze, CatCze, StructuralCze, CombinatorsCze ;

4
src/api/SyntaxHun.gf Normal file
View File

@@ -0,0 +1,4 @@
--# -path=.:alltenses:prelude:../hungarian
instance SyntaxHun of Syntax =
ConstructorsHun, CatHun, StructuralHun, CombinatorsHun ;

5
src/api/SyntaxKor.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude:../korean
instance SyntaxKor of Syntax =
ConstructorsKor, CatKor, StructuralKor, CombinatorsKor **
open MissingKor in {} ;

4
src/api/SyntaxSlo.gf Normal file
View File

@@ -0,0 +1,4 @@
--# -path=.:./alltenses:../prelude
instance SyntaxSlo of Syntax =
ConstructorsSlo, CatSlo, StructuralSlo, CombinatorsSlo ;

4
src/api/SyntaxTur.gf Normal file
View File

@@ -0,0 +1,4 @@
--# -path=.:alltenses:prelude
instance SyntaxTur of Syntax = ConstructorsTur, CatTur, StructuralTur, CombinatorsTur ;

13
src/api/TryCze.gf Normal file
View File

@@ -0,0 +1,13 @@
--# -path=.:../czech:../common:../abstract:../prelude
resource TryCze = SyntaxCze, LexiconCze, ParadigmsCze -[mkAdv, mkDet,mkQuant]**
open (P = ParadigmsCze) in {
-- oper
-- mkAdv = overload SyntaxCze {
-- mkAdv : Str -> Adv = P.mkAdv ;
-- } ;
}

3
src/api/TryHun.gf Normal file
View File

@@ -0,0 +1,3 @@
--# -path=.:../hungarian:../common:../abstract:../prelude
resource TryHun = SyntaxHun, LexiconHun, ParadigmsHun - [mkAdv] ;

3
src/api/TryKor.gf Normal file
View File

@@ -0,0 +1,3 @@
--# -path=.:../korean:../common:../abstract:../prelude
resource TryKor = SyntaxKor, LexiconKor, ParadigmsKor - [mkAdv] ;

View File

@@ -1,3 +1,3 @@
--# -path=.:../latin:../common:../abstract:../prelude --# -path=.:../latin:../common:../abstract:../prelude
resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd] ; resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd,mkNum] ;

View File

@@ -1,3 +1,3 @@
--# -path=.:../russian:../common:../abstract:../prelude --# -path=.:../russian:../common:../abstract:../prelude
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv] ; resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv,mkIAdv,mkOrd] ;

13
src/api/TrySlo.gf Normal file
View File

@@ -0,0 +1,13 @@
--# -path=.:../slovak:../common:../abstract:../prelude
resource TrySlo = SyntaxSlo, LexiconSlo, ParadigmsSlo -[mkAdv, mkDet,mkQuant]**
open (P = ParadigmsSlo) in {
-- oper
-- mkAdv = overload SyntaxSlo {
-- mkAdv : Str -> Adv = P.mkAdv ;
-- } ;
}

11
src/api/TryTur.gf Normal file
View File

@@ -0,0 +1,11 @@
--# -path=.:../turkish:../common:../abstract:../prelude
resource TryTur = SyntaxTur, LexiconTur, ParadigmsTur - [mkAdN,mkAdv,mkNum,mkQuant] **
open (P = ParadigmsTur), (R = ResTur) in {
oper
mkAdv = overload SyntaxTur {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
}

View File

@@ -3,7 +3,6 @@ concrete AdjectiveAra of Adjective = CatAra ** open ResAra, Prelude in {
flags coding = utf8 ; flags coding = utf8 ;
lin lin
PositA a = { PositA a = {
s = \\h,g,n,d,c => case h of { s = \\h,g,n,d,c => case h of {
Hum => a.s ! APosit g n d c; Hum => a.s ! APosit g n d c;
@@ -21,27 +20,27 @@ concrete AdjectiveAra of Adjective = CatAra ** open ResAra, Prelude in {
-- $SuperlA$ belongs to determiner syntax in $Noun$. -- $SuperlA$ belongs to determiner syntax in $Noun$.
-- --
ComplA2 a np = { ComplA2 a np = {
s = \\sp,g,n,st,c => a.s ! APosit g n st c ++ a.c2.s ++ np.s ! a.c2.c ; s = \\sp,g,n,st,c => a.s ! APosit g n st c ++ a.c2.s ++ bindIf a.c2.binds ++ np.s ! a.c2.c ;
} ; } ;
--
-- ReflA2 a = { -- full PerGenNum should be added to make this work properly
-- s = \\ag => a.s ! AAdj Posit ++ a.c2 ++ reflPron ! ag ; ReflA2 a = {
-- isPre = False s = \\sp,g,n,st,c => a.s ! APosit g n st c ++ a.c2.s ++ reflPron c (gn2pgn {g=g;n=n})
-- } ; } ;
--
-- SentAP ap sc = {
-- s = \\a => ap.s ! a ++ sc.s ;
-- isPre = False
-- } ;
--
AdAP ada ap = { AdAP ada ap = {
s = \\sp,g,n,st,c => ada.s ++ ap.s ! sp ! g ! n ! st ! c s = \\sp,g,n,st,c => ap.s ! sp ! g ! n ! st ! c ++ ada.s
} ; } ;
AdvAP,
SentAP = \ap,ss -> AdAP ss ap ;
UseA2 = PositA ; UseA2 = PositA ;
UseComparA a = { UseComparA a = {
s = \\h,g,n,d,c => a.s ! AComp d c s = \\h,g,n,d,c => a.s ! AComp d c
}; };
-- : Ord -> AP ; -- warmest
AdjOrd ord = {s = \\h,g,n,s,c => ord.s ! g ! s ! c} ;
} }

Some files were not shown because too many files have changed in this diff Show More