1
0
forked from GitHub/gf-rgl

Merge branch 'GrammaticalFramework:master' into master

This commit is contained in:
Meowyam
2023-02-22 12:18:48 +08:00
committed by GitHub
303 changed files with 54529 additions and 4443 deletions

View File

@@ -37,20 +37,6 @@ if "%dest%"=="" (
)
:BreakLibPath
set DATA_DIR=..\gf-core\DATA_DIR
if "%dest%"=="" (
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%"=="" (
echo Unable to determine where to install the RGL. Please do one of the following:
echo - Pass the --dest=... flag to this script

View File

@@ -8,8 +8,8 @@ import System.IO (hPutStrLn,stderr)
import System.IO.Error (catchIOError)
import System.Exit (ExitCode(..),exitFailure)
import System.Environment (getArgs,lookupEnv)
import System.Process (rawSystem)
import System.FilePath ((</>),splitSearchPath) -- ,takeFileName,addExtension,dropExtension)
import System.Process (rawSystem,readProcess)
import System.FilePath ((</>),splitSearchPath)
import System.Directory (createDirectoryIfMissing,copyFile,getDirectoryContents,removeDirectoryRecursive,findFile)
#if __GLASGOW_HASKELL__>=800
import System.Directory (getModificationTime,setModificationTime)
@@ -61,7 +61,7 @@ errLocation = unlines $
[ "Unable to determine where to install the RGL. Please do one of the following:"
, " - Pass the " ++ destination_flag ++ "... flag to this script"
, " - Set the GF_LIB_PATH environment variable"
, " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
, " - Compile & install GF from the gf-core repository"
]
-- | Copy single file between directories
@@ -116,10 +116,11 @@ data Info = Info
mkInfo :: IO Info
mkInfo = do
args <- getArgs
let gf = maybe default_gf id (getFlag gf_flag args)
-- Look for install location in a few different places
let mflag = getFlag destination_flag args
mbuilt <- catchIOError (readFile "../gf-core/DATA_DIR" >>= \d -> return (Just (d </> "lib"))) (\e -> return Nothing)
menvar <- lookupEnv "GF_LIB_PATH" >>= return . fmap (head . splitSearchPath)
mbuilt <- catchIOError (readProcess gf ["--version"] "" >>= return . getPath) (\e -> return Nothing)
let
inst_dir =
case catMaybes [mflag,menvar,mbuilt] of
@@ -129,12 +130,18 @@ mkInfo = do
return $ Info
{ infoBuildDir = "dist"
, infoInstallDir = inst_dir
, infoGFPath = maybe default_gf id (getFlag gf_flag args)
, infoGFPath = gf
, infoVerbose = verbose
}
where
default_gf = "gf"
getPath s =
let l = last (lines s)
in if take 14 l == "Shared folder:"
then Just (drop 15 l </> "lib")
else Nothing
getRGLBuildDir :: Info -> Mode -> FilePath
getRGLBuildDir info mode = infoBuildDir info </> getRGLBuildSubDir mode

View File

@@ -38,15 +38,15 @@ done
if [ -z "$dest" ]; then
dest=$(echo "$GF_LIB_PATH" | sed 's/:.*$//')
fi
if [ -z "$dest" ] && [ -f "../gf-core/DATA_DIR" ]; then
dest=$(cat ../gf-core/DATA_DIR)
if [ -z "$dest" ] && [ "$(gf --version | tail -1 | cut -c -14)" == "Shared folder:" ]; then
dest=$(gf --version | tail -1 | cut -c 16-)
if [ -n "$dest" ]; then dest="${dest}/lib"; fi
fi
if [ -z "$dest" ]; then
echo "Unable to determine where to install the RGL. Please do one of the following:"
echo " - Pass the --dest=... flag to this script"
echo " - Set the GF_LIB_PATH environment variable"
echo " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
echo " - Compile & install GF from the gf-core repository"
exit 1
fi

View File

@@ -0,0 +1,371 @@
fun type Afr Amh Grc Ara Eus Bul Cat Chi Hrv Cze Dan Dut Gus Eng Est Fin Fre Ger Gre Heb Hin Hun Ice Ina Ita Jpn Kam Kor Lat Lav Lit May Mlt Mon Nep Nor Nno Pes Pol Por Pnb Ron Cgg Rus Snd Slo Slv Som Spa Swa Swe Tam Tel Tha Tur Ukr Urd Zul
AAnter Ant + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
ASimul Ant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AdAP AdA -> AP -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + - + + + - + + + + + +
AdAdv AdA -> Adv -> Adv + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
AdNum AdN -> Card -> Card + - + + + + + + + - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + + + +
AdVVP AdV -> VP -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - + + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
AdVVPSlash AdV -> VPSlash -> VPSlash - - - + + + + + - - + - - + - + + + + - + - + - + + - + + - - - + + + + + - - + - - + + - - - - + - + - + - - - + +
AddAdvQVP QVP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
AdjCN AP -> CN -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
AdjDAP DAP -> AP -> DAP - - - - + + + - - - + - + + + - + - - - - - + - + + + - - - - - - - - + + - - + - - + + - - - - + + + - - - + - - +
AdjOrd Ord -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + + + + + +
AdnCAdv CAdv -> AdN + - - + - + + + + - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + + + +
AdvAP AP -> Adv -> AP - - - + + + + + + + + + + + + + + - + - + + + - + + + - + + - + + + + + + + - + - - - + - + + - + + + - + - + + + +
AdvCN CN -> Adv -> CN + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
AdvIAdv IAdv -> Adv -> IAdv + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
AdvIP IP -> Adv -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
AdvImp Adv -> Imp -> Imp - - - - - + + - - - + - - + - - + - - - - - - - + - - - - - - - - - - + + - - + - - - - - - - - + - + - + - - - - +
AdvNP NP -> Adv -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
AdvQVP VP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
AdvS Adv -> S -> S + + + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + - + + - + + + - + - + + + - + +
AdvSlash ClSlash -> Adv -> ClSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
AdvVP VP -> Adv -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
AdvVPSlash VPSlash -> Adv -> VPSlash - - - - + + + + - - + - - + + + + + + - + + + - + + - + + - - - + + + + + - - + - - + + - - - + + - + - + - - - + +
ApposCN CN -> NP -> CN + + - + + + + + + + + + - + + + + + + - + + + + + + - + + + + - + + + + + + + + + + + + + + - - + - + - - + + + + +
BaseAP AP -> AP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
BaseAdV AdV -> AdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
BaseAdv Adv -> Adv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
BaseCN CN -> CN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
BaseDAP DAP -> DAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
BaseIAdv IAdv -> IAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
BaseNP NP -> NP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
BaseRS RS -> RS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
BaseS S -> S -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
CAdvAP CAdv -> AP -> NP -> AP + + - - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
CleftAdv Adv -> S -> Cl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
CleftNP NP -> RS -> Cl + - + - - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
CompAP AP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
CompAdv Adv -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
CompCN CN -> Comp + - + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
CompIAdv IAdv -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
CompIP IP -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
CompNP NP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
ComparA A -> NP -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + - - + + + + - + + + + + +
ComparAdvAdj CAdv -> A -> NP -> Adv + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
ComparAdvAdjS CAdv -> A -> S -> Adv + - - - - + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
ComplA2 A2 -> NP -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ComplN2 N2 -> NP -> CN + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
ComplN3 N3 -> NP -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
ComplSlash VPSlash -> NP -> VP + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
ComplSlashIP VPSlash -> IP -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
ComplVA VA -> AP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
ComplVQ VQ -> QS -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
ComplVS VS -> S -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - + + - + - + + + - + +
ComplVV VV -> VP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
ConjAP Conj -> ListAP -> AP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
ConjAdV Conj -> ListAdV -> AdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
ConjAdv Conj -> ListAdv -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ConjCN Conj -> ListCN -> CN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
ConjDet Conj -> ListDAP -> Det - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
ConjIAdv Conj -> ListIAdv -> IAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
ConjNP Conj -> ListNP -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
ConjRS Conj -> ListRS -> RS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ConjS Conj -> ListS -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ConsAP AP -> ListAP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
ConsAdV AdV -> ListAdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
ConsAdv Adv -> ListAdv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ConsCN CN -> ListCN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
ConsDAP DAP -> ListDAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
ConsIAdv IAdv -> ListIAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
ConsNP NP -> ListNP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
ConsRS RS -> ListRS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
ConsS S -> ListS -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
CountNP Det -> NP -> NP - - - - + + + + - - + - + + - + + - + - + - + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - + +
D_0 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_1 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_2 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_3 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_4 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_5 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_6 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_7 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_8 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
D_9 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
DefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
DetCN Det -> CN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
DetDAP Det -> DAP - - - - + + + - - - + + + + + + + + - - - - + - + + + - - - + - - - - + + - + + - - + + - - - - + + + - - - + - - +
DetNP Det -> NP + + - + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + + + +
DetQuant Quant -> Num -> Det + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
DetQuantOrd Quant -> Num -> Ord -> Det + + + + + + + + - - + + + + + + + + + - + + + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
EmbedQS QS -> SC + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
EmbedS S -> SC + - + + + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
EmbedVP VP -> SC + + - + + + + + - - + + - + + + + + + - + - + + + + - + - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
ExistIP IP -> QCl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
ExistIPAdv IP -> Adv -> QCl - - + - - + - - - - - - + + - + - + - + - - + - - + + - + - - - + + - - - - - + - - - + - - - - + - + - + - - - - +
ExistNP NP -> Cl + - + + + + + + + - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - + + + - + - + + + + + +
ExistNPAdv NP -> Adv -> Cl - - + + - + - - + - - - + + - + + + - + - - + - + + + - + - - - + + - - - + - + - - - + - - - - + - + - + - - + - +
ExtAdvNP NP -> Adv -> NP - - - - + + + + - - + + + + - + + + - - - + + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - - +
ExtAdvS Adv -> S -> S - - - - + + + + - - + + - + + + + + + - + + + - + + - + - - + + + + - + + - + + - + + + - - + + + - + - + + - - + +
ExtAdvVP VP -> Adv -> VP - - - - + + + + - - + + - + - + + + - - - - + - + + - - - - - - + - - + + - - + - - - + - - - - + - + - + - - - - +
FunRP Prep -> NP -> RP -> RP + - - - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - + - + - + - + + + - + +
GenericCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
IDig Dig -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
IIDig Dig -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
IdRP RP + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
IdetCN IDet -> CN -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
IdetIP IDet -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
IdetQuant IQuant -> Num -> IDet + + - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
ImpP3 NP -> VP -> Utt - - + - - - - - - - - - + + - + + + + + + - + - - + + - + + - - + + + - - + - + + - - + + - - - - - - - + - - - + +
ImpPl1 VP -> Utt + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
ImpVP VP -> Imp + + + + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
ImpersCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
IndefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
MassNP CN -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
NoPConj PConj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
NoVoc Voc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
NumCard Card -> Num + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
NumDigits Digits -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + - - + + + + +
NumNumeral Numeral -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
NumPl Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
NumSg Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
OrdDigits Digits -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
OrdNumeral Numeral -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
OrdNumeralSuperl Numeral -> A -> Ord - - - - + - + + - - + + + + - + + + - - - - + - + + + - - - - + - - - + + - - + - - + + - - - - + + + - - - + - - +
OrdSuperl A -> Ord + + + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + - - + + + + - - + + + + +
PConjConj Conj -> PConj + - + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + + + - + + + + + +
PNeg Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PPartNP NP -> V2 -> NP + + - - + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + + + + - - - + - + - - + + - + +
PPos Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PartNP CN -> NP -> CN - - - - + + + + - - + - + + - + + - + - + - + - + + + - - - + - + - - + + - - + - - + + - - - + + + + - - - + - + +
PassV2 V2 -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
PhrUtt PConj -> Utt -> Voc -> Phr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
PositA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
PositAdAAdj A -> AdA + - - - + + + + - - + + + + + + + + + - + - + - + + + - + - - - + + - + + - - + - - - + - - - - + + + - + - - - + +
PositAdvAdj A -> Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
PossNP CN -> NP -> CN - - + + + + + + - - + + + + + + + + + - + - + - + + + - - - + + + - - + + + - + - - + + - - - + + + + - - - + - + +
PossPron Pron -> Quant + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
PredSCVP SC -> VP -> Cl + - + - + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
PredVP NP -> VP -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
PredetNP Predet -> NP -> NP + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
PrepIP Prep -> IP -> IAdv + - + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
PrepNP Prep -> NP -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
ProgrVP VP -> VP + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
QuestCl Cl -> QCl + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
QuestIAdv IAdv -> Cl -> QCl + + - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
QuestIComp IComp -> NP -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
QuestQVP IP -> QVP -> QCl - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
QuestSlash IP -> ClSlash -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
QuestVP IP -> VP -> QCl + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
ReflA2 A2 -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
ReflVP VPSlash -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - + + + - + - + + + - + +
RelCN CN -> RS -> CN + - + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + - - + + + + +
RelCl Cl -> RCl + - - + + + + + - - + + + + + + + + + + + - + + + + + + - + + - + + + + + + + + + + + + + - + - + - + - + + + - + +
RelNP NP -> RS -> NP + - + + + + + + - - + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
RelS S -> RS -> S + - + - + + + + - - + + - + + + + + + - + - + + + + - - - - + - + + + + + + + + + + - + + - - - + - + - + + - - + +
RelSlash RP -> ClSlash -> RCl + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
RelVP RP -> VP -> RCl + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
SSubjS S -> Subj -> S -> S - + - - + + + + - - + + - + - + + + + - + - + - + + - - - - - - + + + + + + - + + - - + + - - + + - + - + + - - + +
SelfAdVVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
SelfAdvVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
SelfNP NP -> NP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - - - + - + - - - - +
SentAP AP -> SC -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
SentCN CN -> SC -> CN + - + + + + + + - - + + + + + + + + + - + - + + + + + + - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
Slash2V3 V3 -> NP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
Slash3V3 V3 -> NP -> VPSlash + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
SlashPrep Cl -> Prep -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
SlashV2A V2A -> AP -> VPSlash + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
SlashV2Q V2Q -> QS -> VPSlash + - + - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
SlashV2S V2S -> S -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
SlashV2V V2V -> VP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
SlashV2VNP V2V -> NP -> VPSlash -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
SlashV2a V2 -> VPSlash + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
SlashVP NP -> VPSlash -> ClSlash + + + + + + + + - - + + - + + + + + + - + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
SlashVS NP -> VS -> SSlash -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
SlashVV VV -> VPSlash -> VPSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
SubjS Subj -> S -> Adv + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
TCond Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
TEmpty Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TExclMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TFullStop Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TFut Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
TPast Tense + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + +
TPres Tense + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TQuestMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TTAnt Tense -> Ant -> Temp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Use2N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
Use3N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + - - + +
UseA2 A2 -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + - + + + + + +
UseCl Temp -> Pol -> Cl -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
UseComp Comp -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
UseComparA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
UseCopula VP - - + + + + + + - - + + - + - + + + + - - + + - + + - + + - - + + + - + + - - + - + + + - - - + + - + - + - - - - +
UseN N -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UseN2 N2 -> CN + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
UsePN PN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
UsePron Pron -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
UseQCl Temp -> Pol -> QCl -> QS + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
UseRCl Temp -> Pol -> RCl -> RS + - + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + - + + - + - + + + + + +
UseSlash Temp -> Pol -> ClSlash -> SSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
UseV V -> VP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
UttAP AP -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
UttAdv Adv -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
UttCN CN -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
UttCard Card -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
UttIAdv IAdv -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
UttIP IP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
UttImpPl Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
UttImpPol Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
UttImpSg Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
UttInterj Interj -> Utt - - - + + + + + - - + + + + + + + + + - + + + + + + + + + - - - + + - + + - - + - - + + - - + + + + + - + + + - + +
UttNP NP -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
UttQS QS -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
UttS S -> Utt + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
UttVP VP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
VPSlashPrep VP -> Prep -> VPSlash - - - + + + + + - - + + - + + + + + + + + - + - + + - - - + - - + + - + + + - + - + - + - - - + + - + - + - - - + +
VocNP NP -> Voc + + + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + - + - + + + + + +
above_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
active2passive Cl -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
after_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
all_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
almost_AdA AdA + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
almost_AdN AdN + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
although_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
always_AdV AdV + + + - + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
and_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
as_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + + + - + + + - + + + - + + + - - + + + + + + + + - - - + - + - + + + - + +
at_least_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
at_most_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
because_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
before_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
behind_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
between_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
both7and_DConj Conj + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
but_PConj PConj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
by8agent_Prep Prep + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + - + +
by8means_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
can8know_VV VV + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + - + + + + + + + - - + + - + - + + + - + +
can_VV VV + - - + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
dconcat Digits -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
digits2num Digits -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
digits2numeral Card -> Card + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn Dig -> Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn10 Dig -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn100 Dig -> Dig -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn1000 Dig -> Dig -> Dig -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn1000000a Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn1000000b Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dn1000000c Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
during_Prep Prep + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
either7or_DConj Conj + + + - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
every_Det Det + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
everybody_NP NP + + - + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + - + + + + + + - - - - + + + - + + + - + +
everything_NP NP + + - + + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + - - - - + + + - + + + - + +
everywhere_Adv Adv + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
except_Prep Prep + - + - + - + + - - + + + + + + + + + + + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
few_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
for_Prep Prep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + + + +
from_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + - - + + + + + + + + + + + + + + - - + + + - + + + + + +
have_V2 V2 + + - + + + + + + + + + - + + + + + + - + + + - + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
he_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
here7from_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
here7to_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
here_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
how8many_IDet IDet + + + + + + + + - - + + - + + + + + + + + - - + + + - - + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
how8much_IAdv IAdv + - - + + + + + - - - + + + + + + + + + + - + - + + + - + + - - + + + - - + - + + + + + + - + - + + + - + + + - + +
how_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
i_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
if_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
if_then_Conj Conj + - - - + - + + - - + + + + + + + + + - - - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + - - + +
in8front_Prep Prep + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
in_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
it_Pron Pron + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
language_title_Utt Utt + + + + + + + + - - + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + - + - + - + +
less_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
many_Det Det + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
more_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
most_Predet Predet + + - + + + + + - - + + - + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
much_Det Det + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
must_VV VV + - - + + + + + - - + + - + + + + + + - - - + + + + - - + + + + + + + + + + + + - + + + - - + + + - + - + + + - - +
n2 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n3 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n4 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n5 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n6 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n7 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n8 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
n9 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
nd Digit -> Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nd10 Sub10 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nd100 Sub100 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nd1000 Sub1000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nd1000000 Sub1000000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
no_Quant Quant + - - - + - + + - - + + - + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
no_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
nobody_NP NP + - + - + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
not_Predet Predet + - - - + - + + - - + + + + + + + + + - + - + - + + + - + - + - + + + - - + + + + + + + + - - - + + + - + + + - + +
nothing_NP NP + - + + + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
num Sub1000000 -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
num2digits Numeral -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
on_Prep Prep + + + + + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
only_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
or_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
otherwise_PConj PConj + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
part_Prep Prep + - + + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
please_Voc Voc + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
possess_Prep Prep + - + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
pot0 Digit -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot01 Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot0as1 Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot1 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot110 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot111 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot1as2 Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot1plus Digit -> Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot1to19 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot2 Sub10 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot21 Sub1000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
pot2as3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot2plus Sub10 -> Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot31 Sub1000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
pot3as4 Sub1000000 -> Sub1000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
pot3float Float -> Sub1000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - +
pot3plus Sub1000 -> Sub1000 -> Sub1000000 + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
pot4 Sub1000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
pot41 Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
pot4as5 Sub1000000000 -> Sub1000000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
pot4float Float -> Sub1000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
pot4plus Sub1000 -> Sub1000000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
pot5 Sub1000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
pot51 Sub1000000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
pot5float Float -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
pot5plus Sub1000 -> Sub1000000000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
quite_Adv AdA + - - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
she_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
so_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
somePl_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - + + + + - + + + - + +
someSg_Det Det + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
somebody_NP NP + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + + + + + + + + + + + + + + - - + - + + + - + + + - + +
something_NP NP + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + - + + - + + + - + + + - + +
somewhere_Adv Adv + + + - + + + + + - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + + + +
that_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
that_Subj Subj + - + + + + + + - - - + + + + + + + + + + - + - + + + - + + - + + + + - - + - + + + + + + - - + + + + - + + + - + +
there7from_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
there7to_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
there_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
therefore_PConj PConj + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
they_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
this_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
through_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + - - + +
to_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
too_AdA AdA + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
under_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
very_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
want_VV VV + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
we_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
whatPl_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
whatSg_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
when_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
when_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
where_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
which_IQuant IQuant + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
whoPl_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
whoSg_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
why_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
with_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
without_Prep Prep + + + + + + + + - - + + + + + + + + + + - - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
yes_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
youPl_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
youPol_Pron Pron + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
youSg_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
1 fun type Afr Amh Grc Ara Eus Bul Cat Chi Hrv Cze Dan Dut Gus Eng Est Fin Fre Ger Gre Heb Hin Hun Ice Ina Ita Jpn Kam Kor Lat Lav Lit May Mlt Mon Nep Nor Nno Pes Pol Por Pnb Ron Cgg Rus Snd Slo Slv Som Spa Swa Swe Tam Tel Tha Tur Ukr Urd Zul
2 AAnter Ant + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
3 ASimul Ant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4 AdAP AdA -> AP -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + - + + + - + + + + + +
5 AdAdv AdA -> Adv -> Adv + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
6 AdNum AdN -> Card -> Card + - + + + + + + + - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + + + +
7 AdVVP AdV -> VP -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - + + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
8 AdVVPSlash AdV -> VPSlash -> VPSlash - - - + + + + + - - + - - + - + + + + - + - + - + + - + + - - - + + + + + - - + - - + + - - - - + - + - + - - - + +
9 AddAdvQVP QVP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
10 AdjCN AP -> CN -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
11 AdjDAP DAP -> AP -> DAP - - - - + + + - - - + - + + + - + - - - - - + - + + + - - - - - - - - + + - - + - - + + - - - - + + + - - - + - - +
12 AdjOrd Ord -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + + + + + +
13 AdnCAdv CAdv -> AdN + - - + - + + + + - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + + + +
14 AdvAP AP -> Adv -> AP - - - + + + + + + + + + + + + + + - + - + + + - + + + - + + - + + + + + + + - + - - - + - + + - + + + - + - + + + +
15 AdvCN CN -> Adv -> CN + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
16 AdvIAdv IAdv -> Adv -> IAdv + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
17 AdvIP IP -> Adv -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
18 AdvImp Adv -> Imp -> Imp - - - - - + + - - - + - - + - - + - - - - - - - + - - - - - - - - - - + + - - + - - - - - - - - + - + - + - - - - +
19 AdvNP NP -> Adv -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
20 AdvQVP VP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
21 AdvS Adv -> S -> S + + + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + - + + - + + + - + - + + + - + +
22 AdvSlash ClSlash -> Adv -> ClSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
23 AdvVP VP -> Adv -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
24 AdvVPSlash VPSlash -> Adv -> VPSlash - - - - + + + + - - + - - + + + + + + - + + + - + + - + + - - - + + + + + - - + - - + + - - - + + - + - + - - - + +
25 ApposCN CN -> NP -> CN + + - + + + + + + + + + - + + + + + + - + + + + + + - + + + + - + + + + + + + + + + + + + + - - + - + - - + + + + +
26 BaseAP AP -> AP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
27 BaseAdV AdV -> AdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
28 BaseAdv Adv -> Adv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
29 BaseCN CN -> CN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
30 BaseDAP DAP -> DAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
31 BaseIAdv IAdv -> IAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
32 BaseNP NP -> NP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
33 BaseRS RS -> RS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
34 BaseS S -> S -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
35 CAdvAP CAdv -> AP -> NP -> AP + + - - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
36 CleftAdv Adv -> S -> Cl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
37 CleftNP NP -> RS -> Cl + - + - - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
38 CompAP AP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
39 CompAdv Adv -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
40 CompCN CN -> Comp + - + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
41 CompIAdv IAdv -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
42 CompIP IP -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
43 CompNP NP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
44 ComparA A -> NP -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + - - + + + + - + + + + + +
45 ComparAdvAdj CAdv -> A -> NP -> Adv + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
46 ComparAdvAdjS CAdv -> A -> S -> Adv + - - - - + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
47 ComplA2 A2 -> NP -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
48 ComplN2 N2 -> NP -> CN + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
49 ComplN3 N3 -> NP -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
50 ComplSlash VPSlash -> NP -> VP + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
51 ComplSlashIP VPSlash -> IP -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
52 ComplVA VA -> AP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
53 ComplVQ VQ -> QS -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
54 ComplVS VS -> S -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - + + - + - + + + - + +
55 ComplVV VV -> VP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
56 ConjAP Conj -> ListAP -> AP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
57 ConjAdV Conj -> ListAdV -> AdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
58 ConjAdv Conj -> ListAdv -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
59 ConjCN Conj -> ListCN -> CN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
60 ConjDet Conj -> ListDAP -> Det - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
61 ConjIAdv Conj -> ListIAdv -> IAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
62 ConjNP Conj -> ListNP -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
63 ConjRS Conj -> ListRS -> RS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
64 ConjS Conj -> ListS -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
65 ConsAP AP -> ListAP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
66 ConsAdV AdV -> ListAdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
67 ConsAdv Adv -> ListAdv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
68 ConsCN CN -> ListCN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
69 ConsDAP DAP -> ListDAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
70 ConsIAdv IAdv -> ListIAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
71 ConsNP NP -> ListNP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
72 ConsRS RS -> ListRS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
73 ConsS S -> ListS -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
74 CountNP Det -> NP -> NP - - - - + + + + - - + - + + - + + - + - + - + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - + +
75 D_0 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
76 D_1 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
77 D_2 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
78 D_3 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
79 D_4 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
80 D_5 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
81 D_6 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
82 D_7 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
83 D_8 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
84 D_9 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
85 DefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
86 DetCN Det -> CN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
87 DetDAP Det -> DAP - - - - + + + - - - + + + + + + + + - - - - + - + + + - - - + - - - - + + - + + - - + + - - - - + + + - - - + - - +
88 DetNP Det -> NP + + - + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + + + +
89 DetQuant Quant -> Num -> Det + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
90 DetQuantOrd Quant -> Num -> Ord -> Det + + + + + + + + - - + + + + + + + + + - + + + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
91 EmbedQS QS -> SC + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
92 EmbedS S -> SC + - + + + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
93 EmbedVP VP -> SC + + - + + + + + - - + + - + + + + + + - + - + + + + - + - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
94 ExistIP IP -> QCl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
95 ExistIPAdv IP -> Adv -> QCl - - + - - + - - - - - - + + - + - + - + - - + - - + + - + - - - + + - - - - - + - - - + - - - - + - + - + - - - - +
96 ExistNP NP -> Cl + - + + + + + + + - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - + + + - + - + + + + + +
97 ExistNPAdv NP -> Adv -> Cl - - + + - + - - + - - - + + - + + + - + - - + - + + + - + - - - + + - - - + - + - - - + - - - - + - + - + - - + - +
98 ExtAdvNP NP -> Adv -> NP - - - - + + + + - - + + + + - + + + - - - + + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - - +
99 ExtAdvS Adv -> S -> S - - - - + + + + - - + + - + + + + + + - + + + - + + - + - - + + + + - + + - + + - + + + - - + + + - + - + + - - + +
100 ExtAdvVP VP -> Adv -> VP - - - - + + + + - - + + - + - + + + - - - - + - + + - - - - - - + - - + + - - + - - - + - - - - + - + - + - - - - +
101 FunRP Prep -> NP -> RP -> RP + - - - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - + - + - + - + + + - + +
102 GenericCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
103 IDig Dig -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
104 IIDig Dig -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
105 IdRP RP + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
106 IdetCN IDet -> CN -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
107 IdetIP IDet -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
108 IdetQuant IQuant -> Num -> IDet + + - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
109 ImpP3 NP -> VP -> Utt - - + - - - - - - - - - + + - + + + + + + - + - - + + - + + - - + + + - - + - + + - - + + - - - - - - - + - - - + +
110 ImpPl1 VP -> Utt + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
111 ImpVP VP -> Imp + + + + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
112 ImpersCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
113 IndefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
114 MassNP CN -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
115 NoPConj PConj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
116 NoVoc Voc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
117 NumCard Card -> Num + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
118 NumDigits Digits -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + - - + + + + +
119 NumNumeral Numeral -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
120 NumPl Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
121 NumSg Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
122 OrdDigits Digits -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
123 OrdNumeral Numeral -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
124 OrdNumeralSuperl Numeral -> A -> Ord - - - - + - + + - - + + + + - + + + - - - - + - + + + - - - - + - - - + + - - + - - + + - - - - + + + - - - + - - +
125 OrdSuperl A -> Ord + + + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + - - + + + + - - + + + + +
126 PConjConj Conj -> PConj + - + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + + + - + + + + + +
127 PNeg Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
128 PPartNP NP -> V2 -> NP + + - - + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + + + + - - - + - + - - + + - + +
129 PPos Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
130 PartNP CN -> NP -> CN - - - - + + + + - - + - + + - + + - + - + - + - + + + - - - + - + - - + + - - + - - + + - - - + + + + - - - + - + +
131 PassV2 V2 -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
132 PhrUtt PConj -> Utt -> Voc -> Phr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
133 PositA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
134 PositAdAAdj A -> AdA + - - - + + + + - - + + + + + + + + + - + - + - + + + - + - - - + + - + + - - + - - - + - - - - + + + - + - - - + +
135 PositAdvAdj A -> Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
136 PossNP CN -> NP -> CN - - + + + + + + - - + + + + + + + + + - + - + - + + + - - - + + + - - + + + - + - - + + - - - + + + + - - - + - + +
137 PossPron Pron -> Quant + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
138 PredSCVP SC -> VP -> Cl + - + - + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
139 PredVP NP -> VP -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
140 PredetNP Predet -> NP -> NP + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
141 PrepIP Prep -> IP -> IAdv + - + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
142 PrepNP Prep -> NP -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
143 ProgrVP VP -> VP + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
144 QuestCl Cl -> QCl + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
145 QuestIAdv IAdv -> Cl -> QCl + + - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
146 QuestIComp IComp -> NP -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
147 QuestQVP IP -> QVP -> QCl - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
148 QuestSlash IP -> ClSlash -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
149 QuestVP IP -> VP -> QCl + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
150 ReflA2 A2 -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
151 ReflVP VPSlash -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - + + + - + - + + + - + +
152 RelCN CN -> RS -> CN + - + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + - - + + + + +
153 RelCl Cl -> RCl + - - + + + + + - - + + + + + + + + + + + - + + + + + + - + + - + + + + + + + + + + + + + - + - + - + - + + + - + +
154 RelNP NP -> RS -> NP + - + + + + + + - - + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
155 RelS S -> RS -> S + - + - + + + + - - + + - + + + + + + - + - + + + + - - - - + - + + + + + + + + + + - + + - - - + - + - + + - - + +
156 RelSlash RP -> ClSlash -> RCl + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
157 RelVP RP -> VP -> RCl + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
158 SSubjS S -> Subj -> S -> S - + - - + + + + - - + + - + - + + + + - + - + - + + - - - - - - + + + + + + - + + - - + + - - + + - + - + + - - + +
159 SelfAdVVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
160 SelfAdvVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
161 SelfNP NP -> NP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - - - + - + - - - - +
162 SentAP AP -> SC -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
163 SentCN CN -> SC -> CN + - + + + + + + - - + + + + + + + + + - + - + + + + + + - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
164 Slash2V3 V3 -> NP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
165 Slash3V3 V3 -> NP -> VPSlash + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
166 SlashPrep Cl -> Prep -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
167 SlashV2A V2A -> AP -> VPSlash + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
168 SlashV2Q V2Q -> QS -> VPSlash + - + - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
169 SlashV2S V2S -> S -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
170 SlashV2V V2V -> VP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
171 SlashV2VNP V2V -> NP -> VPSlash -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
172 SlashV2a V2 -> VPSlash + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
173 SlashVP NP -> VPSlash -> ClSlash + + + + + + + + - - + + - + + + + + + - + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
174 SlashVS NP -> VS -> SSlash -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
175 SlashVV VV -> VPSlash -> VPSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
176 SubjS Subj -> S -> Adv + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
177 TCond Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
178 TEmpty Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
179 TExclMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
180 TFullStop Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
181 TFut Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
182 TPast Tense + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + +
183 TPres Tense + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
184 TQuestMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
185 TTAnt Tense -> Ant -> Temp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
186 Use2N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
187 Use3N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + - - + +
188 UseA2 A2 -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + - + + + + + +
189 UseCl Temp -> Pol -> Cl -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
190 UseComp Comp -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
191 UseComparA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
192 UseCopula VP - - + + + + + + - - + + - + - + + + + - - + + - + + - + + - - + + + - + + - - + - + + + - - - + + - + - + - - - - +
193 UseN N -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
194 UseN2 N2 -> CN + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
195 UsePN PN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
196 UsePron Pron -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
197 UseQCl Temp -> Pol -> QCl -> QS + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
198 UseRCl Temp -> Pol -> RCl -> RS + - + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + - + + - + - + + + + + +
199 UseSlash Temp -> Pol -> ClSlash -> SSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
200 UseV V -> VP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
201 UttAP AP -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
202 UttAdv Adv -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
203 UttCN CN -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
204 UttCard Card -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
205 UttIAdv IAdv -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
206 UttIP IP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
207 UttImpPl Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
208 UttImpPol Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
209 UttImpSg Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
210 UttInterj Interj -> Utt - - - + + + + + - - + + + + + + + + + - + + + + + + + + + - - - + + - + + - - + - - + + - - + + + + + - + + + - + +
211 UttNP NP -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
212 UttQS QS -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
213 UttS S -> Utt + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
214 UttVP VP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
215 VPSlashPrep VP -> Prep -> VPSlash - - - + + + + + - - + + - + + + + + + + + - + - + + - - - + - - + + - + + + - + - + - + - - - + + - + - + - - - + +
216 VocNP NP -> Voc + + + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + - + - + + + + + +
217 above_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
218 active2passive Cl -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
219 after_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
220 all_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
221 almost_AdA AdA + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
222 almost_AdN AdN + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
223 although_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
224 always_AdV AdV + + + - + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
225 and_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
226 as_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + + + - + + + - + + + - + + + - - + + + + + + + + - - - + - + - + + + - + +
227 at_least_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
228 at_most_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
229 because_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
230 before_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
231 behind_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
232 between_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
233 both7and_DConj Conj + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
234 but_PConj PConj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
235 by8agent_Prep Prep + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + - + +
236 by8means_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
237 can8know_VV VV + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + - + + + + + + + - - + + - + - + + + - + +
238 can_VV VV + - - + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
239 dconcat Digits -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
240 digits2num Digits -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
241 digits2numeral Card -> Card + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
242 dn Dig -> Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
243 dn10 Dig -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
244 dn100 Dig -> Dig -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
245 dn1000 Dig -> Dig -> Dig -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
246 dn1000000a Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
247 dn1000000b Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
248 dn1000000c Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
249 during_Prep Prep + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
250 either7or_DConj Conj + + + - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
251 every_Det Det + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
252 everybody_NP NP + + - + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + - + + + + + + - - - - + + + - + + + - + +
253 everything_NP NP + + - + + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + - - - - + + + - + + + - + +
254 everywhere_Adv Adv + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
255 except_Prep Prep + - + - + - + + - - + + + + + + + + + + + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
256 few_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
257 for_Prep Prep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + + + +
258 from_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + - - + + + + + + + + + + + + + + - - + + + - + + + + + +
259 have_V2 V2 + + - + + + + + + + + + - + + + + + + - + + + - + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
260 he_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
261 here7from_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
262 here7to_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
263 here_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
264 how8many_IDet IDet + + + + + + + + - - + + - + + + + + + + + - - + + + - - + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
265 how8much_IAdv IAdv + - - + + + + + - - - + + + + + + + + + + - + - + + + - + + - - + + + - - + - + + + + + + - + - + + + - + + + - + +
266 how_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
267 i_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
268 if_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
269 if_then_Conj Conj + - - - + - + + - - + + + + + + + + + - - - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + - - + +
270 in8front_Prep Prep + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
271 in_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
272 it_Pron Pron + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
273 language_title_Utt Utt + + + + + + + + - - + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + - + - + - + +
274 less_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
275 many_Det Det + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
276 more_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
277 most_Predet Predet + + - + + + + + - - + + - + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
278 much_Det Det + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
279 must_VV VV + - - + + + + + - - + + - + + + + + + - - - + + + + - - + + + + + + + + + + + + - + + + - - + + + - + - + + + - - +
280 n2 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
281 n3 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
282 n4 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
283 n5 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
284 n6 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
285 n7 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
286 n8 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
287 n9 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
288 nd Digit -> Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
289 nd10 Sub10 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
290 nd100 Sub100 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
291 nd1000 Sub1000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
292 nd1000000 Sub1000000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
293 no_Quant Quant + - - - + - + + - - + + - + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
294 no_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
295 nobody_NP NP + - + - + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
296 not_Predet Predet + - - - + - + + - - + + + + + + + + + - + - + - + + + - + - + - + + + - - + + + + + + + + - - - + + + - + + + - + +
297 nothing_NP NP + - + + + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
298 num Sub1000000 -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
299 num2digits Numeral -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
300 on_Prep Prep + + + + + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
301 only_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
302 or_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
303 otherwise_PConj PConj + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
304 part_Prep Prep + - + + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
305 please_Voc Voc + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
306 possess_Prep Prep + - + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
307 pot0 Digit -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
308 pot01 Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
309 pot0as1 Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
310 pot1 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
311 pot110 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
312 pot111 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
313 pot1as2 Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
314 pot1plus Digit -> Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
315 pot1to19 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
316 pot2 Sub10 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
317 pot21 Sub1000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
318 pot2as3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
319 pot2plus Sub10 -> Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
320 pot3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
321 pot31 Sub1000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
322 pot3as4 Sub1000000 -> Sub1000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
323 pot3float Float -> Sub1000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - +
324 pot3plus Sub1000 -> Sub1000 -> Sub1000000 + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
325 pot4 Sub1000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
326 pot41 Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
327 pot4as5 Sub1000000000 -> Sub1000000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
328 pot4float Float -> Sub1000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
329 pot4plus Sub1000 -> Sub1000000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
330 pot5 Sub1000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
331 pot51 Sub1000000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
332 pot5float Float -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
333 pot5plus Sub1000 -> Sub1000000000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
334 quite_Adv AdA + - - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
335 she_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
336 so_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
337 somePl_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - + + + + - + + + - + +
338 someSg_Det Det + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
339 somebody_NP NP + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + + + + + + + + + + + + + + - - + - + + + - + + + - + +
340 something_NP NP + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + - + + - + + + - + + + - + +
341 somewhere_Adv Adv + + + - + + + + + - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + + + +
342 that_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
343 that_Subj Subj + - + + + + + + - - - + + + + + + + + + + - + - + + + - + + - + + + + - - + - + + + + + + - - + + + + - + + + - + +
344 there7from_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
345 there7to_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
346 there_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
347 therefore_PConj PConj + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
348 they_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
349 this_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
350 through_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + - - + +
351 to_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
352 too_AdA AdA + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
353 under_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
354 very_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
355 want_VV VV + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
356 we_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
357 whatPl_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
358 whatSg_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
359 when_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
360 when_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
361 where_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
362 which_IQuant IQuant + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
363 whoPl_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
364 whoSg_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
365 why_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
366 with_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
367 without_Prep Prep + + + + + + + + - - + + + + + + + + + + - - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
368 yes_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
369 youPl_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
370 youPol_Pron Pron + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
371 youSg_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +

View File

@@ -159,7 +159,7 @@ The GF Resource Grammar Library.
//Linguistic Issues in Language Technology//,
2 (2),
2009.
[PDF http://elanguage.net/journals/index.php/lilt/article/viewFile/214/158]
[PDF https://journals.colorado.edu/index.php/lilt/article/view/1205/1047]
#BR
//A systematic presentation of the library from the linguistic point of view.//
//Not only about English, but English examples abound.//

93
doc/show_missing.py Normal file
View File

@@ -0,0 +1,93 @@
# show missing functions in the RGL languages
# basic usage: python3 show_missing.py >missing-in-rgl-Grammar.tsv
import subprocess
# this is the functions you want to find: default is all funs in Grammar
GF_LIB_PATH = '/Users/aarne/GF/dist/build/rgl/'
ALLTENSES_PATH = GF_LIB_PATH + 'alltenses/'
RGL_SOURCE_PATH = '/Users/aarne/GF/gf-rgl/src/'
GRAMMAR = 'Grammar'
# these are the languages you investigate
LANGS = ['Cze', 'Urd']
# get all functions in GRAMMAR, together with their types
def get_funs(module=GRAMMAR):
cmd = 'echo "pg -funs" | gf -run ' + ALLTENSES_PATH + module + '.gfo'
missing = subprocess.Popen(cmd, text=True, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = missing.communicate()[0].split(';')
return ([(fun.split()[0].strip(), ' '.join(fun.split()[2:])) for fun in output if fun.split()])
# get all missing functions in GRAMMARLng; this can take a long time
def get_missing_from_compiled(Lng, module=GRAMMAR):
print('investigating', Lng)
cmd = 'echo "pg -missing" | gf -run ' + ALLTENSES_PATH + module + Lng + '.gfo'
missing = subprocess.Popen(cmd, text=True, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = missing.communicate()[0].split()
return set(output[2:])
# to get all languages in the compiled RGL, use all_langs from here
def all_rgl_compiled_langs():
modules = subprocess.run(['ls', ALLTENSES_PATH], capture_output=True, text=True)
files = str(modules.stdout)
return [file[-7:-4] for file in files.split() if file[:-7].endswith(GRAMMAR)]
# LANGS = all_rgl_compiled_langs() # uncomment this line if you want all languages
# it is much faster to use source files (sending gfos to /tmp)
def str_until(c, s):
i = s.find(c)
if i >= 0:
return s[:i]
else:
return s
def get_missing_from_source(lang, gf_file):
cmd = 'gf -batch -retain -no-pmcfg -src -gfo-dir=/tmp ' + gf_file
missing = subprocess.Popen(cmd, text=True, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = missing.communicate()[1].split('\n')
missing = (lang, {str_until('\x1b[39;49m', line.split()[-1])
for line in output
if line.strip().startswith('Warning: no linearization of')})
return missing
def all_rgl_source_modules(module=GRAMMAR):
cmd = 'ls ' + RGL_SOURCE_PATH + '*/' + module + '?*.gf'
files = subprocess.Popen(cmd, text=True, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = files.communicate()[0].split()
return {file[-6:-3]: file for file in output}
LANGS = all_rgl_source_modules() # Lng: file dict
# make a text with tab-separated strings withcolumns fun, type, langs and rows for each fun
def make_table(funs=get_funs(), module=GRAMMAR, langs=LANGS):
header = ['fun', 'type'] + list(langs.keys()) # if dict, otherwise langs ###
rows = [header]
print('\t'.join(header))
# missings = {lang: get_missing_from_compiled(lang, module) for lang in langs}
missings = {lang: get_missing_from_source(lang, file)[1] for lang,file in langs.items()}
for fun in funs:
row = [fun[0], fun[1]]
for lang in langs.keys():
if fun[0] in missings[lang]:
row.append('-')
else:
row.append('+')
rows.append(row)
print('\t'.join(row))
# the output is send to stdout
make_table()

View File

@@ -46,7 +46,7 @@ abstract functions and their Universal Dependency labels
- Paper "The GF Resource Grammar Library" by A. Ranta
(//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of
the library with linguistic motivations.
[PDF http://journals.linguisticsociety.org/elanguage/lilt/article/download/214/214-501-1-PB.pdf]
[PDF https://journals.colorado.edu/index.php/lilt/article/view/1205/1047]
- Paper "Grammars as Software Libraries" by A. Ranta
(In Y. Bertot, G. Huet, J-J. Lévy, and G. Plotkin (eds.),
//From Semantics to Computer Science//, Cambridge University Press,

File diff suppressed because it is too large Load Diff

View File

@@ -19,6 +19,7 @@ Grc,Ancient Greek,ancient_greek,,,y,,n,n,,n
Gre,Greek,greek,,,,,,,,y
Heb,Hebrew,hebrew,,,,,n,n,,n
Hin,Hindi,hindi,Hindustani,to_devanagari,y,,,,,y
Hrv,Croatian,croatian,,,,,,y,,n
Hun,Hungarian,hungarian,,,n,y,y,y,n,n
Ice,Icelandic,icelandic,,,,,,n,,y
Ina,Interlingua,interlingua,,,y,,n,n,,n
@@ -45,6 +46,7 @@ Snd,Sindhi,sindhi,,,,,,,,y
Spa,Spanish,spanish,Romance,,y,,,,y,y
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n
Swe,Swedish,swedish,Scand,,y,,,,y,y
Tam,Tamil,tamil,n,n,n,n,n,n,n,n
Tel,Telugu,telugu,,,y,n,n,n,,n
Tha,Thai,thai,,to_thai,,,,,,y
Tur,Turkish,turkish,,,y,,,n,,n
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis
19 Gre Greek greek y
20 Heb Hebrew hebrew n n n
21 Hin Hindi hindi Hindustani to_devanagari y y
22 Hrv Croatian croatian y n
23 Hun Hungarian hungarian n y y y n n
24 Ice Icelandic icelandic n y
25 Ina Interlingua interlingua y n n n
46 Spa Spanish spanish Romance y y y
47 Swa Swahili swahili Bantu y n n n n
48 Swe Swedish swedish Scand y y y
49 Tam Tamil tamil n n n n n n n n
50 Tel Telugu telugu y n n n n
51 Tha Thai thai to_thai y
52 Tur Turkish turkish y n n

BIN
src/FileHierarchy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

78
src/README.md Normal file
View File

@@ -0,0 +1,78 @@
# Introduction
## Intended audience of this Readme
This Readme is designed for new developers who wish to either extend/improve on a resource grammar or create a new one. It provides an overview of the relationships between files and a simple working pipeline for developers to get started.
Note that while files in this folder are meant to be named with 3 letter suffixes representing the language, e.g. "ResBul" for the Bulgarian resource file, this Readme will use a 4 letter suffix "Lang" to represent a language in general, e.g. "ResLang".
## Author(s) of this Readme
This Readme was written by Nemo and edited by Inari on 14th August 2022.
# Creating a new resource grammar
If you are working on an RGL for a new language, you will need to run "Clone.hs" in the "src" folder so that you can clone a project from another language to your language to give you a basis to start with.
As per the instructions, the syntax is "Clone fromdir todir fromlang tolang", e.g. "runghc Clone swedish danish Swe Dan". You may want to add the option --comment-body after the word "Clone" to comment out every line in the body of the files to start fresh.
This is especially useful if your new language has very little in common with the language you are copying from because they come from different language families.
# File hierarchy
The number of files may be overwhelming, but they are related together following the graphic under "Module dependencies" under the rgl-tutorial. In the graphic, an example is that GrammarIta and ResIta are dependent on Prelude as they have arrows pointing towards the Prelude ellipse.
http://www.grammaticalframework.org/lib/doc/rgl-tutorial/index.html
The below graphic is an alternative graphic explaining the relations, taken from private correspondence with Inari.
![File Hierarchy](FileHierarchy.png)
CatLang defines the categories, and the modules AdjectiveLang, NounLang, SentenceLang, PhraseLang, and so on, all extend Cat. The Grammar is defined as a collection of all those AdjectiveLang, NounLang, SentenceLang, and so on modules. LangLang is defined as the collection GrammarLang and LexiconLang and is where you will be checking your program. You may ignore:
- AllLangAbs, AllLang, ExtendLang, ExtraLangAbs, ExtraLang, ConstructionLang, DocumentationLang, MarkupLang, BackwardLang
If the language you cloned from has any of these resource modules, you can remove them completely:
- IrregLang (unless you want to populate it with irregular verbs of your own language), MissingLang (see how to generate your own if you need it later: https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#generating-missingxxx)
# Relationships between functions in files
There may be several ways the functions within the files are organised relative to one another. In other words, there may be several schemas depending on the author. More recent RGLs might implement one schema detailed by this blog post by Inari.
https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#my-naming-scheme-for-lincats-and-opers
# Main goal
You may think of your long-term goal as eventually implementing all the abstract functions found in the "abstract" folder. In other words, you are somewhat constrained by the available categories in Cat.gf and functions in relevant e.g. Noun.gf, Verb.gf etc. files.
In the future, if you find that the available functions do not apply to your language, you may search in the Extend.gf file for more optional functions, or in Extra.gf. if it doesn't exist, create your own ExtraLangAbs.gf with the concrete ExtraLang.gf, all in the same directory gf-rgl/src/lang. This blog post contains more information.
https://inariksit.github.io/gf/2021/02/15/rgl-api-core-extensions.html#language-specific-extra-modules
There is a prioritised list of RGL functions for new resource grammars written by contributor heatherleaf. You can start by implementing the "+++" functions.
https://github.com/GrammaticalFramework/gf-rgl/issues/238
# Working pipeline example
For a pipeline, You might wish to start with implementing functions that create Noun Phrase like DetCN: Det -> CN -> NP; a function that takes a Determiner and a Common Noun and gives a Noun Phrase. In this case, the workflow is done by editing:
1. ResLang: Contains the relevant Operations (Opers) for e.g. "Noun", "mkN", "Determiner" and "Quant".
2. ParamLang: Contains the language paramters used in ResLang.
3. CatLang: CatLang will be defined in terms of Opers found in ResLang. This means that instead of Defining NP in CatLang as, say, {s: Str}, you will define NP as ResLang.NounPhrase, which points to a NounPhrase Oper in ResLang. Then you need to implement the word syntax in NounLang.
4. NounLang: Contains the relevant lins in defining sentence structure.
5. LexiconLang: Contains the lins that define the Noun words.
As you will have to define a determiner that is created from a Quant, you will have to look at the following files too.
6. StructuralLang: Contains the lins that define the Quant/Determiner words.
Note that you will have to use mkQuant instead of creating Det by mkDet directly.
# Testing your work
When you are done with your implementation, you may test that everything works by starting up LangLang and, in this case, writing something like:
```DetCN (DetQuant xxxx_Quant NumSg) (UseN xxxx_N)```
Where you replace 'xxxx' with the word in Lang.

View File

@@ -126,6 +126,8 @@ abstract Cat = Common ** {
N ; -- common noun e.g. "house"
N2 ; -- relational noun e.g. "son"
N3 ; -- three-place relational noun e.g. "connection"
GN ; -- given name e.g. "George"
SN ; -- second name e.g. "Washington"
PN ; -- proper name e.g. "Paris"
-- DEPRECATED: QuantSg, QuantPl

View File

@@ -14,6 +14,8 @@ fun
InflectionN2 : N2 -> Inflection ;
InflectionN3 : N3 -> Inflection ;
InflectionPN : PN -> Inflection ;
InflectionGN : GN -> Inflection ;
InflectionSN : SN -> Inflection ;
InflectionA : A -> Inflection ;
InflectionA2 : A2 -> Inflection ;
InflectionV : V -> Inflection ;

View File

@@ -292,4 +292,10 @@ cat X ; -- for words that are difficult to classify, mainly for MorphoDict
fun
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
GivenName : GN -> PN ;
MaleSurname : SN -> PN ;
FemaleSurname : SN -> PN ;
PlSurname : SN -> PN ;
FullName : GN -> SN -> PN ;
}

View File

@@ -20,11 +20,13 @@
abstract Numeral = Cat [Numeral,Digits] ** {
cat
Digit ; -- 2..9
Sub10 ; -- 1..9
Sub100 ; -- 1..99
Sub1000 ; -- 1..999
Sub1000000 ; -- 1..999999
Digit ; -- 2..9
Sub10 ; -- 1..9
Sub100 ; -- 1..99
Sub1000 ; -- 1..999
Sub1000000 ; -- 1..999999
Sub1000000000 ; -- 1..999999999
Sub1000000000000 ; -- 1..999999999999
data
num : Sub1000000 -> Numeral ; -- 123456 [coercion to top category]
@@ -33,18 +35,36 @@ data
pot01 : Sub10 ; -- 1
pot0 : Digit -> Sub10 ; -- d * 1
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
pot110 : Sub100 ; -- 10
pot111 : Sub100 ; -- 11
pot1to19 : Digit -> Sub100 ; -- 10 + d
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
pot1 : Digit -> Sub100 ; -- d * 10
pot1plus : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
pot1as2 : Sub100 -> Sub1000 ; -- coercion of 1..99
pot21 : Sub1000 ; -- a hundred instead of one hundred
pot2 : Sub10 -> Sub1000 ; -- m * 100
pot2plus : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
pot2as3 : Sub1000 -> Sub1000000 ; -- coercion of 1..999
pot31 : Sub1000000 ; -- a thousand instead of one thousand
pot3 : Sub1000 -> Sub1000000 ; -- m * 1000
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
pot3as4 : Sub1000000 -> Sub1000000000 ; -- coercion of 1..999999
pot3float : Float -> Sub1000000 ; -- 3.5 thousand
pot41 : Sub1000000000 ; -- a million instead of one million
pot4 : Sub1000 -> Sub1000000000 ; -- m * 1000000000
pot4plus : Sub1000 -> Sub1000000 -> Sub1000000000 ; -- m * 1000000000 + n
pot4as5 : Sub1000000000 -> Sub1000000000000 ; -- coercion of 1..999999999
pot4float : Float -> Sub1000000000 ; -- 3.5 million
pot51 : Sub1000000000000 ; -- a billion instead of one billion
pot5 : Sub1000 -> Sub1000000000000 ; -- m * 1000000000
pot5plus : Sub1000 -> Sub1000000000 -> Sub1000000000000 ; -- m * 1000000000 + n
pot5float : Float -> Sub1000000000000 ; -- 3.5 billion
-- Numerals as sequences of digits have a separate, simpler grammar

View File

@@ -3,7 +3,7 @@
concrete AllAfr of AllAfrAbs =
LangAfr,
IrregAfr,
ExtraAfr
ExtendAfr
**
{
--{} ;

View File

@@ -83,6 +83,6 @@ concrete CatAfr of Cat =
N = Noun ;
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
PN = {s : NPCase => Str} ;
GN, SN, PN = {s : NPCase => Str} ;
}

View File

@@ -28,6 +28,18 @@ lin
s2 = paragraph (pn.s ! NPNom)
} ;
InflectionGN = \pn -> {
t = "vnm" ;
s1 = heading1 "Voornaam" ;
s2 = paragraph (pn.s ! NPNom)
} ;
InflectionSN = \pn -> {
t = "van" ;
s1 = heading1 "Van" ;
s2 = paragraph (pn.s ! NPNom)
} ;
InflectionA, InflectionA2 = \adj ->
let
gforms : AForm -> Str = \a ->

View File

@@ -0,0 +1,14 @@
concrete ExtendAfr of Extend =
CatAfr ** ExtendFunctor
with
(Grammar = GrammarAfr) **
open
ResAfr in {
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = {
s = \\c => gn.s ! NPNom ++ sn.s ! c ;
} ;
}

View File

@@ -7,7 +7,7 @@ flags optimize = all_subs ;
lincat
Digit = {s : DForm => CardOrd => Str ; en : Str} ;
Sub10 = {s : DForm => CardOrd => Str ; n : Number ; en : Str ; attr : Str} ;
Sub100, Sub1000, Sub1000000 =
Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
{s : CardOrd => Str ; n : Number ; attr : Str} ;
lin
@@ -50,6 +50,8 @@ lin
pot3plus n m =
addAttr {s = \\g => n.attr ++ "duisend" ++ m.s ! g ; n = Pl} ;
pot3as4 n = n ;
pot4as5 n = n ;
lincat
Dig = TDigit ;

View File

@@ -323,8 +323,8 @@ concrete ExtraGrc of ExtraGrcAbs = CatGrc, NumeralGrc[Sub1000000,tenthousand] **
Sub10000 = {s : CardOrd => Str ; n : Number} ; -- TODO: constructors
lin -- d * 10000
pot4 d = { s = \\f => d.s ! NAdv ++ (tenthousand ! f) ; n = Pl } ;
pot4plus d m = {
pot3X d = { s = \\f => d.s ! NAdv ++ (tenthousand ! f) ; n = Pl } ;
pot3Xplus d m = {
s = \\f => d.s ! NAdv ++ tenthousand ! f ++ "kai`" ++ m.s ! f ; n = Pl} ;

View File

@@ -153,8 +153,8 @@ abstract ExtraGrcAbs = Extra, Numeral[Sub1000000] ** {
Sub10000 ; -- 1..9999
data
pot4 : Sub10000 -> Sub1000000 ; -- m * 10000
pot4plus : Sub10000 -> Sub10000 -> Sub1000000 ; -- m * 10000 + n
pot3X : Sub10000 -> Sub1000000 ; -- m * 10000
pot3Xplus : Sub10000 -> Sub10000 -> Sub1000000 ; -- m * 10000 + n
-- Conjunctions:

View File

@@ -5,9 +5,11 @@ concrete NumeralGrc of Numeral = CatGrc ** open ResGrc, MorphoGrc in {
lincat
Digit = {s : DForm => CardOrd => Str} ;
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
Sub100 = {s : CardOrd => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
Sub100 = {s : CardOrd => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000000000 = {s : CardOrd => Str ; n : Number} ;
lin num x = x ;
@@ -52,6 +54,8 @@ lin -- mkDigit d (d+10) (d*10) d-th d-times
pot3plus d m = {
s = \\f => d.s ! NAdv ++ thousand ! f ++ "kai`" ++ m.s ! f ; n = Pl} ;
pot3as4 n = n ;
pot4as5 n = n ;
-- numerals as sequences of digits

View File

@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsHrv = Combinators with
(Cat = CatHrv),
(Structural = StructuralHrv),
(Constructors = ConstructorsHrv)
** open MissingHrv in {}

View File

@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsTam = Combinators - [ appCN, appCNc ] with
(Cat = CatTam),
(Structural = StructuralTam),
(Noun = NounTam),
(Constructors = ConstructorsTam) **
{}
}

View File

@@ -121,9 +121,9 @@ incomplete resource Constructors = open Grammar in { --%
mkText : QS -> Text -- Did she sleep?
= \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; --%
mkText : (Pol) -> Imp -> Text -- Don't sleep!
= \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty; --%
= \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ; --%
mkText : Imp -> Text -- Sleep! --%
= \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty; --%
= \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ; --%
-- Finally, two texts can be combined into a text.
@@ -374,11 +374,11 @@ incomplete resource Constructors = open Grammar in { --%
mkCl = overload {
mkCl : NP -> V -> Cl -- she sleeps
= \s,v -> PredVP s (UseV v); --%
= \s,v -> PredVP s (UseV v) ; --%
mkCl : NP -> V2 -> NP -> Cl -- she loves him
= \s,v,o -> PredVP s (ComplV2 v o); --%
= \s,v,o -> PredVP s (ComplV2 v o) ; --%
mkCl : NP -> V3 -> NP -> NP -> Cl -- she sends it to him
= \s,v,o,i -> PredVP s (ComplV3 v o i); --%
= \s,v,o,i -> PredVP s (ComplV3 v o i) ; --%
mkCl : NP -> VV -> VP -> Cl -- she wants to sleep
= \s,v,vp -> PredVP s (ComplVV v vp) ; --%
mkCl : NP -> VS -> S -> Cl -- she says that she sleeps
@@ -1006,9 +1006,9 @@ incomplete resource Constructors = open Grammar in { --%
mkCN : A -> N -> CN -- big house
= \x,y -> AdjCN (PositA x) (UseN y); --%
= \x,y -> AdjCN (PositA x) (UseN y) ; --%
mkCN : A -> CN -> CN -- big blue house
= \x,y -> AdjCN (PositA x) y; --%
= \x,y -> AdjCN (PositA x) y ; --%
mkCN : AP -> N -> CN -- very big house
= \x,y -> AdjCN x (UseN y) ; --%
mkCN : AP -> CN -> CN -- very big blue house
@@ -1211,11 +1211,11 @@ incomplete resource Constructors = open Grammar in { --%
mkQCl : IP -> VP -> QCl -- who sleeps --:
= QuestVP ; --%
mkQCl : IP -> V -> QCl -- who sleeps
= \s,v -> QuestVP s (UseV v); --%
= \s,v -> QuestVP s (UseV v) ; --%
mkQCl : IP -> V2 -> NP -> QCl -- who loves her
= \s,v,o -> QuestVP s (ComplV2 v o); --%
= \s,v,o -> QuestVP s (ComplV2 v o) ; --%
mkQCl : IP -> V3 -> NP -> NP -> QCl -- who sends it to her
= \s,v,o,i -> QuestVP s (ComplV3 v o i); --%
= \s,v,o,i -> QuestVP s (ComplV3 v o i) ; --%
mkQCl : IP -> VV -> VP -> QCl -- who wants to sleep
= \s,v,vp -> QuestVP s (ComplVV v vp) ; --%
mkQCl : IP -> VS -> S -> QCl -- who says that she sleeps
@@ -1408,11 +1408,11 @@ incomplete resource Constructors = open Grammar in { --%
= RelVP ; --%
mkRCl : RP -> V -> RCl -- who sleeps
= \s,v -> RelVP s (UseV v); --%
= \s,v -> RelVP s (UseV v) ; --%
mkRCl : RP -> V2 -> NP -> RCl -- who loves her
= \s,v,o -> RelVP s (ComplV2 v o); --%
= \s,v,o -> RelVP s (ComplV2 v o) ; --%
mkRCl : RP -> V3 -> NP -> NP -> RCl -- who sends it to her
= \s,v,o,i -> RelVP s (ComplV3 v o i); --%
= \s,v,o,i -> RelVP s (ComplV3 v o i) ; --%
mkRCl : RP -> VV -> VP -> RCl -- who wants to sleep
= \s,v,vp -> RelVP s (ComplVV v vp) ; --%
mkRCl : RP -> VS -> S -> RCl -- who says that she sleeps

View File

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

View File

@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude:../tamil
resource ConstructorsTam = Constructors with (Grammar = GrammarTam) **
open MissingTam in {} ;
}

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

@@ -0,0 +1,6 @@
--# -path=.:../slovak:../common:../abstract:../prelude
resource SymbolicHrv = Symbolic with
(Symbol = SymbolHrv),
(Grammar = GrammarHrv)
** open MissingHrv in {}

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

@@ -0,0 +1,6 @@
--# -path=.:../tamil:../common:../abstract:../prelude
resource SymbolicTam = Symbolic with
(Symbol = SymbolTam),
(Grammar = GrammarTam) ** open MissingTam in {} ;
}

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

@@ -0,0 +1,4 @@
--# -path=.:./alltenses:../prelude
instance SyntaxHrv of Syntax =
ConstructorsHrv, CatHrv, StructuralHrv, CombinatorsHrv ;

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

@@ -0,0 +1,6 @@
--# -path=.:alltenses:prelude
instance SyntaxTam of Syntax =
ConstructorsTam, CatTam, StructuralTam, CombinatorsTam ;
}

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

@@ -0,0 +1,13 @@
--# -path=.:../slovak:../common:../abstract:../prelude
resource TryHrv = SyntaxHrv, LexiconHrv, ParadigmsHrv -[mkAdv, mkAdN, mkOrd, mkDet, mkQuant]**
open (P = ParadigmsHrv) in {
-- oper
-- mkAdv = overload SyntaxHrv {
-- mkAdv : Str -> Adv = P.mkAdv ;
-- } ;
}

View File

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

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

@@ -0,0 +1,4 @@
--# -path=.:../tamil :../common:../abstract:../prelude
resource TryTam = SyntaxTam, LexiconTam, ParadigmsTam - [mkAdv,mkAdN,mkOrd,mkNum] ;
}

View File

@@ -81,7 +81,7 @@ incomplete concrete CatBantu of Cat =
-- N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Prep} ;
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Prep} ;
PN = {s : Case => Str ; g : Gender} ;
GN, SN, PN = {s : Case => Str ; g : Gender} ;
--Tense = {s : Str ; t : ResKam.Tense} ;
linref

View File

@@ -86,6 +86,8 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ;
N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ;
GN = {s : Str; g : Sex} ;
SN = {s : Sex => Str; pl : Str} ;
PN = {s : Str; gn : GenNum} ;
lindef

View File

@@ -92,6 +92,26 @@ lin
s3 = ""
} ;
InflectionGN = \gn -> {
t = "същ.с.л." ;
s1= heading1 (case gn.g of {
Male => "Мъжко Име" ;
Female => "Женско Име"
}) ;
s2 = gn.s ;
s3 = ""
} ;
InflectionSN = \sn -> {
t = "същ.с.ф." ;
s1= heading1 ("Фамилно Име") ;
s2 = frameTable (
tr (th "мъжко" ++ td (sn.s ! Male)) ++
tr (th "женско" ++ td (sn.s ! Female)) ++
tr (th "семейно" ++ td sn.pl)) ;
s3 = ""
} ;
InflectionA, InflectionA2 = \a -> {
t = "пр" ;
s1= heading1 ("Прилагателно") ;

View File

@@ -300,5 +300,26 @@ lin UseDAP dap = {
p = NounP3 dap.p
} ;
lin GivenName = \n -> {
s = n.s ;
gn = GSg (sex2gender n.g)
} ;
lin MaleSurname = \n -> {
s = n.s ! Male ;
gn = GSg Masc
} ;
lin FemaleSurname = \n -> {
s = n.s ! Female;
gn = GSg Fem
} ;
lin PlSurname = \n -> {
s = n.pl ;
gn = GPl
} ;
lin FullName gn sn = {
s = gn.s ++ sn.s ! gn.g ;
gn = GSg (sex2gender gn.g)
} ;
}

View File

@@ -266,7 +266,25 @@ oper
--2 Proper Names
--
masculine : Gender = Masc ;
feminine : Gender = Fem ;
neutr : Gender = Neut ;
male : Sex = Male ;
female : Sex = Female ;
mkGN : Str -> Sex -> GN =
\s,g -> lin GN {s = s; g = g} ;
mkSN = overload {
mkSN : Str -> SN =
\s -> lin SN {s = \\_ => s; pl = s} ;
mkSN : Str -> Str -> Str -> SN =
\m,f,pl -> lin SN {s = table Sex [m; f]; pl = pl} ;
} ;
mkPN = overload {
mkPN : Str -> PN = \s -> {s = s; gn = GSg Masc ; lock_PN = <>} ;
mkPN : Str -> Gender -> PN =
\s,g -> {s = s; gn = GSg g ; lock_PN = <>} ;
mkPN : Str -> GenNum -> PN =

View File

@@ -4,11 +4,13 @@ concrete NumeralBul of Numeral = CatBul [Numeral,Digits] ** open Prelude, ResBul
lincat
Digit = {s : DForm => CardOrd => Str} ;
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
Sub100 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
Sub1000 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
Digit = {s : DForm => CardOrd => Str} ;
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
Sub100 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
Sub1000 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
Sub1000000000 = {s : CardOrd => NumF => Str; n : Number} ;
Sub1000000000000 = {s : CardOrd => NumF => Str; n : Number} ;
lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ;
lin n2 = mkDigit "два" "двама" "две" "втори" "двайсет" "двеста" "двестата" ;
@@ -52,24 +54,33 @@ lin pot01 =
;n = Sg
} ;
lin pot0 d = d ** {n = Pl} ;
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
lin pot110 = {s=\\c,nf => pot01.s ! ten nf ! c; n = Pl; i = True} ;
lin pot111 = {s=\\c,nf => pot01.s ! teen nf ! c; n = Pl; i = True} ;
lin pot1to19 d = {s = \\c,nf => d.s ! teen nf ! c; n = Pl; i = True} ;
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
lin pot1 d = {s = \\c,nf => d.s ! ten nf ! c; n = Pl; i = True} ;
lin pot1plus d e = {
s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "и" ++ e.s ! unit ! c ; n = Pl; i = False} ;
lin pot1as2 n = n ;
lin pot21 = {
s = \\o,_ => mkCardOrd100 "сто" "стоте" "стотен" ! o ;
i = False ;
n = Pl
} ;
lin pot2 n = {s = \\c,nf => n.s ! hundred ! c; n = Pl; i = True} ;
lin pot2plus d e = {
s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "и"} ++ e.s ! c ! nf ;
n = Pl ;
i = False
} ;
lin pot2as3 n = n ;
lin pot31 = {
s = \\o,_ => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! o ;
n = Pl
} ;
lin pot3 n = {
s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! c ;
@@ -85,7 +96,52 @@ lin pot3plus n m = {
++ case m.i of {False => []; True => "и"} ++ m.s ! c ! nf ;
n = Pl
} ;
lin pot3as4 n = n ;
lin pot3float f = {
s = \\c,nf => f.s ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! c ;
n = Pl
} ;
lin pot41 = {
s = \\o,_ => mkCardOrd100 "милион" "милионите" "милионен" ! o ;
n = Pl
} ;
lin pot4 n = {
s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "милион" "милионите" "милионен" ! c ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "милиони" "милионите" "милионен" ! c
} ;
n = Pl
} ;
lin pot4plus n1 n2 = {
s = \\o,f => (pot4 n1).s ! o ! f ++ "и" ++ n2.s ! o ! f;
n = Pl
} ;
lin pot4as5 n = n ;
lin pot4float f = {
s = \\c,nf => f.s ++ mkCardOrd100 "милиона" "милиона" "милионен" ! c ;
n = Pl
} ;
lin pot51 = {
s = \\o,_ => mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! o ;
n = Pl
} ;
lin pot5 n = {
s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! c ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! c
} ;
n = Pl
} ;
lin pot5plus n1 n2 = {
s = \\o,f => (pot5 n1).s ! o ! f ++ "и" ++ n2.s ! o ! f;
n = Pl
} ;
lin pot5float f = {
s = \\c,nf => f.s ++ mkCardOrd100 "милиярда" "милиярда" "милиярден" ! c ;
n = Pl
} ;
-- numerals as sequences of digits

View File

@@ -47,7 +47,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
param
Gender = Masc | Fem | Neut ;
Sex = Male | Female ;
Species = Indef | Def ;
-- The plural never makes a gender distinction.
@@ -851,4 +852,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
APl Indef => "свои" ;
APl Def => "своите"
} ;
sex2gender : Sex -> Gender = \g ->
case g of {
Male => Masc ;
Female => Fem
} ;
}

View File

@@ -15,5 +15,10 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
ParadigmsCat in {
-- put your own definitions here
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = {
s = gn.s ++ sn.s ;
g = gn.g
} ;
} ;

View File

@@ -12,6 +12,8 @@ lincat
Sub100 = {s : CardOrd => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000000 = {s : CardOrd => Str ; n : Number} ;
Sub1000000000000 = {s : CardOrd => Str ; n : Number} ;
-- Auxiliaries
@@ -125,7 +127,9 @@ lin
pot3plus n m =
{s= \\co => (table {Sg => []; Pl => (n.s ! co)} ! n.n) ++ "mil" ++ (m.s !co);
n= Pl} ;
pot3as4 n = n ;
pot4as5 n = n ;
param
DForm = unit | teen | ten | tenplus | Aunit | OrdF ;

View File

@@ -79,7 +79,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
N = ResChi.Noun ;
N2 = ResChi.Noun ** {c2 : Preposition} ;
N3 = ResChi.Noun ** {c2,c3 : Preposition} ;
PN = ResChi.NP ;
GN, SN, PN = ResChi.NP ;
-- overridden

View File

@@ -16,4 +16,10 @@ concrete ExtendChi of Extend = CatChi **
oper
mkAdv : Str -> Adv ;
mkAdv str = lin Adv {s = str ; advType = ATManner ; hasDe = False} ;
};
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
lin FullName gn sn = {
s = gn.s ++ sn.s
} ;
};

View File

@@ -20,7 +20,7 @@ lincat Digit = {s,p : Str} ; -- s/p: without/with classifier (er/liang)
lincat Sub10 = {s,p,t : Str} ; -- t: with "shi wan"
lincat Sub100 = {end0,beg0 : Zero ; s,p : Bform => Str} ; -- end0: ends with zeros, e.g. 20 ; beg0: begins with zeros, e.g. 02
lincat Sub1000 = {end0,beg0 : Zero ; s,p : Qform => Str} ; -- end0: ends with zeros, e.g. 210 ; beg0: begins with zeros, e.g. 021
lincat Sub1000000 = {s,p : Str} ;
lincat Sub1000000, Sub1000000000, Sub1000000000000 = {s,p : Str} ;
lin num x0 = x0 ;
-- 一二三四五六七八九十一百千
@@ -137,7 +137,9 @@ lin pot3 n =
{s,p = n.s ! shiwan} ;
lin pot3plus n m =
{s,p = (n.s ! shiwan0) ++ (ling ! <n.end0,m.beg0>) ++ m.s ! bai0} ;
lin pot3as4 n = n ;
lin pot4as5 n = n ;
-- numerals as sequences of digits

View File

@@ -0,0 +1,33 @@
concrete AdjectiveHrv of Adjective = CatHrv ** open ResHrv, Prelude in {
lin
PositA a = adjFormsAdjective a.posit ** {isPost = False} ;
AdAP ada ap = ap ** {s = \\g,n,c => ada.s ++ ap.s ! g ! n ! c} ;
AdjOrd a = adjFormsAdjective a ** {isPost = False} ;
ComparA a np =
let ap = adjFormsAdjective a.compar
in
ap ** {
s = \\g,n,c => ap.s ! g ! n ! c ++ od_Str ++ np.s ! Gen ;
isPost = True ;
} ;
ComplA2 a np =
let ap = adjFormsAdjective a
in
ap ** {
s = \\g,n,c => ap.s ! g ! n ! c ++ a.c.s ++ np.s ! a.c.c ;
isPost = True ;
} ;
UseA2 a = adjFormsAdjective a ** {isPost = False} ;
UseComparA a = adjFormsAdjective a.compar ** {isPost = False} ;
AdvAP ap adv = ap ** {s = \\g,n,c => ap.s ! g ! n ! c ++ adv.s ; isPost = True} ;
}

View File

@@ -0,0 +1,9 @@
concrete AdverbHrv of Adverb = CatHrv **
open ResHrv, Prelude in {
lin
PrepNP prep np = {
s = prep.s ++ np.prep ! prep.c
} ;
AdnCAdv a = a ;
}

8
src/croatian/AllHrv.gf Normal file
View File

@@ -0,0 +1,8 @@
--# -path=.:../abstract:../common:../api
concrete AllHrv of AllHrvAbs =
LangHrv,
ExtendHrv,
MissingHrv
;

View File

@@ -0,0 +1,7 @@
--# -path=.:../abstract:../common:prelude
abstract AllHrvAbs =
Lang,
Extend
;

72
src/croatian/CatHrv.gf Normal file
View File

@@ -0,0 +1,72 @@
concrete CatHrv of Cat =
--- CommonX **
open ResHrv, Prelude in {
lincat
Text = {s : Str} ;
Phr = {s : Str} ;
Utt = {s : Str} ;
S = {s : Str} ;
Cl = {subj,clit,compl : Str ; verb : VerbForms ; a : Agr} ;
Comp = {s : Agr => Str} ;
QS = {s : Str} ; ---- TODO: indirect questions
QCl = {subj,clit,compl : Str ; verb : VerbForms ; a : Agr} ; -- = Cl ---- check if enough
IAdv = {s : Str} ;
RS = {s : Agr => Str} ;
RCl = {subj,clit,compl : Agr => Str ; verb : VerbForms} ; ---- RAgr with composite RP
RP = AdjForms ;
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
V = {s : VerbForms} ;
V2 = {s : VerbForms ; c : ComplementCase} ;
VS,VQ = {s : VerbForms} ;
A = {posit, compar, superl : AdjForms} ;
AP = ResHrv.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
A2 = ResHrv.AdjForms ** {c : ComplementCase} ;
AdA = {s : Str} ;
N = ResHrv.NounForms ** {g : Gender} ;
CN = ResHrv.Noun ; -- {s : Number => Case => Str ; g : Gender}
NP = {s,clit,prep : Case => Str ; a : Agr ; hasClit : Bool} ; -- clit,prep differ for pronouns
PN = {s : Case => Str ; g : Gender} ;
Det = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ; -- can contain a numeral, therefore NumSize
Quant = {s : Gender => Number => Case => Str} ; -- same as AP
Num = Determiner ;
Card = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ;
Ord = AdjForms ;
Pron = PronForms ** {poss : AdjForms} ;
Adv = {s : Str} ;
Prep = ResHrv.ComplementCase ; -- {s : Str ; c : Case ; hasPrep : Bool} ;
Conj = {s1,s2 : Str} ; ---- may need a number
Pol = {s : Str ; p : Bool} ;
Temp = {s : Str ; t : CTense} ;
Tense = {s : Str ; t : CTense} ;
Ant = {s : Str ; t : CTense} ;
PConj = {s : Str} ;
Voc = {s : Str} ;
AdN = {s : Str} ;
AdV = {s : Str} ;
CAdv = {s : Str} ;
SC = {s : Str} ;
linref
N = \s -> s.snom ;
A = \s -> s.posit.msnom ;
V = \v -> v.s ! VInf ;
lincat Numeral = {s : AdjForms ; size : NumSize} ;
lincat Digits = {s : Str ; size : NumSize} ;
}

View File

@@ -0,0 +1,56 @@
concrete ConjunctionHrv of Conjunction = CatHrv **
open ResHrv, Coordination, Prelude in {
lincat
[Adv] = {s1,s2 : Str} ;
[AP] = {s1,s2 : Gender => Number => Case => Str ; isPost : Bool} ;
[NP] = {s1,s2,prep1,prep2 : Case => Str ; a : Agr} ;
[S] = {s1,s2 : Str} ;
[RS] = {s1,s2 : Agr => Str} ;
lin
BaseAdv = twoSS ;
ConsAdv = consrSS comma ;
BaseAP x y = twoTable3 Gender Number Case x y
** {isPost = orB x.isPost y.isPost} ; ---- should be so in Pol too
ConsAP x xs = consrTable3 Gender Number Case comma x xs
** {isPost = orB x.isPost xs.isPost} ;
BaseNP x y = {
s1 = x.s ;
s2 = y.s ;
prep1 = x.prep ;
prep2 = y.prep ;
a = y.a
} ; -- clitics disappear ---- Agr TODO
ConsNP x xs = {
s1 = \\c => x.s ! c ++ comma ++ xs.s1 ! c ;
s2 = xs.s2 ;
prep1 = \\c => x.prep ! c ++ comma ++ xs.prep1 ! c ;
prep2 = xs.prep2 ;
a = xs.a ----
} ;
BaseS = twoSS ;
ConsS = consrSS comma ;
BaseRS = twoTable Agr ;
ConsRS = consrTable Agr comma ;
ConjAdv = conjunctDistrSS ;
ConjAP conj xs = conjunctDistrTable3 Gender Number Case conj xs
** {isPost = xs.isPost} ;
ConjNP conj xs = {
s,clit = \\c => conj.s1 ++ xs.s1 ! c ++ conj.s2 ++ xs.s2 ! c ;
prep = \\c => conj.s1 ++ xs.prep1 ! c ++ conj.s2 ++ xs.prep2 ! c ;
a = xs.a ; ---- dep. on conj as well
hasClit = False ;
} ;
ConjS = conjunctDistrSS ;
ConjRS = conjunctDistrTable Agr ;
}

43
src/croatian/ExtendHrv.gf Normal file
View File

@@ -0,0 +1,43 @@
concrete ExtendHrv of Extend = CatHrv **
ExtendFunctor - [
--- ReflPossPron
CardCNCard
---- constant not found (yet)
,youPolFem_Pron
,UttVPShort
,UttAccIP
,UttDatIP
,SubjRelNP
,StrandRelSlash
,StrandQuestSlash
,SlashBareV2S
,PredIAdvVP
,PredAPVP
,ExistsNP
,ExistS
,ExistPluralCN
,ExistNPQS
,ExistMassCN
,ExistIPQS
,ExistCN
,EmptyRelSlash
,DetNPMasc
,DetNPFem
,ComplBareVS
,CompIQuant
,CompBareCN
]
with (Grammar = GrammarHrv)
**
open
ResHrv
in {
---lin ReflPossPron = justDemPronFormsAdjective reflPossessivePron ;
lin CardCNCard card cn = {
s = \\g,c => card.s ! g ! c ++ numSizeForm cn.s card.size c ;
size = NS_20_
} ;
}

View File

@@ -0,0 +1,19 @@
--# -path=.:../abstract:../common:prelude
concrete GrammarHrv of Grammar =
NounHrv,
VerbHrv,
AdjectiveHrv,
AdverbHrv,
NumeralHrv,
SentenceHrv,
QuestionHrv,
RelativeHrv,
ConjunctionHrv,
PhraseHrv,
TextHrv,
StructuralHrv,
IdiomHrv,
TenseHrv
** {
}

13
src/croatian/IdiomHrv.gf Normal file
View File

@@ -0,0 +1,13 @@
concrete IdiomHrv of Idiom = CatHrv ** open Prelude, ResHrv in {
lin
ExistNP np = { ---- TODO verify this
subj = np.s ! Nom ;
verb = copula_VerbForms ;
clit, compl = [] ;
a = np.a
} ;
ExistNPAdv np adv = ExistNP np ** {compl = adv.s} ;
}

10
src/croatian/LangHrv.gf Normal file
View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract:../common:../api
concrete LangHrv of Lang =
GrammarHrv,
LexiconHrv
-- ,ConstructionHrv
-- ,DocumentationHrv --# notpresent
** {
}

View File

@@ -0,0 +1,19 @@
concrete LexiconHrv of Lexicon =
CatHrv
**
open
ResHrv, ParadigmsHrv
in {
lin
cat_N = mkN "mačka" ;
black_A = mkA "crni" ;
love_V2 = mkV2 (mkV "voljeti" "volim" "volio") ;
see_V2 = mkV2 (mkV "vidjeti" "vidim" "vidio") ;
walk_V = mkV "hodati" ;
man_N = mkN "čovjek" ;
woman_N = mkN "žena" ;
}

View File

@@ -0,0 +1,99 @@
resource MissingHrv = open GrammarHrv, SymbolHrv, Prelude, PredefCnc in {
-- temporary definitions to enable the compilation of RGL API
oper AAnter : Ant = notYet "AAnter" ;
oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
oper CompCN : CN -> Comp = notYet "CompCN" ;
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComparAdvAdj : CAdv -> A -> NP -> Adv = notYet "ComparAdvAdj" ;
oper ComparAdvAdjS : CAdv -> A -> S -> Adv = notYet "ComparAdvAdjS" ;
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
oper ComplVA : VA -> AP -> VP = notYet "ComplVA" ;
oper ComplVQ : VQ -> QS -> VP = notYet "ComplVQ" ;
oper ComplVS : VS -> S -> VP = notYet "ComplVS" ;
oper ComplVV : VV -> VP -> VP = notYet "ComplVV" ;
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
oper EmbedS : S -> SC = notYet "EmbedS" ;
oper EmbedVP : VP -> SC = notYet "EmbedVP" ;
oper ExistIP : IP -> QCl = notYet "ExistIP" ;
oper FunRP : Prep -> NP -> RP -> RP = notYet "FunRP" ;
oper GenericCl : VP -> Cl = notYet "GenericCl" ;
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
oper PassV2 : V2 -> VP = notYet "PassV2" ;
oper PositAdvAdj : A -> Adv = notYet "PositAdvAdj" ;
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
oper PredetNP : Predet -> NP -> NP = notYet "PredetNP" ;
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
oper ReflA2 : A2 -> AP = notYet "ReflA2" ;
oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
oper RelCl : Cl -> RCl = notYet "RelCl" ;
oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
oper Slash3V3 : V3 -> NP -> VPSlash = notYet "Slash3V3" ;
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
oper SlashVP : NP -> VPSlash -> ClSlash = notYet "SlashVP" ;
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
oper SubjS : Subj -> S -> Adv = notYet "SubjS" ;
oper TCond : Tense = notYet "TCond" ;
oper TFut : Tense = notYet "TFut" ;
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
oper UseN2 : N2 -> CN = notYet "UseN2" ;
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
oper UttCard : Card -> Utt = notYet "UttCard" ;
oper UttIAdv : IAdv -> Utt = notYet "UttIAdv" ;
oper UttIP : IP -> Utt = notYet "UttIP" ;
oper UttImpPl : Pol -> Imp -> Utt = notYet "UttImpPl" ;
oper UttImpPol : Pol -> Imp -> Utt = notYet "UttImpPol" ;
oper UttImpSg : Pol -> Imp -> Utt = notYet "UttImpSg" ;
oper UttQS : QS -> Utt = notYet "UttQS" ;
oper UttVP : VP -> Utt = notYet "UttVP" ;
oper by8agent_Prep : Prep = notYet "by8agent_Prep" ;
oper whatSg_IP : IP = notYet "whatSg_IP" ;
oper which_IQuant : IQuant = notYet "which_IQuant" ;
oper whoSg_IP : IP = notYet "whoSg_IP" ;
oper youPol_Pron : Pron = notYet "youPol_Pron" ;
oper BaseSymb : Symb -> Symb -> [Symb] = notYet "BaseSymb" ;
oper CNIntNP : CN -> PredefCnc.Int -> NP = notYet "CNIntNP" ;
oper CNNumNP : CN -> Card -> NP = notYet "CNumNP" ;
oper CNSymbNP : Det -> CN -> [Symb] -> NP = notYet "CNSymbNP" ;
oper ConsSymb : Symb -> [Symb] -> [Symb] = notYet "ConsSymb" ;
oper FloatPN : PredefCnc.Float -> PN = notYet "FloatPN" ;
oper NumPN : Card -> PN = notYet "NumPN" ;
oper SymbOrd : Symb -> Ord = notYet "SymbOrd" ;
oper SymbS : Symb -> S = notYet "SymbS" ;
}

101
src/croatian/NounHrv.gf Normal file
View File

@@ -0,0 +1,101 @@
concrete NounHrv of Noun =
CatHrv
**
open ResHrv, Prelude in {
lin
DetCN det cn = {
s,prep,clit = \\c => det.s ! cn.g ! c ++ numSizeForm cn.s det.size c ;
a = numSizeAgr cn.g det.size P3 ;
hasClit = False ;
} ;
DetNP det = {
s,prep,clit = \\c => det.s ! Neutr ! c ;
a = numSizeAgr Neutr det.size P3 ;
hasClit = False ;
} ;
MassNP cn = {
s,prep,clit = \\c => cn.s ! Sg ! c ;
a = Ag cn.g Sg P3 ;
hasClit = False ;
} ;
DetQuant quant num = {
s = \\g,c => num.s ! g ! c ++ quant.s ! g ! numSizeNumber num.size ! c ;
size = num.size
} ;
DefArt = {s = \\_,_,_ => []} ;
IndefArt = {s = \\_,_,_ => []} ;
NumPl = {s = \\_,_ => [] ; size = NS_2_4} ; ---- size
NumSg = {s = \\_,_ => [] ; size = NS_1} ;
UsePron pron = {
s, prep = table { ---- TODO check prep
Nom | Voc => pron.nom ;
Gen | Acc => pron.gen ;
Dat | Loc => pron.dat ;
Ins => pron.ins
} ;
clit = table { ---- TODO check prep
Nom | Voc => pron.nom ;
Gen | Acc => pron.cgen ;
Dat | Loc => pron.cdat ;
Ins => pron.ins
} ;
a = pron.a ;
hasClit = True ;
} ;
PossPron pron = adjFormsAdjective pron.poss ;
UsePN pn = {
s,clit,prep = \\c => pn.s ! c ;
a = Ag pn.g Sg P3 ;
hasClit = False ;
} ;
AdjCN ap cn = {
s = \\n,c => preOrPost (notB ap.isPost) (ap.s ! cn.g ! n ! c) (cn.s ! n ! c) ;
g = cn.g
} ;
RelCN cn rs = {
s = \\n,c => cn.s ! n ! c ++ rs.s ! Ag cn.g n P3 ;
g = cn.g
} ;
AdvCN cn adv = {
s = \\n,c => cn.s ! n ! c ++ adv.s ;
g = cn.g
} ;
AdvNP np adv = {
s,clit = \\c => np.s ! c ++ adv.s ;
prep = \\c => np.prep ! c ++ adv.s ;
a = np.a ;
hasClit = False ;
} ;
UseN n = nounFormsNoun n n.g ;
ApposCN cn np = {
s = \\n,c => cn.s ! n ! c ++ np.s ! c ; ---- TODO check apposition order
g = cn.g
} ;
NumCard c = c ;
NumDigits ds = ds ** {s = \\_,_ => ds.s} ;
NumNumeral nu = {
s = \\g,c => (adjFormsAdjective nu.s).s ! g ! Sg ! c ; ---- TODO Sg?
size = nu.size
} ;
AdNum adn card = card ** {s = \\g,c => adn.s ++ card.s ! g ! c} ;
OrdSuperl a = a.superl ;
}

139
src/croatian/NumeralHrv.gf Normal file
View File

@@ -0,0 +1,139 @@
concrete NumeralHrv of Numeral =
CatHrv [Numeral, Digits] **
open
ResHrv,
Prelude
in {
-- AR 2022-09-27
---- TODO ordinal forms
oper LinNumeral = {s : AdjForms ; size : NumSize} ;
oper LinDigit = {unit : AdjForms ; teen, ten, hundred : Str ; size : NumSize} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinNumeral ;
lincat Sub1000 = LinNumeral ;
lincat Sub1000000 = LinNumeral ;
oper mkDigit : AdjForms -> Str -> Str -> Str -> NumSize -> LinDigit =
\dva, dvanaest, dvadeset, dvjesto, size -> {
unit = dva ;
teen = dvanaest ;
ten = dvadeset ;
hundred = dvjesto ;
size = size
} ;
oper mkBigDigit : (unit, teen, ten, hundred : Str) -> LinDigit =
\unit,ten,teen,hundred -> mkDigit (invarAdjForms unit) ten teen hundred NS_5_20 ;
oper bigNumeral : Str -> LinNumeral = \s -> {
s = invarAdjForms s ;
size = NS_20_
} ;
lin num x = x ;
lin n2 =
let
dva = invarAdjForms "dva" ** { --- BCMS: cases rarely used
fsnom, fsacc = "dvije" ;
msgen = "dvaju" ;
fsgen = "dviju" ;
msdat = "dvama" ;
fsdat = "dvjema"
}
in mkDigit dva "dvanaest" "dvadeset" "dvjesto" NS_2_4 ;
lin n3 =
let
tri = invarAdjForms "tri" ** { --- BCMS: cases rarely used
msgen, fsgen = "triju" ;
msdat, fsdat, msloc, mksins = "trima"
}
in
mkDigit tri "trinaest" "trideset" "tristo" NS_2_4 ;
lin n4 =
let
cetiri = invarAdjForms "četiri" ** { --- BCMS: cases rarely used
msgen, fsgen = "četiriju" ;
msdat, fsdat, msloc, mksins = "četirima"
}
in
mkDigit cetiri "četrnaest" "četrdeset" "četiristo" NS_2_4 ;
lin n5 = mkBigDigit "pet" "petnaest" "pedeset" "petsto" ;
lin n6 = mkBigDigit "šest" "šesnaest" "šezdeset" "šeststo" ;
lin n7 = mkBigDigit "sedam" "sedamnaest" "sedamdeset" "sedamsto" ;
lin n8 = mkBigDigit "osam" "osamnaest" "osamdeset" "osamsto" ;
lin n9 = mkBigDigit "devet" "devetnaest" "devedeset" "devetsto" ;
lin pot01 = mkDigit (velikA "jedan") "jedanaest" "deset" "sto" NS_1 ;
lin pot0 d = d ;
lin pot110 = bigNumeral "deset" ;
lin pot111 = bigNumeral "jedanaest" ;
lin pot1to19 d = bigNumeral d.teen ;
lin pot0as1 n = {s = n.unit ; size = n.size} ;
lin pot1 d = bigNumeral d.ten ;
lin pot1plus d e = {
s = invarAdjForms (d.ten ++ e.unit.msnom) ; ---- TODO inflection of e
size = e.size
} ;
lin pot1as2 n = n ;
lin pot2 d = bigNumeral d.hundred ;
lin pot2plus d e = {
s = invarAdjForms (d.hundred ++ e.s.msnom) ; ---- TODO inflection of e
size = e.size
} ;
lin pot2as3 n = n ;
lin pot3 n = bigNumeral (mkThousand n.s.fsnom n.size) ;
lin pot3plus n m = {
s = invarAdjForms (mkThousand n.s.fsnom n.size ++ m.s.msnom) ; ---- TODO inflect m
size = m.size
} ;
----oper tfSize : NumSize -> NumSize = \sz ->
---- table {Num1 => Num5 ; other => other} ! sz ;
oper mkThousand : Str -> NumSize -> Str = \attr,size ->
case size of {
NS_1 => "tisuću" ; -- BMS: hiljadu etc
NS_2_4 => attr ++ "tisuće" ;
_ => attr ++ "tisuća"
} ;
-- -- Numerals as sequences of digits have a separate, simpler grammar
lincat Dig = {s : Str ; size : NumSize} ;
lin
IDig d = d ;
IIDig d dd = {s = d.s ++ Predef.BIND ++ dd.s ; size = dd.size} ;
D_0 = { s = "0" ; size = NS_1} ; ---- ??
D_1 = { s = "1" ; size = NS_1} ;
D_2 = { s = "2" ; size = NS_2_4} ;
D_3 = { s = "3" ; size = NS_2_4} ;
D_4 = { s = "4" ; size = NS_2_4} ;
D_5 = { s = "5" ; size = NS_5_20} ;
D_6 = { s = "6" ; size = NS_5_20} ;
D_7 = { s = "7" ; size = NS_5_20} ;
D_8 = { s = "8" ; size = NS_5_20} ;
D_9 = { s = "9" ; size = NS_5_20} ;
}

View File

@@ -0,0 +1,246 @@
resource ParadigmsHrv = open CatHrv, ResHrv, (R=ResHrv), Prelude in {
----------------
-- Parameters
oper
singular : Number
= Sg ;
plural : Number
= Pl ;
mascAnimate : Gender
= Masc Anim ;
mascInanimate : Gender
= Masc Inanim ;
masculine : Gender
= Masc Inanim ;
feminine : Gender
= Fem ;
neuter : Gender
= Neutr ;
nominative : Case
= Nom ;
genitive : Case
= Gen ;
dative : Case
= Dat ;
accusative : Case
= Acc ;
vocative : Case
= R.Voc ;
locative : Case
= Loc ;
instrumental : Case
= Ins ;
------------------------------
-- Nouns
oper
mkN = overload {
mkN : (sgnom : Str) -> N -- guessing gender
= \sgnom -> lin N (smartLexNoun sgnom) ;
mkN : (sgnom : Str) -> Gender -> N
= \sgnom, g -> lin N (mkgLexNoun sgnom g) ;
mkN : NForms -> Gender -> N -- the worst case
= \nfs,g -> lin N (nfs ** {g = g}) ;
} ;
-- The following standard declensions can be used with good accuracy.
-- However, they have some defaults that may have to be overwritten.
-- This can be done easily by overriding those formes with record extension (**).
NForms = {snom,sgen,sdat,sacc,svoc,sins,pnom,pgen,pdat,pacc : Str} ;
izvorNForms : Str -> NForms
= izvorN ;
nokatNForms : Str -> NForms
= nokatN ;
gradaninNForms : Str -> NForms
= gradaninN ;
vojnikNForms : Str -> NForms
= vojnikN ;
bubregNForms : Str -> NForms
= bubregN ;
trbuhNForms : Str -> NForms
= trbuhN ;
cvorakNForms : Str -> NForms
= cvorakN ;
panjNForms : Str -> NForms
= panjN ;
suzanjNForms : Str -> NForms
= suzanjN ;
pristNForms : Str -> NForms
= pristN ;
stricNForms : Str -> NForms
= stricN ;
klinacNForms : Str -> NForms
= klinacN ;
posjetilacNForms : Str -> NForms
= posjetilacN ;
pepeoNForms : Str -> NForms
= pepeoN ;
ugaoNForms : Str -> NForms
= ugaoN ;
bifeNForms : Str -> NForms
= bifeN ;
ziriNForms : Str -> NForms
= ziriN ;
taksiNForms : Str -> NForms
= taksiN ;
koljenoNForms : Str -> NForms
= koljenoN ;
jedroNForms : Str -> NForms
= jedroN ;
poljeNForms : Str -> NForms
= poljeN ;
zenaNForms : Str -> NForms
= zenaN ;
PNForms : Type = {snom, sgen, sdat, sacc, svoc, sins : Str} ;
mkPN = overload {
mkPN : Str -> PN
= \s ->
let
nf = smartLexNoun s ;
n = nounFormsNoun nf nf.g
in lin PN {
s = \\c => n.s ! Sg ! c ; ---- TODO check this
g = nf.g
} ;
mkPN : PNForms -> Gender -> PN
= \fs, g -> lin PN {
s = table {
Nom => fs.snom ;
Gen => fs.sgen ;
Dat | Loc => fs.sdat ;
Acc => fs.sacc ;
Voc => fs.svoc ;
Ins => fs.sins
} ;
g = g
} ;
} ;
---------------------
-- Adjectives
-- Only positive forms so far ----
mkA = overload {
mkA : Str -> A
= \s ->
let
velik = velikA s ;
velikiji = regComparAForms velik ;
in lin A {
posit = velik ;
compar = velikiji ;
superl = superlAForms velikiji
} ;
mkA : (pos, comp : Str) -> A
= \pos, comp -> lin A {
posit = velikA pos ;
compar = velikA comp ;
superl = superlAForms (velikA comp)
} ;
mkA : (posit : AForms) -> (compar : Str) -> A
= \posit,compar -> lin A {
posit = posit ;
compar = velikA compar ;
superl = superlAForms (velikA compar)
} ;
mkA : (posit, compar : AForms) -> A
= \posit,compar -> lin A {
posit = posit ;
compar = compar ;
superl = superlAForms compar
} ;
mkA : (posit : AForms) -> A
= \posit ->
let
compar = regComparAForms posit
in lin A {
posit = posit ;
compar = compar ;
superl = superlAForms compar
} ;
} ;
invarA : Str -> A
= \s -> lin A {posit,compar,superl = invarAForms s} ; ---- TODO compar, superl?
AForms : Type
= R.AdjForms ;
-- the complete definition of AForms is
-- {msnom, fsnom, nsnom, msgen, fsgen, msdat,
-- fsdat, fsacc, msloc, msins, fsins, mpnom, pgen : Str} ;
velikAForms : Str -> AForms
= velikA ;
invarAForms : Str -> AForms
= \s -> invarAdjForms s ;
-------------------------
-- Verbs
mkV = overload {
mkV : (raditi : Str) -> V
= \s -> lin V {s = smartVerbForms s} ;
mkV : (raditi, radem, radio : Str) -> V
= \raditi, radem, radio ->
lin V {s = aeiVerbForms raditi radem radio} ;
mkV : VerbForms -> V
= \vf -> lin V {s = vf} ;
} ;
mkV2 = overload {
mkV2 : V -> V2
= \v -> lin V2 {s = v.s ;
c = {s = [] ; c = accusative ; hasPrep = False}} ;
mkV2 : V -> Case -> V2
= \v,c -> lin V2 {s = v.s ;
c = {s = [] ; c = c ; hasPrep = False}} ;
mkV2 : V -> Prep -> V2
= \v,c -> lin V2 {s = v.s ; c = c} ;
} ;
------------------------
-- Adverbs, prepositions, conjunctions, ...
mkAdv : Str -> Adv
= \s -> lin Adv {s = s} ;
mkPrep = overload {
mkPrep : Str -> Prep -- genitive prepositions
= \s -> lin Prep {s = s ; c = genitive ; hasPrep = True} ;
mkPrep : Case -> Prep -- oblique cases, empty string
= \c -> lin Prep {s = [] ; c = c ; hasPrep = False} ;
mkPrep : Str -> Case -> Prep
= \s,c -> lin Prep {s = s ; c = c ; hasPrep = True} ;
} ;
mkConj : Str -> Conj
= \s -> lin Conj {s1 = [] ; s2 = s} ;
mkAdN : Str -> AdN
= \s -> lin AdN {s = s} ;
mkOrd : Str -> Ord
= \s -> lin Ord (velikA s) ;
ifPluralNP : NP -> Bool
= \np -> case np.a of {
Ag _ Pl _ => True ;
_ => False
} ;
}

19
src/croatian/PhraseHrv.gf Normal file
View File

@@ -0,0 +1,19 @@
concrete PhraseHrv of Phrase = CatHrv ** open Prelude, ResHrv in {
lin
UttS s = s ;
UttAdv adv = adv ;
UttCN cn = {s = cn.s ! Sg ! Nom} ;
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! Nom} ;
UttNP np = {s = np.s ! Nom} ;
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
NoPConj = {s = []} ;
PConjConj conj = {s = conj.s2} ;
NoVoc = {s = []} ;
VocNP np = {s = np.s ! Nom} ;
}

View File

@@ -0,0 +1,7 @@
concrete QuestionHrv of Question = CatHrv **
open ResHrv, Prelude in {
lin
QuestCl cl = cl ; ----
}

View File

@@ -0,0 +1,18 @@
concrete RelativeHrv of Relative = CatHrv ** open
ParadigmsHrv,
ResHrv,
Prelude in {
lin
RelVP rp vp = vp ** {
subj =
let rel = (adjFormsAdjective rp).s
in \\a => case a of {
Ag g n _ => rel ! g ! n ! Nom
}
} ;
IdRP = (mkA "koji").posit ;
}

659
src/croatian/ResHrv.gf Normal file
View File

@@ -0,0 +1,659 @@
resource ResHrv = open Prelude in {
-- AR September 2022
-- sources:
-- Wiki = https://en.wikipedia.org/wiki/Serbo-Croatian_grammar
-- BCMS = Bosnian, Croatian, Montenegrin and Serbian:
-- An Essential Grammar (Routledge Essential Grammars) 1st Edition, by Željko Vrabec
-- parameters
param
Number = Sg | Pl ;
Animacy = Anim | Inanim ;
Gender = Masc Animacy | Fem | Neutr ;
Case = Nom | Gen | Dat | Acc | Voc | Loc | Ins ; -- traditional order
Person = P1 | P2 | P3 ;
VForm =
VInf
| VPres Number Person
| VPastPart Gender Number
;
---- TODO aorist, imperfect
Agr = Ag Gender Number Person ;
CTense = CTPres | CTPast ; ----- TODO complete the tense system to match BCS verb morphology
-- phonology
oper
softConsonant : pattern Str = #("c"|"č"|"ć"|"đ"|"j"|"lj"|"nj"|"š"|"ž"|"št") ;
--- wiki "and sometimes r"; BCMS slightly different
ifSoft : Str -> (soft,hard : Str) -> Str = \word, ssoft, shard ->
case word of {
_ + #softConsonant => ssoft ;
_ => shard
} ;
animate = Masc Anim ;
inanimate = Masc Inanim ;
feminine = Fem ;
neuter = Neutr ;
palatalize : Str -> Str = \s -> case s of {
x + "ki" => x + "ci" ;
x + "ke" => x + "če" ;
x + "gi" => x + "zi" ;
x + "ge" => x + "že" ;
x + "hi" => x + "si" ;
x + "he" => x + "še" ;
x + "ce" => x + "če" ;
_ => s
} ;
voicing : Str -> Str = \s -> case s of {
x + "b" => x + "p" ;
x + "d" => x + "t" ;
x + "đ" => x + "ć" ;
x + "z" => x + "s" ;
x + "dž" => x + "č" ;
x + "ž" => x + "š" ;
_ => s
} ;
---------------
-- Nouns
---------------
-- novel idea (for RGL): lexical items stored as records rather than tables
-- advantages:
-- - easier to make exceptions to paradigms (by ** {})
-- - easier to keep the number of forms minimal
-- - easier to see what is happening than with lots of anonymous arguments to mkN, mkA, mkV
-- so this is the lincat of N
NounForms : Type = {snom,sgen,sdat,sacc,svoc,sins,pnom,pgen,pdat,pacc : Str} ;
-- But traditional tables make agreement easier to handle in syntax
-- so this is the lincat of CN
Noun : Type = {s : Number => Case => Str ; g : Gender} ;
-- for lexical nouns N, we also need the gender but keep the minimal set of forms
LexNoun : Type = NounForms ** {g : Gender} ;
-- this is used in UseN
nounFormsNoun : NounForms -> Gender -> Noun
= \forms, g -> {
s = table {
Sg => table {
Nom => forms.snom ;
Gen => forms.sgen ;
Dat => forms.sdat ;
Acc => case g of {
Masc Anim | Fem => forms.sacc ;
_ => forms.snom
} ;
Voc => forms.svoc ;
Loc => forms.sdat ;
Ins => forms.sins
} ;
Pl => table {
Nom => forms.pnom ;
Gen => forms.pgen ;
Dat => forms.pdat ;
Acc => forms.pacc ;
Voc => forms.pnom ;
Loc => forms.pdat ;
Ins => forms.pdat
}
} ;
g = g
} ;
-- a declension type produces these forms from a string
DeclensionType : Type = Str -> NounForms ;
-- smart paradigms
smartLexNoun : Str -> LexNoun = \s -> case s of {
_ + "a" => zenaN s ** {g = feminine} ;
_ + "i" => ziriN s ** {g = inanimate} ; ---- TODO feminine i
_ + "e" => poljeN s ** {g = neuter} ; ---- TODO sunce, uze, zvonce, rame
_ + "ao" => ugaoN s ** {g = inanimate} ;
_ + "eo" => pepeoN s ** {g = inanimate} ;
_ + "o" => koljenoN s ** {g = neuter} ; ---- TODO jedro
_ + "lac" => posjetilacN s ** {g = inanimate} ;
_ + "anj" => suzanjN s ** {g = inanimate} ;
_ + "nj" => panjN s ** {g = inanimate} ;
_ + "št" => pristN s ** {g = inanimate} ;
_ + "ac" => klinacN s ** {g = neuter} ;
_ + "c" => stricN s ** {g = inanimate} ;
_ + "in" => gradaninN s ** {g = neuter} ;
_ + "ak" => cvorakN s ** {g = inanimate} ;
_ + "a" + ? => nokatN s ** {g = inanimate} ;
_ + "g" => bubregN s ** {g = inanimate} ;
_ + "h" => trbuhN s ** {g = inanimate} ;
_ + "k" => vojnikN s ** {g = inanimate} ;
_ => izvorN s ** {g = inanimate}
} ;
mkgLexNoun : Str -> Gender -> LexNoun = \s,g -> case <s,g> of {
<_ + "i", Masc _> => ziriN s ** {g = g} ;
<_ + "e", Masc _> => bifeN s ** {g = g} ;
<_ + "o", Masc _> => bifeN s ** {g = g} ;
<_, g> => smartLexNoun s ** {g = g}
} ;
-- the traditional declensions, following Wiki
-- they are also exported in ParadigmsHrv with names izvorN etc
izvorN : DeclensionType = \izvor ->
{
snom = izvor ;
sgen = izvor + "a" ;
sdat = izvor + "u" ;
sacc = izvor + "a" ;
svoc = ifSoft izvor
(izvor + "u")
(palatalize (izvor + "e")) ;
sins = ifSoft izvor
(izvor + "em")
(izvor + "om") ;
pnom = palatalize (izvor + "i") ;
pgen = izvor + "a" ;
pdat =
ifSoft izvor
(palatalize (izvor + "e") + "vima")
(palatalize (izvor + "i") + "ma") ;
pacc = izvor + "e" ;
} ;
nokatN : DeclensionType = \nokat ->
let
nokt = Predef.tk 2 nokat + last nokat
in izvorN nokt ** {
snom = nokat ;
sacc = nokt + "a" ;
pgen = nokat + "a" ;
} ;
gradaninN : DeclensionType = \gradanin ->
let
gradan = Predef.tk 2 gradanin ;
gradanN = izvorN gradan
in numbersNounForms (izvorN gradanin) gradanN ;
numbersNounForms : (sg, pl : NounForms) -> NounForms =
\sg, pl -> sg ** {
pnom = pl.pnom ;
pgen = pl.pgen ;
pdat = pl.pdat ;
pacc = pl.pacc ;
} ;
vojnikN : DeclensionType = izvorN ;
bubregN : DeclensionType = izvorN ;
trbuhN : DeclensionType = izvorN ;
cvorakN : DeclensionType = nokatN ;
panjN : DeclensionType = \panj ->
numbersNounForms (izvorN panj) (izvorN (palatalize (panj + "e") + "v")) ;
suzanjN : DeclensionType = \suzanj ->
let
suznj = Predef.tk 3 suzanj + Predef.dp 2 suzanj
in
numbersNounForms
(izvorN suzanj)
(izvorN suznj ** {
pgen = "sužanja" ;
pdat = "sužnjima"
}) ;
pristN : DeclensionType = panjN ;
stricN : DeclensionType = \stric ->
panjN stric ** {
svoc = palatalize (stric + "e")
} ;
klinacN : DeclensionType = \klinac ->
let
klinc = Predef.tk 2 klinac + last klinac
in nokatN klinac ** {
svoc = palatalize (klinc + "e") ;
pdat = klinc + "ima" ;
} ;
posjetilacN : DeclensionType = \posjetilac ->
let
posjetioc = Predef.tk 3 posjetilac + "oc"
in izvorN posjetioc ** {
snom = posjetilac ;
svoc = palatalize (posjetioc + "e") ;
sins = palatalize (posjetioc + "e") + "m" ;
pgen = posjetilac + "a" ;
pdat = palatalize (posjetioc + "i") + "ma" ;
} ;
pepeoN : DeclensionType = \pepeo ->
let
pepel = init pepeo + "l"
in izvorN pepel ** {snom = pepeo} ;
ugaoN : DeclensionType = \ugao ->
let
ugal = init ugao + "l" ;
ugl = Predef.tk 2 ugal + last ugal
in numbersNounForms
(nokatN ugal ** {snom = ugao})
(izvorN (ugl + "ov")) ;
bifeN : DeclensionType = \bife ->
izvorN bife ** {svoc = bife + "u"} ;
ziriN : DeclensionType = \ziri ->
bifeN (ziri + "j") ** {
snom = ziri ;
pdat = ziri + "jima" ;
} ;
taksiN : DeclensionType = ziriN ;
---- Danilo, Hrvoje, raščupànko skipped
koljenoN : DeclensionType = \koljeno ->
let
koljen = init koljeno
in izvorN koljen ** {
snom, sacc, svoc = koljeno ;
pnom, pacc, pvoc = koljen + "a" ;
} ;
jedroN : DeclensionType = \jedro ->
let
jed = Predef.tk 2 jedro ;
r = last (init jedro) ;
in koljenoN jedro ** {
pgen = jed + "a" + r + "a" ;
} ;
---- drvo - drveta skipped, can also decline as koljeno
---- oči, čudo skipped
poljeN : DeclensionType = \polje ->
koljenoN polje ** {
pdat = init polje + "ima" ;
} ;
---- sunce, uže, zvonce, rame, podne, doba
---- no tables given in the sources for feminine nouns, so guessing from ending tables
zenaN : DeclensionType = \zena ->
let
zen = init zena
in {
snom = zena ;
sgen = zen + "e" ;
sdat = zen + "i" ;
sacc = zen + "u" ;
svoc = zen + "o" ; ---- o/a in Wiki ; o in https://sh.wiktionary.org/wiki/%C5%BEena
sins = zen + "om" ;
pnom, pacc, pvoc = zen + "e" ;
pdat = zen + "ama" ;
pgen = zen + "a" ;
} ;
---------------------------
-- Adjectives
-- to be used for AP: 56 forms for each degree
Adjective : Type = {s : Gender => Number => Case => Str} ;
-- to be used for A, in three degrees: 12 forms in each
---- TODO other degrees than positive
AdjForms : Type = {
msnom, fsnom, nsnom : Str ;
msgen, fsgen : Str ; -- nsgen = msgen
msdat : Str ; -- msloc,nsdat,nsloc = msdat
fsdat : Str ; -- fsloc = fsdat
fsacc : Str ; --
msins : Str ; -- nsins, pdat, ploc, pins = msins
fsins : Str ; -- no o/e variation like in msdat
mpnom : Str ; -- mpvoc = mpnom
mpgen : Str ; --
} ;
invarAdjForms : Str -> AdjForms = \s -> {
msnom, fsnom, nsnom, msgen, fsgen, msdat,
fsdat, fsacc, msins, fsins, mpnom, mpgen = s ;
} ;
-- used in PositA but will also work in Compar and Superl by calling their record fields
adjFormsAdjective : AdjForms -> Adjective = \afs -> {
s = \\g,n,c => case <n,c,g> of {
<Sg, Nom|Voc, Masc _>
| <Sg, Acc, Masc Inanim> => afs.msnom ;
<Sg, Nom|Voc, Fem>
| <Pl, Nom|Acc|Voc, Neutr> => afs.fsnom ;
<Sg, Nom|Acc|Voc, Neutr> => afs.nsnom ;
<Sg, Gen, Masc _ | Neutr>
| <Sg, Acc, Masc Anim> => afs.msgen ;
<Sg, Gen, Fem>
| <Pl, Nom|Acc|Voc, Fem>
| <Pl, Acc, Masc _> => afs.fsgen ;
<Sg, Dat|Loc, Masc _|Neutr> => afs.msdat ;
<Sg, Dat|Loc, Fem> => afs.fsdat ;
<Sg, Acc, Fem> => afs.fsacc ;
<Sg, Ins, Masc _|Neutr>
| <Pl,Dat|Loc|Ins, _> => afs.msins ;
<Sg, Ins, Fem> => afs.fsins ;
<Pl, Nom|Voc, Masc _> => afs.mpnom ;
<Pl, Gen,_> => afs.mpgen
}
} ;
velikA : Str -> AdjForms = \velik ->
let
velk : Str = case velik of {
vel + "stan" => vel + "sn" ;
vel + "ao" => vel + "l" ;
vel + "ak" => voicing vel + "k" ;
vel + "a" + k@? => vel + k ;
vel + "i" => vel ;
_ => velik
} ;
oe : Str = ifSoft velik "e" "o"
in {
msnom = velik ;
fsnom = velk + "a" ;
nsnom = velk + oe ;
msgen = velk + oe + "g" ;
fsgen = velk + "e" ;
msdat = velk + oe + "m" ;
fsdat = velk + "oj" ;
fsacc = velk + "u" ;
msins = velk + "im" ;
fsins = velk + "om" ;
mpnom = velk + "i" ;
mpgen = velk + "ih" ;
} ;
regComparAForms : AdjForms -> AdjForms
= \aposit -> case init aposit.fsnom of {
grub@(_ + "b"|"p"|"v"|"h") => velikA (grub + "lji") ;
star => velikA (star + "iji")
} ;
superlAForms : AdjForms -> AdjForms
= \acompar -> velikA ("naj" + acompar.msnom) ;
od_Str = "od" ;
---------------------
-- Verbs
-- Wiki
VerbForms : Type = VForm => Str ;
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
verbAgr : VerbForms -> Agr -> CTense -> Str ---- TODO tenses
= \vf,a,b -> case <a,b> of {
<Ag _ n p, CTPres> => vf ! VPres n p ;
<Ag g n _, CTPast> => vf ! VPastPart g n
} ;
smartVerbForms : Str -> VerbForms = \s -> case s of {
cit + "ati" => aeiVerbForms s (cit + "am") (cit + "ao") ;
vid + "jeti" => aeiVerbForms s (vid + "im") (vid + "io") ;
radi + "ti" => aeiVerbForms s (init radi + "em") (radi + "o") ;
radi + ? => aeiVerbForms s (init radi + "em") (radi + "o") ; ----
_ => Predef.error ("expect infinitive form \"-ti\", found" ++ s)
} ;
-- an traditional paradigm type, with a slight abstraction
---- TODO other traditional paradigms
aeiVerbForms : Str -> Str -> Str -> VerbForms = \citati, citam, citao ->
let
cita = init citam ;
u = case last cita of {
"a" => "aju" ;
"e" => "u" ;
"i" => "e" ;
_ => "e" ---- should not happen
} ;
cital = init citao + "l" ;
in table {
VInf => citati ;
VPres Sg P1 => cita + "m" ;
VPres Sg P2 => cita + "š" ;
VPres Sg P3 => cita ;
VPres Pl P1 => cita + "mo" ;
VPres Pl P2 => cita + "te" ;
VPres pl P3 => init cita + u ;
VPastPart (Masc _) Sg => citao ;
VPastPart Fem Sg => cital + "a" ;
VPastPart Neutr Sg => cital + "o" ;
VPastPart (Masc _) Pl => cital + "i" ;
VPastPart Fem Pl => cital + "e" ;
VPastPart Neutr Pl => cital + "a"
} ;
-- copula
jesam_Copula : {short, long, negative : Number => Person => Str} =
let
sam : Number => Person => Str = table {
Sg => table {
P1 => "sam" ;
P2 => "si" ;
P3 => "je"
} ;
Pl => table {
P1 => "smo" ;
P2 => "ste" ;
P3 => "su"
}
}
in {
short = sam ;
long = \\n,p => case <n,p> of {
<Sg,P3> => "jeste" ; --- wiki: jest(e)
_ => sam ! n ! p
} ;
negative = \\n,p => "ni" + sam ! n ! p
} ;
-- Wiki: some grammars (chiefly Serbian ones) treat jesam as a defective verb
-- having only present tense. Others treat these forms as two realizations
-- of the same irregular verb biti, jesam being imperfective and budem perfective.
copula_VerbForms : VerbForms = table {
VPres n p => jesam_Copula.short ! n ! p ;
v => biti_VerbForms ! v
} ;
biti_VerbForms : VerbForms = aeiVerbForms "biti" "budem" "bio" ;
imati_VerbForms : VerbForms = aeiVerbForms "imati" "imam" "imao" ;
---------------------------
-- Pronouns
PronForms : Type = {
nom,
gen, cgen, -- bare, clitic (also as Acc)
dat, cdat, -- also as Loc
ins : Str ;
a : Agr
} ;
personalPron : Agr -> PronForms = \a ->
{a = a ; cnom = []} **
case a of {
Ag _ Sg P1 => {
nom = "ja" ;
gen = "mene" ;
cgen = "ma" ;
dat = "meni" ;
cdat = "mi" ;
ins = "mnom"
} ;
Ag _ Sg P2 => {
nom = "ti" ;
gen = "tebe" ;
cgen = "te" ;
dat = "tebi" ;
cdat = "ti" ;
ins = "tobom"
} ;
Ag Fem Sg P3 => {
nom = "ona" ;
gen = "nje" ;
cgen = "je" ;
dat = "njoj" ;
cdat = "joj" ;
ins = "njom"
} ;
Ag g Sg P3 => {
nom = case g of {
Masc _ => "on" ;
_ => "ono"
} ;
gen = "njega" ;
cgen = "ga" ;
dat = "njemu" ;
cdat = "mu" ;
ins = "njim"
} ;
Ag _ Pl P1 => {
nom = "mi" ;
gen, cgen = "nas" ;
dat, ins = "nama" ;
cdat = "nam"
} ;
Ag _ Pl P2 => {
nom = "vi" ;
gen, cgen = "vas" ;
dat, ins = "vama" ;
cdat = "vam"
} ;
Ag g Pl P3 => {
nom = case g of {
Masc _ => "oni" ;
Fem => "one" ;
Neutr => "ona"
} ;
gen = "njih" ;
cgen = "ih" ;
dat, ins = "njima" ;
cdat = "im"
}
} ;
possessivePron : Agr -> AdjForms = \a -> case a of {
Ag _ Sg P1 => velikA "moj" ;
Ag _ Sg P2 => velikA "tvoj" ;
Ag (Masc _) Sg P3 => velikA "njegov" ;
Ag (Fem|Neutr) Sg P3 => velikA "njezin" ; -- BCMS: Hrv: otherwise njen
Ag _ Pl P1 => velikA "naš" ;
Ag _ Pl P2 => velikA "vaš" ;
Ag _ Pl P3 => velikA "njihov"
} ;
{-
reflPossessivePron : DemPronForms = otcovA "svoj" ** {
msnom = "svoj" ; msgen = "svojho" ; msdat = "svojmu" ;
msins = "svojím" ;
ampnom = "svoji" ;
nsnom, fpnom = "svoje" ;
pgen = "svojich" ;
pdat = "svojim" ;
pins = "svojimi" ;
} ;
-}
mkPron : Agr -> PronForms ** {poss : AdjForms} = \a ->
personalPron a ** {poss = possessivePron a} ;
param NumSize = NS_1 | NS_2_4 | NS_5_20 | NS_20_ ;
oper
Determiner : Type = {
s : Gender => Case => Str ;
size : NumSize
} ;
{-
-- interrogatives TODO
ktoForms : Case => Str = table {
Nom => "kto" ;
Gen | Acc => "koho" ;
Dat => "komu" ;
Loc => "kom" ;
Ins => "kým"
} ;
coForms : Case => Str = table {
Nom|Acc => "čo" ;
Gen => "čoho" ;
Dat => "čomu" ;
Loc => "čom" ;
Ins => "čím"
} ;
-}
--------------------------------
-- combining nouns with numerals
oper
numSizeForm : (Number => Case => Str) -> NumSize -> Case -> Str
= \cns,n,c -> case n of {
NS_1 => cns ! Sg ! c ;
NS_2_4 => cns ! Pl ! c ;
_ => case c of {
Nom | Acc => cns ! Pl ! Gen ;
_ => cns ! Pl ! c
}
} ;
numSizeAgr : Gender -> NumSize -> Person -> Agr
= \g,ns,p -> case ns of {
NS_1 => Ag g Sg p ;
NS_2_4 => Ag g Pl p ;
_ => Ag Neutr Sg p ---- TODO verify
} ;
numSizeNumber : NumSize -> Number = \ns -> case ns of {
NS_1 => Sg ;
_ => Pl ---- TO CHECK
} ;
}

View File

@@ -0,0 +1,32 @@
concrete SentenceHrv of Sentence = CatHrv **
open Prelude, ResHrv in {
lin
PredVP np vp = {
subj = case np.hasClit of {
True => np.clit ! Nom ; -- pro-drop
False => np.s ! Nom
} ;
verb = vp.verb ;
clit = vp.clit ! np.a ;
compl = vp.compl ! np.a ;
a = np.a ;
} ;
UseCl temp pol cl = {
s = temp.s ++ cl.subj ++ cl.clit ++ pol.s ++ verbAgr cl.verb cl.a CTPres ++ cl.compl ;
} ; ---- TODO tense, negation
--- TODO is inversion the standard? ; add indirect questions
UseQCl temp pol cl = {
s = temp.s ++ cl.clit ++ pol.s ++ verbAgr cl.verb cl.a CTPres ++ cl.subj ++ cl.compl ;
} ; ---- TODO tenses
UseRCl temp pol rcl = {
s = \\a => temp.s ++
rcl.subj ! a ++ rcl.clit ! a ++
pol.s ++ verbAgr rcl.verb a CTPres ++
rcl.compl ! a ;
} ; ---- TODO tenses
}

View File

@@ -0,0 +1,34 @@
concrete StructuralHrv of Structural = CatHrv **
open ParadigmsHrv, ResHrv, Prelude in {
lin
and_Conj = mkConj "i" ;
---- by8agent_Prep = mkPrep "" Ins ;
---- few_Det = invarNumeral "málo" ; -- see notes
for_Prep = mkPrep "pre" accusative ;
from_Prep = mkPrep "iz" Gen ;
have_V2 = mkV2 (mkV imati_VerbForms) ;
in_Prep = mkPrep "u" Loc ;
---- many_Det = regNumeral "mnoho" "mnohých" "mnohým" "mnohými" ; ---- alternative: invarNumeral "veľa" ;
or_Conj = mkConj "alebo" ;
---- somePl_Det = invarDeterminer "niekoľko" Num5 ;
---- somePl_Det = {s = \\g,c => (demPronFormsAdjective (mkDemPronForms "niekoľko") "").s ! g ! Pl ! c ; size = Num5} ;
---- something_NP = {s,clit,prep = \\c => "nie" + coForms ! c ; a = Ag Neutr Sg P3 ; hasClit = False} ; -- CEG 5.6.3
possess_Prep = mkPrep "" Gen ;
that_Quant = adjFormsAdjective (velikA "oni" ** {msnom = "onaj"}) ; ---- TODO: taj, ta, to
this_Quant = adjFormsAdjective (velikA "ovi" ** {msnom = "ovaj"}) ;
to_Prep = mkPrep "u" Acc ;
with_Prep = mkPrep (pre {"s"|"z"|"š"|"ž"|"mnom" => "sa" ; _ => "s"}) Ins ;
i_Pron = mkPron (Ag (Masc Anim) Sg P1) ; --- to add Fem pronouns in Extend
youSg_Pron = mkPron (Ag (Masc Anim) Sg P2) ;
he_Pron = mkPron (Ag (Masc Anim) Sg P3) ;
she_Pron = mkPron (Ag Fem Sg P3) ;
it_Pron = mkPron (Ag Neutr Sg P3) ;
we_Pron = mkPron (Ag (Masc Anim) Pl P1) ;
youPl_Pron = mkPron (Ag (Masc Anim) Pl P2) ;
they_Pron = mkPron (Ag (Masc Anim) Pl P3) ;
somewhere_Adv = mkAdv "negdje" ;
}

15
src/croatian/SymbolHrv.gf Normal file
View File

@@ -0,0 +1,15 @@
--# -path=.:../abstract:../common:../prelude
concrete SymbolHrv of Symbol = CatHrv ** open Prelude, ResHrv in {
lincat
Symb = {s : Str} ;
lin
MkSymb s = s ;
SymbPN s = lin PN {s = \\_ => s.s ; g = Neutr} ;
IntPN s = lin PN {s = \\_ => s.s ; g = Neutr} ;
SymbNum s = lin Card {s = \\_,_ => s.s ; size = NS_20_} ; --- size
}

View File

@@ -0,0 +1,660 @@
resource TableExtResHrv = open Prelude in {
-- AR September 2022
-- sources:
-- Wiki = https://en.wikipedia.org/wiki/Serbo-Croatian_grammar
-- BCMS = Bosnian, Croatian, Montenegrin and Serbian:
-- An Essential Grammar (Routledge Essential Grammars) 1st Edition, by Željko Vrabec
-- parameters
param
Number = Sg | Pl ;
Animacy = Anim | Inanim ;
Gender = Masc Animacy | Fem | Neutr ;
Case = Nom | Gen | Dat | Acc | Voc | Loc | Ins ; -- traditional order
Person = P1 | P2 | P3 ;
VForm =
VInf
| VPres Number Person
| VPastPart Gender Number
;
---- TODO aorist, imperfect
Agr = Ag Gender Number Person ;
CTense = CTPres | CTPast ; ----- TODO complete the tense system to match BCS verb morphology
-- phonology
oper
softConsonant : pattern Str = #("c"|"č"|"ć"|"đ"|"j"|"lj"|"nj"|"š"|"ž"|"št") ;
--- wiki "and sometimes r"; BCMS slightly different
ifSoft : Str -> (soft,hard : Str) -> Str = \word, ssoft, shard ->
case word of {
_ + #softConsonant => ssoft ;
_ => shard
} ;
animate = Masc Anim ;
inanimate = Masc Inanim ;
feminine = Fem ;
neuter = Neutr ;
palatalize : Str -> Str = \s -> case s of {
x + "ki" => x + "ci" ;
x + "ke" => x + "če" ;
x + "gi" => x + "zi" ;
x + "ge" => x + "že" ;
x + "hi" => x + "si" ;
x + "he" => x + "še" ;
x + "ce" => x + "če" ;
_ => s
} ;
voicing : Str -> Str = \s -> case s of {
x + "b" => x + "p" ;
x + "d" => x + "t" ;
x + "đ" => x + "ć" ;
x + "z" => x + "s" ;
x + "dž" => x + "č" ;
x + "ž" => x + "š" ;
_ => s
} ;
---------------
-- Nouns
---------------
-- novel idea (for RGL): lexical items stored as records rather than tables
-- advantages:
-- - easier to make exceptions to paradigms (by ** {})
-- - easier to keep the number of forms minimal
-- - easier to see what is happening than with lots of anonymous arguments to mkN, mkA, mkV
-- Starting from GF 2022-10-04: this can now be done with table extension, which gives
-- type safety and more powerful pattern matching
param
NForm = snom | sgen | sdat | sacc | svoc | sins | pnom | pgen | pdat | pacc ;
oper
NounForms : Type = NForm => Str ;
-- But traditional tables make agreement easier to handle in syntax
-- so this is the lincat of CN
Noun : Type = {s : Number => Case => Str ; g : Gender} ;
-- for lexical nouns N, we also need the gender but keep the minimal set of forms
LexNoun : Type = {s : NounForms ; g : Gender} ;
-- this is used in UseN
nounFormsNoun : NounForms -> Gender -> Noun
= \forms, g -> {
s = table {
Sg => table {
Nom => forms ! snom ;
Gen => forms ! sgen ;
Dat => forms ! sdat ;
Acc => case g of {
Masc Anim | Fem => forms ! sacc ;
_ => forms ! snom
} ;
Voc => forms ! svoc ;
Loc => forms ! sdat ;
Ins => forms ! sins
} ;
Pl => table {
Nom => forms ! pnom ;
Gen => forms ! pgen ;
Dat => forms ! pdat ;
Acc => forms ! pacc ;
Voc => forms ! pnom ;
Loc => forms ! pdat ;
Ins => forms ! pdat
}
} ;
g = g
} ;
-- a declension type produces these forms from a string
DeclensionType : Type = Str -> NounForms ;
-- smart paradigms
smartLexNoun : Str -> LexNoun = \s -> case s of {
_ + "a" => {s = zenaN s ; g = feminine} ;
_ + "i" => {s = ziriN s ; g = inanimate} ; ---- TODO feminine i
_ + "e" => {s = poljeN s ; g = neuter} ; ---- TODO sunce, uze, zvonce, rame
_ + "ao" => {s = ugaoN s ; g = inanimate} ;
_ + "eo" => {s = pepeoN s ; g = inanimate} ;
_ + "o" => {s = koljenoN s ; g = neuter} ; ---- TODO jedro
_ + "lac" => {s = posjetilacN s ; g = inanimate} ;
_ + "anj" => {s = suzanjN s ; g = inanimate} ;
_ + "nj" => {s = panjN s ; g = inanimate} ;
_ + "št" => {s = pristN s ; g = inanimate} ;
_ + "ac" => {s = klinacN s ; g = neuter} ;
_ + "c" => {s = stricN s ; g = inanimate} ;
_ + "in" => {s = gradaninN s ; g = neuter} ;
_ + "ak" => {s = cvorakN s ; g = inanimate} ;
_ + "a" + ? => {s = nokatN s ; g = inanimate} ;
_ + "g" => {s = bubregN s ; g = inanimate} ;
_ + "h" => {s = trbuhN s ; g = inanimate} ;
_ + "k" => {s = vojnikN s ; g = inanimate} ;
_ => {s = izvorN s ; g = inanimate}
} ;
mkgLexNoun : Str -> Gender -> LexNoun = \s,g -> case <s,g> of {
<_ + "i", Masc _> => {s = ziriN s ; g = g} ;
<_ + "e", Masc _> => {s = bifeN s ; g = g} ;
<_ + "o", Masc _> => {s = bifeN s ; g = g} ;
<_, g> => smartLexNoun s ** {g = g}
} ;
-- the traditional declensions, following Wiki
-- they are also exported in ParadigmsHrv with names izvorN etc
izvorN : DeclensionType = \izvor ->
table {
snom => izvor ;
sgen => izvor + "a" ;
sdat => izvor + "u" ;
sacc => izvor + "a" ;
svoc => ifSoft izvor
(izvor + "u")
(palatalize (izvor + "e")) ;
sins => ifSoft izvor
(izvor + "em")
(izvor + "om") ;
pnom => palatalize (izvor + "i") ;
pgen => izvor + "a" ;
pdat => ifSoft izvor
(palatalize (izvor + "e") + "vima")
(palatalize (izvor + "i") + "ma") ;
pacc => izvor + "e"
} ;
nokatN : DeclensionType = \nokat ->
let
nokt = Predef.tk 2 nokat + last nokat
in izvorN nokt ** {
snom => nokat ;
sacc => nokt + "a" ;
pgen => nokat + "a"
} ;
gradaninN : DeclensionType = \gradanin ->
let
gradan = Predef.tk 2 gradanin ;
gradanN = izvorN gradan
in numbersNounForms (izvorN gradanin) gradanN ;
numbersNounForms : (sg, pl : NounForms) -> NounForms =
\sg, pl -> sg ** {
pnom => pl ! pnom ;
pgen => pl ! pgen ;
pdat => pl ! pdat ;
pacc => pl ! pacc
} ;
vojnikN : DeclensionType = izvorN ;
bubregN : DeclensionType = izvorN ;
trbuhN : DeclensionType = izvorN ;
cvorakN : DeclensionType = nokatN ;
panjN : DeclensionType = \panj ->
numbersNounForms (izvorN panj) (izvorN (palatalize (panj + "e") + "v")) ;
suzanjN : DeclensionType = \suzanj ->
let
suznj = Predef.tk 3 suzanj + Predef.dp 2 suzanj
in
numbersNounForms
(izvorN suzanj)
(izvorN suznj ** {
pgen => "sužanja" ;
pdat => "sužnjima"
}) ;
pristN : DeclensionType = panjN ;
stricN : DeclensionType = \stric ->
panjN stric ** {
svoc => palatalize (stric + "e")
} ;
klinacN : DeclensionType = \klinac ->
let
klinc = Predef.tk 2 klinac + last klinac
in nokatN klinac ** {
svoc => palatalize (klinc + "e") ;
pdat => klinc + "ima"
} ;
posjetilacN : DeclensionType = \posjetilac ->
let
posjetioc = Predef.tk 3 posjetilac + "oc"
in izvorN posjetioc ** {
snom => posjetilac ;
svoc => palatalize (posjetioc + "e") ;
sins => palatalize (posjetioc + "e") + "m" ;
pgen => posjetilac + "a" ;
pdat => palatalize (posjetioc + "i") + "ma"
} ;
pepeoN : DeclensionType = \pepeo ->
let
pepel = init pepeo + "l"
in izvorN pepel ** {snom => pepeo} ;
ugaoN : DeclensionType = \ugao ->
let
ugal = init ugao + "l" ;
ugl = Predef.tk 2 ugal + last ugal
in numbersNounForms
(nokatN ugal ** {snom => ugao})
(izvorN (ugl + "ov")) ;
bifeN : DeclensionType = \bife ->
izvorN bife ** {svoc => bife + "u"} ;
ziriN : DeclensionType = \ziri ->
bifeN (ziri + "j") ** {
snom => ziri ;
pdat => ziri + "jima"
} ;
taksiN : DeclensionType = ziriN ;
---- Danilo, Hrvoje, raščupànko skipped
koljenoN : DeclensionType = \koljeno ->
let
koljen = init koljeno
in izvorN koljen ** {
snom | sacc | svoc => koljeno ;
pnom | pacc => koljen + "a"
} ;
jedroN : DeclensionType = \jedro ->
let
jed = Predef.tk 2 jedro ;
r = last (init jedro) ;
in koljenoN jedro ** {
pgen => jed + "a" + r + "a"
} ;
---- drvo - drveta skipped, can also decline as koljeno
---- oči, čudo skipped
poljeN : DeclensionType = \polje ->
koljenoN polje ** {
pdat => init polje + "ima"
} ;
---- sunce, uže, zvonce, rame, podne, doba
---- no tables given in the sources for feminine nouns, so guessing from ending tables
zenaN : DeclensionType = \zena ->
let
zen = init zena
in table {
snom => zena ;
sgen => zen + "e" ;
sdat => zen + "i" ;
sacc => zen + "u" ;
svoc => zen + "o" ; ---- o/a in Wiki ; o in https://sh.wiktionary.org/wiki/%C5%BEena
sins => zen + "om" ;
pnom | pacc => zen + "e" ;
pdat => zen + "ama" ;
pgen => zen + "a"
} ;
---------------------------
-- Adjectives
-- to be used for AP: 56 forms for each degree
Adjective : Type = {s : Gender => Number => Case => Str} ;
-- to be used for A, in three degrees: 12 forms in each
---- TODO other degrees than positive
param AForm =
msnom | fsnom | nsnom |
msgen | fsgen | -- nsgen = msgen
msdat | -- msloc,nsdat,nsloc = msdat
fsdat | -- fsloc = fsdat
fsacc | --
msins | -- nsins, pdat, ploc, pins = msins
fsins | -- no o/e variation like in msdat
mpnom | -- mpvoc = mpnom
mpgen -- fpgen, npgen = mpgen
;
oper
AdjForms : Type = AForm => Str ;
invarAdjForms : Str -> AdjForms = \s -> \\a => s ;
-- used in PositA but will also work in Compar and Superl by calling their record fields
adjFormsAdjective : AdjForms -> Adjective = \afs -> {
s = \\g,n,c => case <n,c,g> of {
<Sg, Nom|Voc, Masc _>
| <Sg, Acc, Masc Inanim> => afs ! msnom ;
<Sg, Nom|Voc, Fem>
| <Pl, Nom|Acc|Voc, Neutr> => afs ! fsnom ;
<Sg, Nom|Acc|Voc, Neutr> => afs ! nsnom ;
<Sg, Gen, Masc _ | Neutr>
| <Sg, Acc, Masc Anim> => afs ! msgen ;
<Sg, Gen, Fem>
| <Pl, Nom|Acc|Voc, Fem>
| <Pl, Acc, Masc _> => afs ! fsgen ;
<Sg, Dat|Loc, Masc _|Neutr> => afs ! msdat ;
<Sg, Dat|Loc, Fem> => afs ! fsdat ;
<Sg, Acc, Fem> => afs ! fsacc ;
<Sg, Ins, Masc _|Neutr>
| <Pl,Dat|Loc|Ins, _> => afs ! msins ;
<Sg, Ins, Fem> => afs ! fsins ;
<Pl, Nom|Voc, Masc _> => afs ! mpnom ;
<Pl, Gen,_> => afs ! mpgen
}
} ;
velikA : Str -> AdjForms = \velik ->
let
velk : Str = case velik of {
vel + "stan" => vel + "sn" ;
vel + "ao" => vel + "l" ;
vel + "ak" => voicing vel + "k" ;
vel + "a" + k@? => vel + k ;
vel + "i" => vel ;
_ => velik
} ;
oe : Str = ifSoft velik "e" "o"
in table {
msnom => velik ;
fsnom => velk + "a" ;
nsnom => velk + oe ;
msgen => velk + oe + "g" ;
fsgen => velk + "e" ;
msdat => velk + oe + "m" ;
fsdat => velk + "oj" ;
fsacc => velk + "u" ;
msins => velk + "im" ;
fsins => velk + "om" ;
mpnom => velk + "i" ;
mpgen => velk + "ih"
} ;
regComparAForms : AdjForms -> AdjForms
= \aposit -> case init (aposit ! fsnom) of {
grub@(_ + "b"|"p"|"v"|"h") => velikA (grub + "lji") ;
star => velikA (star + "iji")
} ;
superlAForms : AdjForms -> AdjForms
= \acompar -> velikA ("naj" + acompar ! msnom) ;
od_Str = "od" ;
---------------------
-- Verbs
-- Wiki
VerbForms : Type = VForm => Str ;
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
verbAgr : VerbForms -> Agr -> CTense -> Str ---- TODO tenses
= \vf,a,b -> case <a,b> of {
<Ag _ n p, CTPres> => vf ! VPres n p ;
<Ag g n _, CTPast> => vf ! VPastPart g n
} ;
smartVerbForms : Str -> VerbForms = \s -> case s of {
cit + "ati" => aeiVerbForms s (cit + "am") (cit + "ao") ;
vid + "jeti" => aeiVerbForms s (vid + "im") (vid + "io") ;
radi + "ti" => aeiVerbForms s (init radi + "em") (radi + "o") ;
_ => Predef.error ("expect infinitive form \"-ti\", found" ++ s)
} ;
-- an traditional paradigm type, with a slight abstraction
---- TODO other traditional paradigms
aeiVerbForms : Str -> Str -> Str -> VerbForms = \citati, citam, citao ->
let
cita = init citam ;
u = case last cita of {
"a" => "aju" ;
"e" => "u" ;
"i" => "e"
} ;
cital = init citao + "l" ;
in table {
VInf => citati ;
VPres Sg P1 => cita + "m" ;
VPres Sg P2 => cita + "š" ;
VPres Sg P3 => cita ;
VPres Pl P1 => cita + "mo" ;
VPres Pl P2 => cita + "te" ;
VPres pl P3 => init cita + u ;
VPastPart (Masc _) Sg => citao ;
VPastPart Fem Sg => cital + "a" ;
VPastPart Neutr Sg => cital + "o" ;
VPastPart (Masc _) Pl => cital + "i" ;
VPastPart Fem Pl => cital + "e" ;
VPastPart Neutr Pl => cital + "a"
} ;
-- copula
jesam_Copula : {short, long, negative : Number => Person => Str} =
let
sam : Number => Person => Str = table {
Sg => table {
P1 => "sam" ;
P2 => "si" ;
P3 => "je"
} ;
Pl => table {
P1 => "smo" ;
P2 => "ste" ;
P3 => "su"
}
}
in {
short = sam ;
long = \\n,p => case <n,p> of {
<Sg,P3> => "jeste" ; --- wiki: jest(e)
_ => sam ! n ! p
} ;
negative = \\n,p => "ni" + sam ! n ! p
} ;
-- Wiki: some grammars (chiefly Serbian ones) treat jesam as a defective verb
-- having only present tense. Others treat these forms as two realizations
-- of the same irregular verb biti, jesam being imperfective and budem perfective.
copula_VerbForms : VerbForms = table {
VPres n p => jesam_Copula.short ! n ! p ;
v => biti_VerbForms ! v
} ;
biti_VerbForms : VerbForms = aeiVerbForms "biti" "budem" "bio" ;
imati_VerbForms : VerbForms = aeiVerbForms "imati" "imam" "imao" ;
---------------------------
-- Pronouns
PronForms : Type = {
nom,
gen, cgen, -- bare, clitic (also as Acc)
dat, cdat, -- also as Loc
ins : Str ;
a : Agr
} ;
personalPron : Agr -> PronForms = \a ->
{a = a ; cnom = []} **
case a of {
Ag _ Sg P1 => {
nom = "ja" ;
gen = "mene" ;
cgen = "ma" ;
dat = "meni" ;
cdat = "mi" ;
ins = "mnom"
} ;
Ag _ Sg P2 => {
nom = "ti" ;
gen = "tebe" ;
cgen = "te" ;
dat = "tebi" ;
cdat = "ti" ;
ins = "tobom"
} ;
Ag Fem Sg P3 => {
nom = "ona" ;
gen = "nje" ;
cgen = "je" ;
dat = "njoj" ;
cdat = "joj" ;
ins = "njom"
} ;
Ag g Sg P3 => {
nom = case g of {
Masc _ => "on" ;
_ => "ono"
} ;
gen = "njega" ;
cgen = "ga" ;
dat = "njemu" ;
cdat = "mu" ;
ins = "njim"
} ;
Ag _ Pl P1 => {
nom = "mi" ;
gen, cgen = "nas" ;
dat, ins = "nama" ;
cdat = "nam"
} ;
Ag _ Pl P2 => {
nom = "vi" ;
gen, cgen = "vas" ;
dat, ins = "vama" ;
cdat = "vam"
} ;
Ag g Pl P3 => {
nom = case g of {
Masc _ => "oni" ;
Fem => "one" ;
Neutr => "ona"
} ;
gen = "njih" ;
cgen = "ih" ;
dat, ins = "njima" ;
cdat = "im"
}
} ;
possessivePron : Agr -> AdjForms = \a -> case a of {
Ag _ Sg P1 => velikA "moj" ;
Ag _ Sg P2 => velikA "tvoj" ;
Ag (Masc _) Sg P3 => velikA "njegov" ;
Ag (Fem|Neutr) Sg P3 => velikA "njezin" ; -- BCMS: Hrv: otherwise njen
Ag _ Pl P1 => velikA "naš" ;
Ag _ Pl P2 => velikA "vaš" ;
Ag _ Pl P3 => velikA "njihov"
} ;
{-
reflPossessivePron : DemPronForms = otcovA "svoj" ** {
msnom = "svoj" ; msgen = "svojho" ; msdat = "svojmu" ;
msins = "svojím" ;
ampnom = "svoji" ;
nsnom, fpnom = "svoje" ;
pgen = "svojich" ;
pdat = "svojim" ;
pins = "svojimi" ;
} ;
-}
mkPron : Agr -> PronForms ** {poss : AdjForms} = \a ->
personalPron a ** {poss = possessivePron a} ;
param NumSize = NS_1 | NS_2_4 | NS_5_20 | NS_20_ ;
oper
Determiner : Type = {
s : Gender => Case => Str ;
size : NumSize
} ;
{-
-- interrogatives TODO
ktoForms : Case => Str = table {
Nom => "kto" ;
Gen | Acc => "koho" ;
Dat => "komu" ;
Loc => "kom" ;
Ins => "kým"
} ;
coForms : Case => Str = table {
Nom|Acc => "čo" ;
Gen => "čoho" ;
Dat => "čomu" ;
Loc => "čom" ;
Ins => "čím"
} ;
-}
--------------------------------
-- combining nouns with numerals
oper
numSizeForm : (Number => Case => Str) -> NumSize -> Case -> Str
= \cns,n,c -> case n of {
NS_1 => cns ! Sg ! c ;
NS_2_4 => cns ! Pl ! c ;
_ => case c of {
Nom | Acc => cns ! Pl ! Gen ;
_ => cns ! Pl ! c
}
} ;
numSizeAgr : Gender -> NumSize -> Person -> Agr
= \g,ns,p -> case ns of {
NS_1 => Ag g Sg p ;
NS_2_4 => Ag g Pl p ;
_ => Ag Neutr Sg p ---- TODO verify
} ;
numSizeNumber : NumSize -> Number = \ns -> case ns of {
NS_1 => Sg ;
_ => Pl ---- TO CHECK
} ;
}

21
src/croatian/TenseHrv.gf Normal file
View File

@@ -0,0 +1,21 @@
concrete TenseHrv of Tense =
CatHrv **
open
ResHrv,
Prelude
in {
lin
PNeg = {
s = "ne" ++ Predef.BIND ;
p = False
} ;
PPos = {
s = [] ;
p = True
} ;
ASimul = {s = [] ; t = CTPres} ;
TPres = {s = [] ; t = CTPres} ;
TPast = {s = [] ; t = CTPast} ;
TTAnt t a = {s = t.s ++ a.s ; t = t.t} ; ----
}

8
src/croatian/TextHrv.gf Normal file
View File

@@ -0,0 +1,8 @@
concrete TextHrv of Text = CatHrv ** open ResHrv in {
lin
TEmpty = {s = []} ;
TFullStop x xs = {s = x.s ++ "." ++ xs.s} ;
TQuestMark x xs = {s = x.s ++ "?" ++ xs.s} ;
TExclMark x xs = {s = x.s ++ "!" ++ xs.s} ;
}

48
src/croatian/VerbHrv.gf Normal file
View File

@@ -0,0 +1,48 @@
concrete VerbHrv of Verb = CatHrv ** open ResHrv, Prelude in {
lin
UseV v = {
verb = v.s ;
clit,compl = \\_ => []
} ;
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
<True,False> => vps ** {
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c
} ;
_ => vps ** {
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c
}
} ;
SlashV2a v = {
verb = v.s ;
clit,compl = \\_ => [] ;
c = v.c
} ;
UseComp comp = {
verb = copula_VerbForms ;
clit = \\_ => [] ;
compl = comp.s
} ;
CompAP ap = {
s = \\a => case a of {
Ag g n p_ => ap.s ! g ! n ! Nom
}
} ;
CompNP np = {
s = \\a_ => np.s ! Nom ;
} ;
CompAdv adv = {
s = \\a_ => adv.s
} ;
AdvVP vp adv = vp ** {
compl = \\a => vp.compl ! a ++ adv.s
} ;
}

View File

@@ -0,0 +1,57 @@
AdverbEng.PrepNP
ConstructorsEng.ComplV2
ConstructorsEng.DetArtCard
ConstructorsEng.the_Det
NounEng.AdvCN
NounEng.DetCN
NounEng.IndefArt
NounEng.UseN
NounEng.UsePN
ParadigmsEng.regN
ParadigmsEng.regPN
SentenceEng.PredVP
StructuralEng.have_V2
StructuralEng.in_Prep
StructuralEng.possess_Prep
SymbolEng.IntPN
SymbolEng.SymbNum
SymbolicEng.mkSymb
VerbEng.CompAdv
VerbEng.CompNP
VerbEng.UseComp
AdjectiveEng.AdjOrd
AdjectiveEng.PositA
ConjunctionEng.BaseNP
ConjunctionEng.BaseS
ConjunctionEng.ConjNP
ConjunctionEng.ConjS
ConjunctionEng.ConsNP
ConjunctionEng.ListNP,
ExtendEng.CardCNCard
IdiomEng.ExistNP
IdiomEng.ExistNPAdv
NounEng.AdNum
NounEng.AdjCN
NounEng.DetNP
NounEng.DetQuant
NounEng.NumSg
NounEng.OrdSuperl
NounEng.PossPron
NounEng.RelCN
NounEng.UsePron
ParadigmsEng.mkAdN
ParadigmsEng.mkAdv
ParadigmsEng.mkOrd
ParadigmsEng.regA
PhraseEng.NoPConj
PhraseEng.NoVoc
PhraseEng.PhrUtt
PhraseEng.UttS
RelativeEng.RelVP
StructuralEng.and_Conj
StructuralEng.it_Pron
StructuralEng.somewhere_Adv;
StructuralEng.they_Pron
StructuralEng.with_Prep
VerbEng.CompAP

585
src/croatian/gold-test.txt Normal file
View File

@@ -0,0 +1,585 @@
s . Sg => Nom => izvor
s . Sg => Gen => izvora
s . Sg => Dat => izvoru
s . Sg => Acc => izvor
s . Sg => Voc => izvore
s . Sg => Loc => izvoru
s . Sg => Ins => izvorom
s . Pl => Nom => izvori
s . Pl => Gen => izvora
s . Pl => Dat => izvorima
s . Pl => Acc => izvore
s . Pl => Voc => izvori
s . Pl => Loc => izvorima
s . Pl => Ins => izvorima
g . Masc Inanim
s . Sg => Nom => nokat
s . Sg => Gen => nokta
s . Sg => Dat => noktu
s . Sg => Acc => nokat
s . Sg => Voc => nokte
s . Sg => Loc => noktu
s . Sg => Ins => noktom
s . Pl => Nom => nokti
s . Pl => Gen => nokata
s . Pl => Dat => noktima
s . Pl => Acc => nokte
s . Pl => Voc => nokti
s . Pl => Loc => noktima
s . Pl => Ins => noktima
g . Masc Inanim
s . Sg => Nom => građanin
s . Sg => Gen => građanina
s . Sg => Dat => građaninu
s . Sg => Acc => građanina
s . Sg => Voc => građanine
s . Sg => Loc => građaninu
s . Sg => Ins => građaninom
s . Pl => Nom => građani
s . Pl => Gen => građana
s . Pl => Dat => građanima
s . Pl => Acc => građane
s . Pl => Voc => građani
s . Pl => Loc => građanima
s . Pl => Ins => građanima
g . Masc Anim
s . Sg => Nom => vojnik
s . Sg => Gen => vojnika
s . Sg => Dat => vojniku
s . Sg => Acc => vojnika
s . Sg => Voc => vojniče
s . Sg => Loc => vojniku
s . Sg => Ins => vojnikom
s . Pl => Nom => vojnici
s . Pl => Gen => vojnika
s . Pl => Dat => vojnicima
s . Pl => Acc => vojnike
s . Pl => Voc => vojnici
s . Pl => Loc => vojnicima
s . Pl => Ins => vojnicima
g . Masc Anim
s . Sg => Nom => bubreg
s . Sg => Gen => bubrega
s . Sg => Dat => bubregu
s . Sg => Acc => bubrega
s . Sg => Voc => bubreže
s . Sg => Loc => bubregu
s . Sg => Ins => bubregom
s . Pl => Nom => bubrezi
s . Pl => Gen => bubrega
s . Pl => Dat => bubrezima
s . Pl => Acc => bubrege
s . Pl => Voc => bubrezi
s . Pl => Loc => bubrezima
s . Pl => Ins => bubrezima
g . Masc Anim
s . Sg => Nom => trbuh
s . Sg => Gen => trbuha
s . Sg => Dat => trbuhu
s . Sg => Acc => trbuha
s . Sg => Voc => trbuše
s . Sg => Loc => trbuhu
s . Sg => Ins => trbuhom
s . Pl => Nom => trbusi
s . Pl => Gen => trbuha
s . Pl => Dat => trbusima
s . Pl => Acc => trbuhe
s . Pl => Voc => trbusi
s . Pl => Loc => trbusima
s . Pl => Ins => trbusima
g . Masc Anim
s . Sg => Nom => čvorak
s . Sg => Gen => čvorka
s . Sg => Dat => čvorku
s . Sg => Acc => čvorka
s . Sg => Voc => čvorče
s . Sg => Loc => čvorku
s . Sg => Ins => čvorkom
s . Pl => Nom => čvorci
s . Pl => Gen => čvoraka
s . Pl => Dat => čvorcima
s . Pl => Acc => čvorke
s . Pl => Voc => čvorci
s . Pl => Loc => čvorcima
s . Pl => Ins => čvorcima
g . Masc Anim
s . Sg => Nom => panj
s . Sg => Gen => panja
s . Sg => Dat => panju
s . Sg => Acc => panj
s . Sg => Voc => panju
s . Sg => Loc => panju
s . Sg => Ins => panjem
s . Pl => Nom => panjevi
s . Pl => Gen => panjeva
s . Pl => Dat => panjevima
s . Pl => Acc => panjeve
s . Pl => Voc => panjevi
s . Pl => Loc => panjevima
s . Pl => Ins => panjevima
g . Masc Inanim
s . Sg => Nom => sužanj
s . Sg => Gen => sužanja
s . Sg => Dat => sužanju
s . Sg => Acc => sužanj
s . Sg => Voc => sužanju
s . Sg => Loc => sužanju
s . Sg => Ins => sužanjem
s . Pl => Nom => sužnji
s . Pl => Gen => sužanja
s . Pl => Dat => sužnjima
s . Pl => Acc => sužnje
s . Pl => Voc => sužnji
s . Pl => Loc => sužnjima
s . Pl => Ins => sužnjima
g . Masc Inanim
s . Sg => Nom => prišt
s . Sg => Gen => prišta
s . Sg => Dat => prištu
s . Sg => Acc => prišt
s . Sg => Voc => prištu
s . Sg => Loc => prištu
s . Sg => Ins => prištem
s . Pl => Nom => prištevi
s . Pl => Gen => prišteva
s . Pl => Dat => prištevima
s . Pl => Acc => prišteve
s . Pl => Voc => prištevi
s . Pl => Loc => prištevima
s . Pl => Ins => prištevima
g . Masc Inanim
s . Sg => Nom => stric
s . Sg => Gen => strica
s . Sg => Dat => stricu
s . Sg => Acc => strica
s . Sg => Voc => striče
s . Sg => Loc => stricu
s . Sg => Ins => stricem
s . Pl => Nom => stričevi
s . Pl => Gen => stričeva
s . Pl => Dat => stričevima
s . Pl => Acc => stričeve
s . Pl => Voc => stričevi
s . Pl => Loc => stričevima
s . Pl => Ins => stričevima
g . Masc Anim
s . Sg => Nom => klinac
s . Sg => Gen => klinca
s . Sg => Dat => klincu
s . Sg => Acc => klinac
s . Sg => Voc => klinče
s . Sg => Loc => klincu
s . Sg => Ins => klincem
s . Pl => Nom => klinci
s . Pl => Gen => klinaca
s . Pl => Dat => klincima
s . Pl => Acc => klince
s . Pl => Voc => klinci
s . Pl => Loc => klincima
s . Pl => Ins => klincima
g . Masc Inanim
s . Sg => Nom => posjetilac
s . Sg => Gen => posjetioca
s . Sg => Dat => posjetiocu
s . Sg => Acc => posjetioca
s . Sg => Voc => posjetioče
s . Sg => Loc => posjetiocu
s . Sg => Ins => posjetiočem
s . Pl => Nom => posjetioci
s . Pl => Gen => posjetilaca
s . Pl => Dat => posjetiocima
s . Pl => Acc => posjetioce
s . Pl => Voc => posjetioci
s . Pl => Loc => posjetiocima
s . Pl => Ins => posjetiocima
g . Masc Anim
s . Sg => Nom => pepeo
s . Sg => Gen => pepela
s . Sg => Dat => pepelu
s . Sg => Acc => pepeo
s . Sg => Voc => pepele
s . Sg => Loc => pepelu
s . Sg => Ins => pepelom
s . Pl => Nom => pepeli
s . Pl => Gen => pepela
s . Pl => Dat => pepelima
s . Pl => Acc => pepele
s . Pl => Voc => pepeli
s . Pl => Loc => pepelima
s . Pl => Ins => pepelima
g . Masc Inanim
s . Sg => Nom => ugao
s . Sg => Gen => ugla
s . Sg => Dat => uglu
s . Sg => Acc => ugao
s . Sg => Voc => ugle
s . Sg => Loc => uglu
s . Sg => Ins => uglom
s . Pl => Nom => uglovi
s . Pl => Gen => uglova
s . Pl => Dat => uglovima
s . Pl => Acc => uglove
s . Pl => Voc => uglovi
s . Pl => Loc => uglovima
s . Pl => Ins => uglovima
g . Masc Inanim
s . Sg => Nom => bife
s . Sg => Gen => bifea
s . Sg => Dat => bifeu
s . Sg => Acc => bife
s . Sg => Voc => bifeu
s . Sg => Loc => bifeu
s . Sg => Ins => bifeom
s . Pl => Nom => bifei
s . Pl => Gen => bifea
s . Pl => Dat => bifeima
s . Pl => Acc => bifee
s . Pl => Voc => bifei
s . Pl => Loc => bifeima
s . Pl => Ins => bifeima
g . Masc Inanim
s . Sg => Nom => žiri
s . Sg => Gen => žirija
s . Sg => Dat => žiriju
s . Sg => Acc => žiri
s . Sg => Voc => žiriju
s . Sg => Loc => žiriju
s . Sg => Ins => žirijem
s . Pl => Nom => žiriji
s . Pl => Gen => žirija
s . Pl => Dat => žirijima
s . Pl => Acc => žirije
s . Pl => Voc => žiriji
s . Pl => Loc => žirijima
s . Pl => Ins => žirijima
g . Masc Inanim
s . Sg => Nom => taksi
s . Sg => Gen => taksija
s . Sg => Dat => taksiju
s . Sg => Acc => taksi
s . Sg => Voc => taksiju
s . Sg => Loc => taksiju
s . Sg => Ins => taksijem
s . Pl => Nom => taksiji
s . Pl => Gen => taksija
s . Pl => Dat => taksijima
s . Pl => Acc => taksije
s . Pl => Voc => taksiji
s . Pl => Loc => taksijima
s . Pl => Ins => taksijima
g . Masc Inanim
s . Sg => Nom => koljeno
s . Sg => Gen => koljena
s . Sg => Dat => koljenu
s . Sg => Acc => koljeno
s . Sg => Voc => koljeno
s . Sg => Loc => koljenu
s . Sg => Ins => koljenom
s . Pl => Nom => koljena
s . Pl => Gen => koljena
s . Pl => Dat => koljenima
s . Pl => Acc => koljena
s . Pl => Voc => koljena
s . Pl => Loc => koljenima
s . Pl => Ins => koljenima
g . Neutr
s . Sg => Nom => jedro
s . Sg => Gen => jedra
s . Sg => Dat => jedru
s . Sg => Acc => jedro
s . Sg => Voc => jedro
s . Sg => Loc => jedru
s . Sg => Ins => jedrom
s . Pl => Nom => jedra
s . Pl => Gen => jedara
s . Pl => Dat => jedrima
s . Pl => Acc => jedra
s . Pl => Voc => jedra
s . Pl => Loc => jedrima
s . Pl => Ins => jedrima
g . Neutr
s . Sg => Nom => polje
s . Sg => Gen => polja
s . Sg => Dat => polju
s . Sg => Acc => polje
s . Sg => Voc => polje
s . Sg => Loc => polju
s . Sg => Ins => poljem
s . Pl => Nom => polja
s . Pl => Gen => polja
s . Pl => Dat => poljima
s . Pl => Acc => polja
s . Pl => Voc => polja
s . Pl => Loc => poljima
s . Pl => Ins => poljima
g . Neutr
s . Sg => Nom => žena
s . Sg => Gen => žene
s . Sg => Dat => ženi
s . Sg => Acc => ženu
s . Sg => Voc => ženo
s . Sg => Loc => ženi
s . Sg => Ins => ženom
s . Pl => Nom => žene
s . Pl => Gen => žena
s . Pl => Dat => ženama
s . Pl => Acc => žene
s . Pl => Voc => žene
s . Pl => Loc => ženama
s . Pl => Ins => ženama
g . Fem
s . Masc Anim => Sg => Nom => velik
s . Masc Anim => Sg => Gen => velikog
s . Masc Anim => Sg => Dat => velikomu
s . Masc Anim => Sg => Acc => velikog
s . Masc Anim => Sg => Voc => velik
s . Masc Anim => Sg => Loc => velikom
s . Masc Anim => Sg => Ins => velikim
s . Masc Anim => Pl => Nom => veliki
s . Masc Anim => Pl => Gen => velikih
s . Masc Anim => Pl => Dat => velikim
s . Masc Anim => Pl => Acc => velike
s . Masc Anim => Pl => Voc => veliki
s . Masc Anim => Pl => Loc => velikim
s . Masc Anim => Pl => Ins => velikim
s . Masc Inanim => Sg => Nom => velik
s . Masc Inanim => Sg => Gen => velikog
s . Masc Inanim => Sg => Dat => velikomu
s . Masc Inanim => Sg => Acc => velik
s . Masc Inanim => Sg => Voc => velik
s . Masc Inanim => Sg => Loc => velikom
s . Masc Inanim => Sg => Ins => velikim
s . Masc Inanim => Pl => Nom => veliki
s . Masc Inanim => Pl => Gen => velikih
s . Masc Inanim => Pl => Dat => velikim
s . Masc Inanim => Pl => Acc => velike
s . Masc Inanim => Pl => Voc => veliki
s . Masc Inanim => Pl => Loc => velikim
s . Masc Inanim => Pl => Ins => velikim
s . Fem => Sg => Nom => velika
s . Fem => Sg => Gen => velike
s . Fem => Sg => Dat => velikoj
s . Fem => Sg => Acc => veliku
s . Fem => Sg => Voc => velika
s . Fem => Sg => Loc => velikoj
s . Fem => Sg => Ins => velikom
s . Fem => Pl => Nom => velike
s . Fem => Pl => Gen => velikih
s . Fem => Pl => Dat => velikim
s . Fem => Pl => Acc => velike
s . Fem => Pl => Voc => velike
s . Fem => Pl => Loc => velikim
s . Fem => Pl => Ins => velikim
s . Neutr => Sg => Nom => veliko
s . Neutr => Sg => Gen => velikog
s . Neutr => Sg => Dat => velikomu
s . Neutr => Sg => Acc => veliko
s . Neutr => Sg => Voc => veliko
s . Neutr => Sg => Loc => velikom
s . Neutr => Sg => Ins => velikim
s . Neutr => Pl => Nom => velika
s . Neutr => Pl => Gen => velikih
s . Neutr => Pl => Dat => velikim
s . Neutr => Pl => Acc => velika
s . Neutr => Pl => Voc => velika
s . Neutr => Pl => Loc => velikim
s . Neutr => Pl => Ins => velikim
s . Masc Anim => Sg => Nom => mastan
s . Masc Anim => Sg => Gen => masnog
s . Masc Anim => Sg => Dat => masnomu
s . Masc Anim => Sg => Acc => masnog
s . Masc Anim => Sg => Voc => mastan
s . Masc Anim => Sg => Loc => masnom
s . Masc Anim => Sg => Ins => masnim
s . Masc Anim => Pl => Nom => masni
s . Masc Anim => Pl => Gen => masnih
s . Masc Anim => Pl => Dat => masnim
s . Masc Anim => Pl => Acc => masne
s . Masc Anim => Pl => Voc => masni
s . Masc Anim => Pl => Loc => masnim
s . Masc Anim => Pl => Ins => masnim
s . Masc Inanim => Sg => Nom => mastan
s . Masc Inanim => Sg => Gen => masnog
s . Masc Inanim => Sg => Dat => masnomu
s . Masc Inanim => Sg => Acc => mastan
s . Masc Inanim => Sg => Voc => mastan
s . Masc Inanim => Sg => Loc => masnom
s . Masc Inanim => Sg => Ins => masnim
s . Masc Inanim => Pl => Nom => masni
s . Masc Inanim => Pl => Gen => masnih
s . Masc Inanim => Pl => Dat => masnim
s . Masc Inanim => Pl => Acc => masne
s . Masc Inanim => Pl => Voc => masni
s . Masc Inanim => Pl => Loc => masnim
s . Masc Inanim => Pl => Ins => masnim
s . Fem => Sg => Nom => masna
s . Fem => Sg => Gen => masne
s . Fem => Sg => Dat => masnoj
s . Fem => Sg => Acc => masnu
s . Fem => Sg => Voc => masna
s . Fem => Sg => Loc => masnoj
s . Fem => Sg => Ins => masnom
s . Fem => Pl => Nom => masne
s . Fem => Pl => Gen => masnih
s . Fem => Pl => Dat => masnim
s . Fem => Pl => Acc => masne
s . Fem => Pl => Voc => masne
s . Fem => Pl => Loc => masnim
s . Fem => Pl => Ins => masnim
s . Neutr => Sg => Nom => masno
s . Neutr => Sg => Gen => masnog
s . Neutr => Sg => Dat => masnomu
s . Neutr => Sg => Acc => masno
s . Neutr => Sg => Voc => masno
s . Neutr => Sg => Loc => masnom
s . Neutr => Sg => Ins => masnim
s . Neutr => Pl => Nom => masna
s . Neutr => Pl => Gen => masnih
s . Neutr => Pl => Dat => masnim
s . Neutr => Pl => Acc => masna
s . Neutr => Pl => Voc => masna
s . Neutr => Pl => Loc => masnim
s . Neutr => Pl => Ins => masnim
s . Masc Anim => Sg => Nom => gladan
s . Masc Anim => Sg => Gen => gladnog
s . Masc Anim => Sg => Dat => gladnomu
s . Masc Anim => Sg => Acc => gladnog
s . Masc Anim => Sg => Voc => gladan
s . Masc Anim => Sg => Loc => gladnom
s . Masc Anim => Sg => Ins => gladnim
s . Masc Anim => Pl => Nom => gladni
s . Masc Anim => Pl => Gen => gladnih
s . Masc Anim => Pl => Dat => gladnim
s . Masc Anim => Pl => Acc => gladne
s . Masc Anim => Pl => Voc => gladni
s . Masc Anim => Pl => Loc => gladnim
s . Masc Anim => Pl => Ins => gladnim
s . Masc Inanim => Sg => Nom => gladan
s . Masc Inanim => Sg => Gen => gladnog
s . Masc Inanim => Sg => Dat => gladnomu
s . Masc Inanim => Sg => Acc => gladan
s . Masc Inanim => Sg => Voc => gladan
s . Masc Inanim => Sg => Loc => gladnom
s . Masc Inanim => Sg => Ins => gladnim
s . Masc Inanim => Pl => Nom => gladni
s . Masc Inanim => Pl => Gen => gladnih
s . Masc Inanim => Pl => Dat => gladnim
s . Masc Inanim => Pl => Acc => gladne
s . Masc Inanim => Pl => Voc => gladni
s . Masc Inanim => Pl => Loc => gladnim
s . Masc Inanim => Pl => Ins => gladnim
s . Fem => Sg => Nom => gladna
s . Fem => Sg => Gen => gladne
s . Fem => Sg => Dat => gladnoj
s . Fem => Sg => Acc => gladnu
s . Fem => Sg => Voc => gladna
s . Fem => Sg => Loc => gladnoj
s . Fem => Sg => Ins => gladnom
s . Fem => Pl => Nom => gladne
s . Fem => Pl => Gen => gladnih
s . Fem => Pl => Dat => gladnim
s . Fem => Pl => Acc => gladne
s . Fem => Pl => Voc => gladne
s . Fem => Pl => Loc => gladnim
s . Fem => Pl => Ins => gladnim
s . Neutr => Sg => Nom => gladno
s . Neutr => Sg => Gen => gladnog
s . Neutr => Sg => Dat => gladnomu
s . Neutr => Sg => Acc => gladno
s . Neutr => Sg => Voc => gladno
s . Neutr => Sg => Loc => gladnom
s . Neutr => Sg => Ins => gladnim
s . Neutr => Pl => Nom => gladna
s . Neutr => Pl => Gen => gladnih
s . Neutr => Pl => Dat => gladnim
s . Neutr => Pl => Acc => gladna
s . Neutr => Pl => Voc => gladna
s . Neutr => Pl => Loc => gladnim
s . Neutr => Pl => Ins => gladnim
s . Masc Anim => Sg => Nom => nizak
s . Masc Anim => Sg => Gen => niskog
s . Masc Anim => Sg => Dat => niskomu
s . Masc Anim => Sg => Acc => niskog
s . Masc Anim => Sg => Voc => nizak
s . Masc Anim => Sg => Loc => niskom
s . Masc Anim => Sg => Ins => niskim
s . Masc Anim => Pl => Nom => niski
s . Masc Anim => Pl => Gen => niskih
s . Masc Anim => Pl => Dat => niskim
s . Masc Anim => Pl => Acc => niske
s . Masc Anim => Pl => Voc => niski
s . Masc Anim => Pl => Loc => niskim
s . Masc Anim => Pl => Ins => niskim
s . Masc Inanim => Sg => Nom => nizak
s . Masc Inanim => Sg => Gen => niskog
s . Masc Inanim => Sg => Dat => niskomu
s . Masc Inanim => Sg => Acc => nizak
s . Masc Inanim => Sg => Voc => nizak
s . Masc Inanim => Sg => Loc => niskom
s . Masc Inanim => Sg => Ins => niskim
s . Masc Inanim => Pl => Nom => niski
s . Masc Inanim => Pl => Gen => niskih
s . Masc Inanim => Pl => Dat => niskim
s . Masc Inanim => Pl => Acc => niske
s . Masc Inanim => Pl => Voc => niski
s . Masc Inanim => Pl => Loc => niskim
s . Masc Inanim => Pl => Ins => niskim
s . Fem => Sg => Nom => niska
s . Fem => Sg => Gen => niske
s . Fem => Sg => Dat => niskoj
s . Fem => Sg => Acc => nisku
s . Fem => Sg => Voc => niska
s . Fem => Sg => Loc => niskoj
s . Fem => Sg => Ins => niskom
s . Fem => Pl => Nom => niske
s . Fem => Pl => Gen => niskih
s . Fem => Pl => Dat => niskim
s . Fem => Pl => Acc => niske
s . Fem => Pl => Voc => niske
s . Fem => Pl => Loc => niskim
s . Fem => Pl => Ins => niskim
s . Neutr => Sg => Nom => nisko
s . Neutr => Sg => Gen => niskog
s . Neutr => Sg => Dat => niskomu
s . Neutr => Sg => Acc => nisko
s . Neutr => Sg => Voc => nisko
s . Neutr => Sg => Loc => niskom
s . Neutr => Sg => Ins => niskim
s . Neutr => Pl => Nom => niska
s . Neutr => Pl => Gen => niskih
s . Neutr => Pl => Dat => niskim
s . Neutr => Pl => Acc => niska
s . Neutr => Pl => Voc => niska
s . Neutr => Pl => Loc => niskim
s . Neutr => Pl => Ins => niskim
VInf => čitati
VPres Sg P1 => čitam
VPres Sg P2 => čitaš
VPres Sg P3 => čita
VPres Pl P1 => čitamo
VPres Pl P2 => čitate
VPres Pl P3 => čitaju
VPastPart (Masc Anim) Sg => čitao
VPastPart (Masc Anim) Pl => čitali
VPastPart (Masc Inanim) Sg => čitao
VPastPart (Masc Inanim) Pl => čitali
VPastPart Fem Sg => čitala
VPastPart Fem Pl => čitale
VPastPart Neutr Sg => čitalo
VPastPart Neutr Pl => čitala
VInf => raditi
VPres Sg P1 => radim
VPres Sg P2 => radiš
VPres Sg P3 => radi
VPres Pl P1 => radimo
VPres Pl P2 => radite
VPres Pl P3 => rade
VPastPart (Masc Anim) Sg => radio
VPastPart (Masc Anim) Pl => radili
VPastPart (Masc Inanim) Sg => radio
VPastPart (Masc Inanim) Pl => radili
VPastPart Fem Sg => radila
VPastPart Fem Pl => radile
VPastPart Neutr Sg => radilo
VPastPart Neutr Pl => radila
aarnes-mbp-2:croatian aarne$

33
src/croatian/testHrv.gfs Normal file
View File

@@ -0,0 +1,33 @@
cc -table -unqual nounFormsNoun (izvorN "izvor") inanimate
cc -table -unqual nounFormsNoun (nokatN "nokat") inanimate
cc -table -unqual nounFormsNoun (gradaninN "građanin") animate
cc -table -unqual nounFormsNoun (vojnikN "vojnik") animate
cc -table -unqual nounFormsNoun (bubregN "bubreg") animate
cc -table -unqual nounFormsNoun (trbuhN "trbuh") animate
cc -table -unqual nounFormsNoun (cvorakN "čvorak") animate
cc -table -unqual nounFormsNoun (panjN "panj") inanimate
cc -table -unqual nounFormsNoun (suzanjN "sužanj") inanimate
cc -table -unqual nounFormsNoun (pristN "prišt") inanimate
cc -table -unqual nounFormsNoun (stricN "stric") animate
cc -table -unqual nounFormsNoun (klinacN "klinac") inanimate
cc -table -unqual nounFormsNoun (posjetilacN "posjetilac") animate
cc -table -unqual nounFormsNoun (pepeoN "pepeo") inanimate
cc -table -unqual nounFormsNoun (ugaoN "ugao") inanimate
cc -table -unqual nounFormsNoun (bifeN "bife") inanimate
cc -table -unqual nounFormsNoun (ziriN "žiri") inanimate
cc -table -unqual nounFormsNoun (taksiN "taksi") inanimate
cc -table -unqual nounFormsNoun (koljenoN "koljeno") neuter
cc -table -unqual nounFormsNoun (jedroN "jedro") neuter
cc -table -unqual nounFormsNoun (poljeN "polje") neuter
cc -table -unqual nounFormsNoun (zenaN "žena") feminine
cc -table -unqual adjFormsAdjective (velikA "velik")
cc -table -unqual adjFormsAdjective (velikA "mastan")
cc -table -unqual adjFormsAdjective (velikA "gladan")
cc -table -unqual adjFormsAdjective (velikA "nizak")
cc -table -unqual aeiVerbForms "čitati" "čitam" "čitao"
cc -table -unqual aeiVerbForms "raditi" "radem" "radio"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,284 @@
import json
import sys
# https://kaikki.org/dictionary/rawdata.html
# Tatu Ylonen: Wiktextract: Wiktionary as Machine-Readable Structured Data,
# Proceedings of the 13th Conference on Language Resources and Evaluation (LREC),
# pp. 1317-1325, Marseille, 20-25 June 2022.
WIKTIONARY_FILE = 'data/raw-wiktextract-data.json'
MYLANG = 'Serbo-Croatian'
REFLANG = 'English'
MORPHO_OUTPUT_FILE = 'm.json'
TRANS_OUTPUT_FILE = 't.json'
MORPHO_FINAL_FILE = 'morpho-hr.json' ###
GENDERS = ['masculine', 'feminine', 'neuter']
NOUN_FORMS = {
'singular': {
'nominative': 'snom',
'genitive': 'sgen',
'dative': 'sdat',
'accusative': 'sacc',
'vocative': 'svoc',
'instrumental': 'sins'
},
'plural': {
'nominative': 'pnom',
'genitive': 'pgen',
'dative': 'pdat',
'accusative': 'pacc'
}
}
ADJ_FORMS = {
'masculine': {
'singular': {
'nominative': 'msnom',
'genitive': 'msgen',
'dative': 'msdat',
'instrumental': 'msins'
},
'plural': {
'nominative': 'mpnom',
'genitive': 'mpgen'
}
},
'feminine': {
'singular': {
'nominative': 'fsnom',
'genitive': 'fsgen',
'dative': 'fsdat',
'accusative': 'fsacc',
'instrumental': 'fsins'
}
},
'neuter': {
'singular': {
'nominative': 'nsnom'
}
}
}
VERB_FORMS = {
'present': {
'singular': {
'first-person': 'pres_sg_1',
'second-person': 'pres_sg_2',
'third-person': 'pres_sg_3'
},
'plural': {
'first-person': 'pres_pl_1',
'second-person': 'pres_pl_2',
'third-person': 'pres_pl_3'
}
},
'participle': {
'singular': {
'masculine': 'ppart_masc_sg',
'feminine': 'ppart_fem_sg',
'neuter': 'ppart_neutr_sg'
},
'plural': {
'masculine': 'ppart_masc_pl',
'feminine': 'ppart_fem_pl',
'neuter': 'ppart_neutr_pl'
}
}
}
def unaccent(word):
w = []
for c in word:
if c in "ÀȀȂ":
w.append('A')
elif c in "ÈÈ":
w.append('E')
elif c in "ÌÍȊ̂":
w.append('I')
elif c in "Ò":
w.append('O')
elif c in "Ù":
w.append('U')
elif c in "àáâāȁȃ":
w.append('a')
elif c in "èéēȅȇê":
w.append('e')
elif c in "ìíīȉȋîî":
w.append('i')
elif c in "òóôōȍȏ":
w.append('o')
elif c in "ùúȕȗ̀́̄̏̑ū":
w.append('u')
elif c in "ŕȑȓ":
w.append('r')
else:
w.append(c)
return ''.join(w)
cyrillic = 'ЀЈЉЊЋЍЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШабвгдежзиклмнопрстуфхцчшыѐђјљњћѝџӣӯ'
def get_forms(pos, forms, word):
dict = {}
if pos == 'noun':
for f in forms:
for g in GENDERS:
if 'animate' in f.get('tags', []):
dict['gender'] = 'mascAnimate'
elif g in f.get('tags', []):
dict['gender'] = g
tags = f.get('tags', [])
for num in NOUN_FORMS:
if num in tags:
for case in NOUN_FORMS[num]:
if case in tags:
dict[NOUN_FORMS[num][case]] = unaccent(f['form'])
elif pos == 'name':
for f in forms:
for g in GENDERS:
if 'animate' in f.get('tags', []):
dict['gender'] = 'mascAnimate'
elif g in f.get('tags', []):
dict['gender'] = g
tags = f.get('tags', [])
for num in NOUN_FORMS:
if num in tags:
for case in NOUN_FORMS[num]:
if case in tags:
dict[NOUN_FORMS[num][case]] = unaccent(f['form'])
elif pos == 'adj':
for f in forms:
## print(f)
tags = f.get('tags', [])
if 'positive' in tags and 'indefinite' not in tags:
for g in ADJ_FORMS:
if g in tags:
for n in ADJ_FORMS[g]:
if n in tags:
for c in ADJ_FORMS[g][n]:
if c in tags:
dict[ADJ_FORMS[g][n][c]] = unaccent(f['form'])
elif all([t in tags for t in [
'comparative', 'masculine', 'singular', 'nominative']]):
dict['cmsnom'] = unaccent(f['form'])
elif pos == 'verb':
for f in forms:
tags = f.get('tags', [])
for t in VERB_FORMS:
if t in tags:
for n in VERB_FORMS[t]:
if n in tags:
for g in VERB_FORMS[t][n]:
if g in tags:
dict[VERB_FORMS[t][n][g]] = unaccent(f['form'])
if dict:
dict['infin'] = unaccent(word)
else:
dict['forms'] = forms[:10] ####
dict['status'] = 'NOFORMS-'+pos
if not dict:
dict['status'] = 'NOFORMS'
return dict
def lexinfo(data):
return data['word'], {
'pos': data['pos'], 'forms': get_forms(data['pos'], data['forms'], data['word'])}
# write morphology of mylang in m.json
def morpho(mylang, lines):
with open(MORPHO_OUTPUT_FILE, 'w', encoding="utf-8") as file:
for line in lines:
data = json.loads(line)
if data.get('lang', '') == mylang and (
all([x in data for x in ['pos', 'word', 'forms']])):
word, info = lexinfo(data)
json.dump({word: info}, file, ensure_ascii=False)
file.write('\n')
# write translations from reflang to mylang in t.json
def translations(mylang, reflang, lines):
with open(TRANS_OUTPUT_FILE, 'w', encoding="utf-8") as file:
for line in lines:
data = json.loads(line)
if data.get('lang', '') == reflang and (
all([x in data for x in ['pos', 'word']])):
for t in [t for t in data.get('translations', [])
if t['lang'] == mylang]:
file.write(json.dumps(
{data['word']:
{'pos': data['pos'],
'trans': t.get('word'),
'sense': t.get('sense')}
})+'\n')
# write GF lexical entry
def print_gf_code(data, i):
lemma = list(data.keys())[0]
if any([c in cyrillic for c in lemma]):
return
cats = {
'name': ('PN', 7),
'noun': ('N', 11),
'adj': ('A', 13),
'verb': ('V', 13)
}
pos = data[lemma]['pos']
def prrec(fs, lemma, expected):
if fs.get('status') == 'NOFORMS' or len(fs) != expected:
return '"' + lemma + '"'
else:
s = '{'
for f in fs:
if f == 'gender':
s += f + ' = P.' + str(fs[f]) + ' ; '
else:
s += f + ' = ' + '"' + str(fs[f]) + '"' + ' ; '
return s[:-3] + '}' # removing last ;
if pos in cats:
cat, expected = cats[pos]
fun = "'" + lemma + '_' + str(i) + '_' + cat + "'"
if len(data[lemma]['forms']) == expected:
print(' '.join(['fun', fun, ':', cat, ';']))
print(' '.join(['lin', fun, '=',
'mk'+cat, prrec(data[lemma]['forms'], lemma, expected),';']))
else:
pass
def main():
if not sys.argv[1:]:
print('usage: extract.py (morpho|trans) mylang reflang')
return
mode = sys.argv[1]
mylang, reflang = MYLANG, REFLANG
if sys.argv[3:]:
mylang, reflang = sys.argv[2:]
if mode == 'gf':
with open(MORPHO_FINAL_FILE, "r", encoding="utf-8") as lines:
for line, i in zip(lines, range(100000)):
data = json.loads(line)
print_gf_code(data, i)
with open(WIKTIONARY_FILE, "r", encoding="utf-8") as lines:
if mode == 'trans':
translations(mylang, reflang, lines)
elif mode == 'morpho':
morpho(mylang, lines)
if __name__ == '__main__':
main()

View File

@@ -0,0 +1,451 @@
<!DOCTYPE html>
<html class="client-nojs" lang="sh" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>izvor - Wiktionary</title>
<script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t.",".\t,"],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"wgRequestId":"98673dd6-4847-4bb5-aa61-3479c95e75db","wgCSPNonce":false,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"izvor","wgTitle":"izvor","wgCurRevisionId":1460287,"wgRevisionId":1460287,"wgArticleId":40700,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Srpskohrvatske imenice","Srpskohrvatske imenice muškog roda","Srpskohrvatski indeks","Stranice sa čarobnim vezama za ISBN"],"wgPageContentLanguage":"sh","wgPageContentModel":"wikitext","wgRelevantPageName":"izvor","wgRelevantArticleId":40700,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,
"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgVisualEditor":{"pageLanguageCode":"sh","pageLanguageDir":"ltr","pageVariantFallbacks":"sh"},"wgMFDisplayWikibaseDescriptions":{"search":true,"nearby":true,"watchlist":true,"tagline":false},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":5000,"wgNoticeProject":"wiktionary","wgVector2022PreviewPages":[],"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgULSCurrentAutonym":"srpskohrvatski / српскохрватски","wgEditSubmitButtonLabelPublish":true,"wgCentralAuthMobileDomain":false,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":true};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.styles.legacy":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.wikimediaBadges":"ready","ext.uls.interlanguage":"ready"};RLPAGEMODULES=
["ext.cite.ux-enhancements","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.centralauth.centralautologin","ext.uls.compactlinks","ext.uls.interface"];</script>
<script>(RLQ=window.RLQ||[]).push(function(){mw.loader.implement("user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});});});</script>
<link rel="stylesheet" href="/w/load.php?lang=sh&amp;modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cskins.vector.styles.legacy&amp;only=styles&amp;skin=vector"/>
<script async="" src="/w/load.php?lang=sh&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector"></script>
<meta name="ResourceLoaderDynamicStyles" content=""/>
<link rel="stylesheet" href="/w/load.php?lang=sh&amp;modules=site.styles&amp;only=styles&amp;skin=vector"/>
<meta name="generator" content="MediaWiki 1.40.0-wmf.2"/>
<meta name="referrer" content="origin"/>
<meta name="referrer" content="origin-when-crossorigin"/>
<meta name="referrer" content="origin-when-cross-origin"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="viewport" content="width=1000"/>
<meta property="og:title" content="izvor - Wiktionary"/>
<meta property="og:type" content="website"/>
<link rel="alternate" media="only screen and (max-width: 720px)" href="//sh.m.wiktionary.org/wiki/izvor"/>
<link rel="alternate" type="application/x-wiki" title="Uredi" href="/w/index.php?title=izvor&amp;action=edit"/>
<link rel="apple-touch-icon" href="/static/apple-touch/wiktionary.png"/>
<link rel="icon" href="/static/favicon/piece.ico"/>
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wiktionary (sh)"/>
<link rel="EditURI" type="application/rsd+xml" href="//sh.wiktionary.org/w/api.php?action=rsd"/>
<link rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"/>
<link rel="canonical" href="https://sh.wiktionary.org/wiki/izvor"/>
<link rel="dns-prefetch" href="//meta.wikimedia.org" />
<link rel="dns-prefetch" href="//login.wikimedia.org"/>
</head>
<body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-izvor rootpage-izvor skin-vector action-view skin-vector-legacy vector-toc-not-collapsed vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-language-alert-in-sidebar-enabled vector-feature-sticky-header-disabled vector-feature-sticky-header-edit-disabled vector-feature-table-of-contents-disabled vector-feature-visual-enhancement-next-disabled"><div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body" role="main">
<a id="top"></a>
<div id="siteNotice"><!-- CentralNotice --></div>
<div class="mw-indicators">
</div>
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">izvor</span></h1>
<div id="bodyContent" class="vector-body">
<div id="siteSub" class="noprint">Izvor: Wiktionary</div>
<div id="contentSub"></div>
<div id="contentSub2"></div>
<div id="jump-to-nav"></div>
<a class="mw-jump-link" href="#mw-head">Idi na navigaciju</a>
<a class="mw-jump-link" href="#searchInput">Idi na pretragu</a>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="sh" dir="ltr"><div class="mw-parser-output"><div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="sh" dir="ltr"><h2 id="mw-toc-heading">Sadržaj</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Srpskohrvatski"><span class="tocnumber">1</span> <span class="toctext">Srpskohrvatski</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#Izgovor"><span class="tocnumber">1.1</span> <span class="toctext">Izgovor</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#Imenica"><span class="tocnumber">1.2</span> <span class="toctext">Imenica</span></a>
<ul>
<li class="toclevel-3 tocsection-4"><a href="#Deklinacija"><span class="tocnumber">1.2.1</span> <span class="toctext">Deklinacija</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-5"><a href="#Reference"><span class="tocnumber">1.3</span> <span class="toctext">Reference</span></a></li>
</ul>
</li>
</ul>
</div>
<h2><span class="mw-headline" id="Srpskohrvatski">Srpskohrvatski</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=izvor&amp;action=edit&amp;section=1" title="Uredi odjeljak Srpskohrvatski">uredi</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Izgovor">Izgovor</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=izvor&amp;action=edit&amp;section=2" title="Uredi odjeljak Izgovor">uredi</a><span class="mw-editsection-bracket">]</span></span></h3>
<ul><li><span style="cursor:help" title="Srpskohrvatski"><a href="https://sh.wikipedia.org/wiki/Special:Search/Srpskohrvatski_fonologija" class="extiw" title="w:Special:Search/Srpskohrvatski fonologija">IPA</a></span>: <span class="IPA" lang="">/ǐzʋor/</span></li>
<li>Hifenacija: <span class="mention-Latn">i‧zvor</span></li></ul>
<h3><span class="mw-headline" id="Imenica">Imenica</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=izvor&amp;action=edit&amp;section=3" title="Uredi odjeljak Imenica">uredi</a><span class="mw-editsection-bracket">]</span></span></h3>
<p><strong class="headword" lang="sh">ìzvor</strong> <span class="gender"><abbr title="muški rod">m</abbr></span> (<i>ćirilica</i> <b><span lang="sh" class="Cyrl"><a href="/w/index.php?title=%D0%B8%D0%B7%D0%B2%D0%BE%D1%80&amp;action=edit&amp;redlink=1" class="new" title="извор (stranica ne postoji)">ѝзвор</a></span></b>)
</p>
<p style="margin-bottom: -0.5em; cursor: help;" title="Smisao ili semantičko objašnjenje"><b>Značenja:</b>
</p><ol><li><i>(značenje izvedeno preko sinonima)</i> <a href="/wiki/izdan" title="izdan">izdan</a>, <a href="/wiki/studenac" title="studenac">studenac</a>, <a href="/wiki/kladenac" title="kladenac">kladenac</a>, <a href="/wiki/zdenac" title="zdenac">zdenac</a>, <a href="/wiki/izvori%C5%A1te" title="izvorište">izvorište</a>, <a href="/wiki/vrelo" title="vrelo">vrelo</a>, <a href="/wiki/isto%C4%8Dnik" title="istočnik">istočnik</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Figurativne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Figurativne reči (stranica ne postoji)">fig.</a></i> <a href="/wiki/uzrok" title="uzrok">uzrok</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Regionalizmi&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Regionalizmi (stranica ne postoji)">reg.</a></i> <a href="/wiki/vir" title="vir">vir</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/wiki/buk" title="buk">buk</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/wiki/ubao" title="ubao">ubao</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Retke_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Retke reči (stranica ne postoji)">ret.</a></i> <a href="/wiki/bunar" title="bunar">bunar</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/vrutak" title="vrutak">vrutak</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/klju%C4%8D" title="ključ">ključ</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/vodnjak" title="vodnjak">vodnjak</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/oko" title="oko">oko</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/slanac" title="slanac">slanac</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/slatina" title="slatina">slatina</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/toplice" title="toplice">toplice</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/w/index.php?title=slana%C4%8D&amp;action=edit&amp;redlink=1" class="new" title="slanač (stranica ne postoji)">slanač</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=slana%C4%8Da&amp;action=edit&amp;redlink=1" class="new" title="slanača (stranica ne postoji)">slanača</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/vru%C4%87ica" title="vrućica">vrućica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=terma&amp;action=edit&amp;redlink=1" class="new" title="terma (stranica ne postoji)">terma</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/slanica" title="slanica">slanica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=toplica&amp;action=edit&amp;redlink=1" class="new" title="toplica (stranica ne postoji)">toplica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-0" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li>
<li><i>(značenje izvedeno preko sinonima)</i> <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Figurativne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Figurativne reči (stranica ne postoji)">fig.</a></i> <a href="/wiki/polazi%C5%A1te" title="polazište">polazište</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/osnova" title="osnova">osnova</a>, <a href="/wiki/temelj" title="temelj">temelj</a>, <a href="/wiki/za%C4%8Detak" title="začetak">začetak</a>, <a href="/wiki/po%C4%8Detak" title="početak">početak</a>, <a href="/wiki/platforma" title="platforma">platforma</a>, <a href="/wiki/uzrok" title="uzrok">uzrok</a>, <a href="/wiki/praizvor" title="praizvor">praizvor</a>, <a href="/wiki/pozadina" title="pozadina">pozadina</a>, <a href="/w/index.php?title=prauzrok&amp;action=edit&amp;redlink=1" class="new" title="prauzrok (stranica ne postoji)">prauzrok</a>, <a href="/wiki/polaznica" title="polaznica">polaznica</a>, <a href="/wiki/sto%C5%BEer" title="stožer">stožer</a>, <a href="/wiki/matica" title="matica">matica</a>, <a href="/wiki/izvori%C5%A1te" title="izvorište">izvorište</a>, <a href="/wiki/osnovica" title="osnovica">osnovica</a>, <a href="/wiki/poreklo" title="poreklo">poreklo</a>, <a href="/wiki/podloga" title="podloga">podloga</a>, <a href="/wiki/ishodi%C5%A1te" title="ishodište">ishodište</a>, <a href="/wiki/po%C4%8Delo" title="počelo">počelo</a>, <a href="/w/index.php?title=praelement&amp;action=edit&amp;redlink=1" class="new" title="praelement (stranica ne postoji)">praelement</a>, <a href="/w/index.php?title=nulta_ta%C4%8Dka&amp;action=edit&amp;redlink=1" class="new" title="nulta tačka (stranica ne postoji)">nulta tačka</a>, <a href="/w/index.php?title=pramaterija&amp;action=edit&amp;redlink=1" class="new" title="pramaterija (stranica ne postoji)">pramaterija</a>, <a href="/w/index.php?title=po%C4%8Detna_ta%C4%8Dka&amp;action=edit&amp;redlink=1" class="new" title="početna tačka (stranica ne postoji)">početna tačka</a>, <a href="/wiki/prapo%C4%8Detak" title="prapočetak">prapočetak</a>, <a href="/wiki/leglo" title="leglo">leglo</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/kolevka" title="kolevka">kolevka</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/zametak" title="zametak">zametak</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/koren" title="koren">koren</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/vrelo" title="vrelo">vrelo</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/klica" title="klica">klica</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/seme" title="seme">seme</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/praskozorje" title="praskozorje">praskozorje</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/%C5%BEari%C5%A1te" title="žarište">žarište</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Re%C4%8Di_iz_hrvatskog_standarda&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Reči iz hrvatskog standarda (stranica ne postoji)">hrv.</a></i> <a href="/wiki/podrijetlo" title="podrijetlo">podrijetlo</a> <a href="/w/index.php?title=hrv.&amp;action=edit&amp;redlink=1" class="new" title="hrv. (stranica ne postoji)">hrv.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-1" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li>
<li><i>(značenje izvedeno preko sinonima)</i> <a href="/wiki/materija" title="materija">materija</a>, <a href="/wiki/gra%C4%91a" title="građa">građa</a>, <a href="/wiki/rukopis" title="rukopis">rukopis</a>, <a href="/wiki/dokumentacija" title="dokumentacija">dokumentacija</a>, <a href="/wiki/materijal" title="materijal">materijal</a>, <a href="/wiki/literatura" title="literatura">literatura</a>, <a href="/wiki/korpus" title="korpus">korpus</a>, <a href="/wiki/dokument" title="dokument">dokument</a>, <a href="/wiki/gradivo" title="gradivo">gradivo</a>, <a href="/wiki/podaci" title="podaci">podaci</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Familijarne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Familijarne reči (stranica ne postoji)">fam.</a></i> <a href="/wiki/%C5%A1tof" title="štof">štof</a> <a href="/w/index.php?title=fam.&amp;action=edit&amp;redlink=1" class="new" title="fam. (stranica ne postoji)">fam.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Retke_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Retke reči (stranica ne postoji)">ret.</a></i> <a href="/wiki/tvorivo" title="tvorivo">tvorivo</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-2" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li></ol>
<p style="margin-bottom: -0.5em; cursor:help;" title="Reči koje se u određenom kontekstu ravnopravno koriste ili mogu koristiti."><b>Sinonimi:</b>
</p><ol><li><a href="/wiki/izdan" title="izdan">izdan</a>, <a href="/wiki/studenac" title="studenac">studenac</a>, <a href="/wiki/kladenac" title="kladenac">kladenac</a>, <a href="/wiki/zdenac" title="zdenac">zdenac</a>, <a href="/wiki/izvori%C5%A1te" title="izvorište">izvorište</a>, <a href="/wiki/vrelo" title="vrelo">vrelo</a>, <a href="/wiki/isto%C4%8Dnik" title="istočnik">istočnik</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Figurativne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Figurativne reči (stranica ne postoji)">fig.</a></i> <a href="/wiki/uzrok" title="uzrok">uzrok</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Regionalizmi&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Regionalizmi (stranica ne postoji)">reg.</a></i> <a href="/wiki/vir" title="vir">vir</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/wiki/buk" title="buk">buk</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/wiki/ubao" title="ubao">ubao</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Retke_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Retke reči (stranica ne postoji)">ret.</a></i> <a href="/wiki/bunar" title="bunar">bunar</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/vrutak" title="vrutak">vrutak</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/klju%C4%8D" title="ključ">ključ</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/vodnjak" title="vodnjak">vodnjak</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/oko" title="oko">oko</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a>, <a href="/wiki/slanac" title="slanac">slanac</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/slatina" title="slatina">slatina</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/toplice" title="toplice">toplice</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/w/index.php?title=slana%C4%8D&amp;action=edit&amp;redlink=1" class="new" title="slanač (stranica ne postoji)">slanač</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=slana%C4%8Da&amp;action=edit&amp;redlink=1" class="new" title="slanača (stranica ne postoji)">slanača</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/vru%C4%87ica" title="vrućica">vrućica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=terma&amp;action=edit&amp;redlink=1" class="new" title="terma (stranica ne postoji)">terma</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a>, <a href="/wiki/slanica" title="slanica">slanica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <a href="/w/index.php?title=reg.&amp;action=edit&amp;redlink=1" class="new" title="reg. (stranica ne postoji)">reg.</a>, <a href="/w/index.php?title=toplica&amp;action=edit&amp;redlink=1" class="new" title="toplica (stranica ne postoji)">toplica</a> <a href="/wiki/su%C5%BE." title="suž.">suž.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-3" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li>
<li><i><a href="/w/index.php?title=Vikire%C4%8Dnik:Figurativne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Figurativne reči (stranica ne postoji)">fig.</a></i> <a href="/wiki/polazi%C5%A1te" title="polazište">polazište</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/osnova" title="osnova">osnova</a>, <a href="/wiki/temelj" title="temelj">temelj</a>, <a href="/wiki/za%C4%8Detak" title="začetak">začetak</a>, <a href="/wiki/po%C4%8Detak" title="početak">početak</a>, <a href="/wiki/platforma" title="platforma">platforma</a>, <a href="/wiki/uzrok" title="uzrok">uzrok</a>, <a href="/wiki/praizvor" title="praizvor">praizvor</a>, <a href="/wiki/pozadina" title="pozadina">pozadina</a>, <a href="/w/index.php?title=prauzrok&amp;action=edit&amp;redlink=1" class="new" title="prauzrok (stranica ne postoji)">prauzrok</a>, <a href="/wiki/polaznica" title="polaznica">polaznica</a>, <a href="/wiki/sto%C5%BEer" title="stožer">stožer</a>, <a href="/wiki/matica" title="matica">matica</a>, <a href="/wiki/izvori%C5%A1te" title="izvorište">izvorište</a>, <a href="/wiki/osnovica" title="osnovica">osnovica</a>, <a href="/wiki/poreklo" title="poreklo">poreklo</a>, <a href="/wiki/podloga" title="podloga">podloga</a>, <a href="/wiki/ishodi%C5%A1te" title="ishodište">ishodište</a>, <a href="/wiki/po%C4%8Delo" title="počelo">počelo</a>, <a href="/w/index.php?title=praelement&amp;action=edit&amp;redlink=1" class="new" title="praelement (stranica ne postoji)">praelement</a>, <a href="/w/index.php?title=nulta_ta%C4%8Dka&amp;action=edit&amp;redlink=1" class="new" title="nulta tačka (stranica ne postoji)">nulta tačka</a>, <a href="/w/index.php?title=pramaterija&amp;action=edit&amp;redlink=1" class="new" title="pramaterija (stranica ne postoji)">pramaterija</a>, <a href="/w/index.php?title=po%C4%8Detna_ta%C4%8Dka&amp;action=edit&amp;redlink=1" class="new" title="početna tačka (stranica ne postoji)">početna tačka</a>, <a href="/wiki/prapo%C4%8Detak" title="prapočetak">prapočetak</a>, <a href="/wiki/leglo" title="leglo">leglo</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/kolevka" title="kolevka">kolevka</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/zametak" title="zametak">zametak</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/koren" title="koren">koren</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/vrelo" title="vrelo">vrelo</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/klica" title="klica">klica</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/seme" title="seme">seme</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/praskozorje" title="praskozorje">praskozorje</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <a href="/wiki/%C5%BEari%C5%A1te" title="žarište">žarište</a> <a href="/w/index.php?title=fig.&amp;action=edit&amp;redlink=1" class="new" title="fig. (stranica ne postoji)">fig.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Re%C4%8Di_iz_hrvatskog_standarda&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Reči iz hrvatskog standarda (stranica ne postoji)">hrv.</a></i> <a href="/wiki/podrijetlo" title="podrijetlo">podrijetlo</a> <a href="/w/index.php?title=hrv.&amp;action=edit&amp;redlink=1" class="new" title="hrv. (stranica ne postoji)">hrv.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-4" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li>
<li><a href="/wiki/materija" title="materija">materija</a>, <a href="/wiki/gra%C4%91a" title="građa">građa</a>, <a href="/wiki/rukopis" title="rukopis">rukopis</a>, <a href="/wiki/dokumentacija" title="dokumentacija">dokumentacija</a>, <a href="/wiki/materijal" title="materijal">materijal</a>, <a href="/wiki/literatura" title="literatura">literatura</a>, <a href="/wiki/korpus" title="korpus">korpus</a>, <a href="/wiki/dokument" title="dokument">dokument</a>, <a href="/wiki/gradivo" title="gradivo">gradivo</a>, <a href="/wiki/podaci" title="podaci">podaci</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Familijarne_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Familijarne reči (stranica ne postoji)">fam.</a></i> <a href="/wiki/%C5%A1tof" title="štof">štof</a> <a href="/w/index.php?title=fam.&amp;action=edit&amp;redlink=1" class="new" title="fam. (stranica ne postoji)">fam.</a>, <i><a href="/w/index.php?title=Vikire%C4%8Dnik:Retke_re%C4%8Di&amp;action=edit&amp;redlink=1" class="new" title="Vikirečnik:Retke reči (stranica ne postoji)">ret.</a></i> <a href="/wiki/tvorivo" title="tvorivo">tvorivo</a> <a href="/w/index.php?title=ret.&amp;action=edit&amp;redlink=1" class="new" title="ret. (stranica ne postoji)">ret.</a> <sup id="cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-5" class="reference"><a href="#cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1">&#91;1&#93;</a></sup></li></ol>
<h4><span class="mw-headline" id="Deklinacija">Deklinacija</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=izvor&amp;action=edit&amp;section=4" title="Uredi odjeljak Deklinacija">uredi</a><span class="mw-editsection-bracket">]</span></span></h4>
<div class="NavFrame" style="width:30em">
<div class="NavHead" style="background:#eff7ff">&#160; &#160; deklinacija imenice <i>izvor</i></div>
<div class="NavContent">
<table style="background:#F9F9F9;text-align:center;width:30em" class="inflection-table">
<tbody><tr>
<th style="background:#d9ebff">
</th>
<th style="background:#d9ebff">jednina
</th>
<th style="background:#d9ebff">množina
</th></tr>
<tr>
<td style="background-color:#eff7ff;"><b>nominativ</b>
</td>
<td>izvor
</td>
<td>izvori
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>genitiv</b>
</td>
<td>izvora
</td>
<td>izvora
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>dativ</b>
</td>
<td>izvoru
</td>
<td>izvorima
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>akuzativ</b>
</td>
<td>izvor
</td>
<td>izvore
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>vokativ</b>
</td>
<td>izvore
</td>
<td>izvori
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>lokativ</b>
</td>
<td>izvoru
</td>
<td>izvorima
</td></tr>
<tr>
<td style="background-color:#eff7ff;"><b>instrumental</b>
</td>
<td>izvorom
</td>
<td>izvorima
</td></tr></tbody></table></div></div>
<h3><span class="mw-headline" id="Reference">Reference</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=izvor&amp;action=edit&amp;section=5" title="Uredi odjeljak Reference">uredi</a><span class="mw-editsection-bracket">]</span></span></h3>
<ul><li><span class="plainlinks"><a rel="nofollow" class="external text" href="http://hjp.znanje.hr/index.php?show=search_by_id&amp;id=fVdiWxU%3D">izvor</a></span>” u <i>Hrvatskom jezičnom portalu</i></li></ul>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-P._Ćosić_i_saradnici,_Rečnik_sinonima-1"><span class="mw-cite-backlink"><sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-0">1,0</a></sup> <sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-1">1,1</a></sup> <sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-2">1,2</a></sup> <sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-3">1,3</a></sup> <sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-4">1,4</a></sup> <sup><a href="#cite_ref-P._Ćosić_i_saradnici,_Rečnik_sinonima_1-5">1,5</a></sup></span> <span class="reference-text">Pavle Ćosić i saradnici, Rečnik sinonima, Beograd 2008, <a href="/wiki/Posebno:Tra%C5%BEi_ISBN/9788686673091" class="internal mw-magiclink-isbn">ISBN 978-86-86673-09-1</a></span>
</li>
</ol></div>
<!--
NewPP limit report
Parsed by mw1359
Cached time: 20220916223128
Cache expiry: 1814400
Reduced expiry: false
Complications: [showtoc]
CPU time usage: 0.194 seconds
Real time usage: 0.220 seconds
Preprocessor visited node count: 446/1000000
Postexpand include size: 8118/2097152 bytes
Template argument size: 5300/2097152 bytes
Highest expansion depth: 6/100
Expensive parser function count: 1/500
Unstrip recursion depth: 0/20
Unstrip postexpand size: 1002/5000000 bytes
Lua time usage: 0.099/10.000 seconds
Lua memory usage: 7580626/52428800 bytes
Number of Wikibase entities loaded: 0/400
-->
<!--
Transclusion expansion time report (%,ms,calls,template)
100.00% 163.404 1 -total
68.90% 112.579 1 Šablon:IPA
13.44% 21.965 1 Šablon:sh-imenica2
8.32% 13.599 1 Šablon:l
5.39% 8.815 1 Šablon:Značenje
4.79% 7.834 1 Šablon:rastav
4.43% 7.244 1 Šablon:sh-imenica-deklinacija2
4.27% 6.974 3 Šablon:značenje_preko_sinonima
1.89% 3.096 1 Šablon:Latn
1.82% 2.979 1 Šablon:Sinonimi
-->
<!-- Saved in parser cache with key shwiktionary:pcache:idhash:40700-0!canonical and timestamp 20220916223128 and revision id 1460287.
-->
</div><noscript><img src="//sh.wiktionary.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;" /></noscript>
<div class="printfooter" data-nosnippet="">Izvor: <a dir="ltr" href="https://sh.wiktionary.org/w/index.php?title=izvor&amp;oldid=1460287">https://sh.wiktionary.org/w/index.php?title=izvor&amp;oldid=1460287</a></div></div>
<div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Posebno:Kategorije" title="Posebno:Kategorije">Kategorije</a>: <ul><li><a href="/wiki/Kategorija:Srpskohrvatske_imenice" title="Kategorija:Srpskohrvatske imenice">Srpskohrvatske imenice</a></li><li><a href="/wiki/Kategorija:Srpskohrvatske_imenice_mu%C5%A1kog_roda" title="Kategorija:Srpskohrvatske imenice muškog roda">Srpskohrvatske imenice muškog roda</a></li><li><a href="/wiki/Kategorija:Srpskohrvatski_indeks" title="Kategorija:Srpskohrvatski indeks">Srpskohrvatski indeks</a></li><li><a href="/w/index.php?title=Kategorija:Stranice_sa_%C4%8Darobnim_vezama_za_ISBN&amp;action=edit&amp;redlink=1" class="new" title="Kategorija:Stranice sa čarobnim vezama za ISBN (stranica ne postoji)">Stranice sa čarobnim vezama za ISBN</a></li></ul></div></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigacijski meni</h2>
<div id="mw-head">
<nav id="p-personal" class="vector-menu mw-portlet mw-portlet-personal vector-user-menu-legacy" aria-labelledby="p-personal-label" role="navigation" >
<h3
id="p-personal-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Lični alati</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="pt-anonuserpage" class="mw-list-item"><span title="Korisnička stranica za ip koju Vi uređujete kao">Niste prijavljeni</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Posebno:Moj_razgovor" title="Rasprava o izmjenama s ove IP adrese [n]" accesskey="n"><span>Razgovor</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Posebno:Moji_doprinosi" title="Lista uređenja napravljenih s ove IP adrese [y]" accesskey="y"><span>Doprinosi</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Posebno:Stvori_ra%C4%8Dun&amp;returnto=izvor" title="Predlažemo vam da izradite račun i prijavite se, iako to nije obavezno"><span>Napravi račun</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Posebno:Korisni%C4%8Dka_prijava&amp;returnto=izvor" title="Predlažem da se prijavite; međutim, to nije obavezno [o]" accesskey="o"><span>Prijavi me</span></a></li></ul>
</div>
</nav>
<div id="left-navigation">
<nav id="p-namespaces" class="vector-menu mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy" aria-labelledby="p-namespaces-label" role="navigation" >
<h3
id="p-namespaces-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Imenski prostori</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="ca-nstab-main" class="selected mw-list-item"><a href="/wiki/izvor" title="Vidi stranicu sadržaja [c]" accesskey="c"><span>Stranica</span></a></li><li id="ca-talk" class="new mw-list-item"><a href="/w/index.php?title=Razgovor:izvor&amp;action=edit&amp;redlink=1" rel="discussion" title="Diskusija o stranici sadržaja (stranica ne postoji) [t]" accesskey="t"><span>Razgovor</span></a></li></ul>
</div>
</nav>
<nav id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown" aria-labelledby="p-variants-label" role="navigation" >
<input type="checkbox"
id="p-variants-checkbox"
role="button"
aria-haspopup="true"
data-event-name="ui.dropdown-p-variants"
class="vector-menu-checkbox"
aria-labelledby="p-variants-label"
/>
<label
id="p-variants-label"
aria-label="Promijeni jezičnu varijantu"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">srpskohrvatski / српскохрватски</span>
</label>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"></ul>
</div>
</nav>
</div>
<div id="right-navigation">
<nav id="p-views" class="vector-menu mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy" aria-labelledby="p-views-label" role="navigation" >
<h3
id="p-views-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Pregledi</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/izvor"><span>Čitaj</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=izvor&amp;action=edit" title="Uredite ovu stranicu [e]" accesskey="e"><span>Uredi</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=izvor&amp;action=history" title="Prethodne izmjene ove stranice [h]" accesskey="h"><span>Historija/Историја</span></a></li></ul>
</div>
</nav>
<nav id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown" aria-labelledby="p-cactions-label" role="navigation" title="Više mogućnosti" >
<input type="checkbox"
id="p-cactions-checkbox"
role="button"
aria-haspopup="true"
data-event-name="ui.dropdown-p-cactions"
class="vector-menu-checkbox"
aria-labelledby="p-cactions-label"
/>
<label
id="p-cactions-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Više</span>
</label>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"></ul>
</div>
</nav>
<div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box">
<div>
<h3 >
<label for="searchInput">Pretraga</label>
</h3>
<form action="/w/index.php" id="searchform"
class="vector-search-box-form">
<div id="simpleSearch"
class="vector-search-box-inner"
data-search-loc="header-navigation">
<input class="vector-search-box-input"
type="search" name="search" placeholder="Pretraži Wiktionary" aria-label="Pretraži Wiktionary" autocapitalize="none" title="Pretraži projekt Wiktionary [f]" accesskey="f" id="searchInput"
>
<input type="hidden" name="title" value="Posebno:Traži">
<input id="mw-searchButton"
class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Pretraga stranica sa ovim tekstom" value="Pretraži">
<input id="searchButton"
class="searchButton" type="submit" name="go" title="Idi na stranicu s upravo ovakvim imenom ako postoji" value="Idi">
</div>
</form>
</div>
</div>
</div>
</div>
<div id="mw-panel">
<div id="p-logo" role="banner">
<a class="mw-wiki-logo" href="/wiki/Glavna_stranica"
title="Posjeti glavnu stranicu"></a>
</div>
<nav id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation vector-menu-portal portal" aria-labelledby="p-navigation-label" role="navigation" >
<h3
id="p-navigation-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Navigacija</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="n-Početna-strana/Почетна-страна" class="mw-list-item"><a href="/wiki/Glavna_strana"><span>Početna strana/Почетна страна</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Posebno:Nedavne_izmjene" title="Spisak nedavnih izmjena na wikiju. [r]" accesskey="r"><span>Nedavne izmjene</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Posebno:Slu%C4%8Dajna_stranica" title="Otvorite slučajnu stranicu [x]" accesskey="x"><span>Nasumična stranica</span></a></li></ul>
</div>
</nav>
<nav id="p-interakcija_-_интеракција" class="vector-menu mw-portlet mw-portlet-interakcija_-_интеракција vector-menu-portal portal" aria-labelledby="p-interakcija_-_интеракција-label" role="navigation" >
<h3
id="p-interakcija_-_интеракција-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">interakcija - интеракција</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="n-Pomoć/Помоћ" class="mw-list-item"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents"><span>Pomoć/Помоћ</span></a></li><li id="n-Pijaca/Пијаца" class="mw-list-item"><a href="/wiki/Wiktionary:Pijaca-%D0%9F%D0%B8%D1%98%D0%B0%D1%86%D0%B0"><span>Pijaca/Пијаца</span></a></li><li id="n-Portal-zajednice/Портал-заједнице" class="mw-list-item"><a href="/wiki/Wiktionary:Portal_zajednice"><span>Portal zajednice/Портал заједнице</span></a></li></ul>
</div>
</nav>
<nav id="p-tb" class="vector-menu mw-portlet mw-portlet-tb vector-menu-portal portal" aria-labelledby="p-tb-label" role="navigation" >
<h3
id="p-tb-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Alati</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Posebno:%C5%A0to_vodi_ovdje/izvor" title="Lista svih wiki stranica koje upućuju ovamo [j]" accesskey="j"><span>Šta vodi dovde</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Posebno:Povezane_izmjene/izvor" rel="nofollow" title="Nedavne izmjene na stranicama koje su povezane s ovom stranicom [k]" accesskey="k"><span>Povezane izmjene</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=sh" title="Postavi datoteke [u]" accesskey="u"><span>Postavi datoteku</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Posebno:Posebne_stranice" title="Lista svih posebnih stranica [q]" accesskey="q"><span>Posebne stranice</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=izvor&amp;oldid=1460287" title="Trajni link ove verzije stranice"><span>Trajni link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=izvor&amp;action=info" title="Više informacija o ovoj stranici"><span>Podaci o stranici</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Posebno:Citiraj&amp;page=izvor&amp;id=1460287&amp;wpFormIdentifier=titleform" title="Informacije kako citirati ovu stranicu"><span>Citiraj ovu stranicu</span></a></li></ul>
</div>
</nav>
<nav id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export vector-menu-portal portal" aria-labelledby="p-coll-print_export-label" role="navigation" >
<h3
id="p-coll-print_export-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Štampanje/izvoz</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Posebno:Kolekcija&amp;bookcmd=book_creator&amp;referer=izvor"><span>Napravi knjigu</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Posebno:DownloadAsPdf&amp;page=izvor&amp;action=show-download-screen"><span>Preuzmi kao PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=izvor&amp;printable=yes" title="Verzija ove stranice za ispis [p]" accesskey="p"><span>Verzija za ispis</span></a></li></ul>
</div>
</nav>
<nav id="p-lang" class="vector-menu mw-portlet mw-portlet-lang vector-menu-portal portal" aria-labelledby="p-lang-label" role="navigation" >
<h3
id="p-lang-label"
class="vector-menu-heading "
>
<span class="vector-menu-heading-label">Na drugim jezicima</span>
</h3>
<div class="vector-menu-content">
<ul class="vector-menu-content-list"><li class="interlanguage-link interwiki-chr mw-list-item"><a href="https://chr.wiktionary.org/wiki/izvor" title="izvor — Čeroki" lang="chr" hreflang="chr" class="interlanguage-link-target"><span>ᏣᎳᎩ</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wiktionary.org/wiki/izvor" title="izvor — Engleski" lang="en" hreflang="en" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wiktionary.org/wiki/izvor" title="izvor — Finski" lang="fi" hreflang="fi" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wiktionary.org/wiki/izvor" title="izvor — Francuski" lang="fr" hreflang="fr" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wiktionary.org/wiki/izvor" title="izvor — Hrvatski" lang="hr" hreflang="hr" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wiktionary.org/wiki/izvor" title="izvor — Mađarski" lang="hu" hreflang="hu" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-io mw-list-item"><a href="https://io.wiktionary.org/wiki/izvor" title="izvor — Ido" lang="io" hreflang="io" class="interlanguage-link-target"><span>Ido</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wiktionary.org/wiki/izvor" title="izvor — Kurdski" lang="ku" hreflang="ku" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-mg mw-list-item"><a href="https://mg.wiktionary.org/wiki/izvor" title="izvor — Malagazijski" lang="mg" hreflang="mg" class="interlanguage-link-target"><span>Malagasy</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wiktionary.org/wiki/izvor" title="izvor — Makedonski" lang="mk" hreflang="mk" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wiktionary.org/wiki/izvor" title="izvor — Poljski" lang="pl" hreflang="pl" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wiktionary.org/wiki/izvor" title="izvor — Rumunski" lang="ro" hreflang="ro" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wiktionary.org/wiki/izvor" title="izvor — Ruski" lang="ru" hreflang="ru" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wiktionary.org/wiki/izvor" title="izvor — Slovenački" lang="sl" hreflang="sl" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wiktionary.org/wiki/izvor" title="izvor — Srpski" lang="sr" hreflang="sr" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wiktionary.org/wiki/izvor" title="izvor — Ukrajinski" lang="uk" hreflang="uk" class="interlanguage-link-target"><span>Українська</span></a></li></ul>
</div>
</nav>
</div>
</div>
<footer id="footer" class="mw-footer" role="contentinfo" >
<ul id="footer-info">
<li id="footer-info-lastmod"> Datum i vrijeme posljednje izmjene stranice: 10 februar 2017 u 03:22</li>
<li id="footer-info-copyright">Tekst je dostupan pod licencom <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike</a>;
mogu se primijeniti i dodatni uslovi.
Više informacija možete naći u <a href="https://foundation.wikimedia.org/wiki/Terms_of_Use">Uslovima upotrebe</a>.</li>
</ul>
<ul id="footer-places">
<li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Privacy_policy">Pravila o privatnosti</a></li>
<li id="footer-places-about"><a href="/wiki/Wiktionary:O_projektu">O projektu</a></li>
<li id="footer-places-disclaimer"><a href="/wiki/Wiktionary:Op%C4%87e_odricanje_odgovornosti">Odricanje odgovornosti</a></li>
<li id="footer-places-mobileview"><a href="//sh.m.wiktionary.org/w/index.php?title=izvor&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobilni prikaz</a></li>
<li id="footer-places-developers"><a href="https://developer.wikimedia.org">Programeri</a></li>
<li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/sh.wiktionary.org">Statistika</a></li>
<li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Cookie_statement">Izjava o kolačićima</a></li>
</ul>
<ul id="footer-icons" class="noprint">
<li id="footer-copyrightico"><a href="https://wikimediafoundation.org/"><img src="/static/images/footer/wikimedia-button.png" srcset="/static/images/footer/wikimedia-button-1.5x.png 1.5x, /static/images/footer/wikimedia-button-2x.png 2x" width="88" height="31" alt="Wikimedia Foundation" loading="lazy" /></a></li>
<li id="footer-poweredbyico"><a href="https://www.mediawiki.org/"><img src="/static/images/footer/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/static/images/footer/poweredby_mediawiki_132x47.png 1.5x, /static/images/footer/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"/></a></li>
</ul>
</footer>
<script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.194","walltime":"0.220","ppvisitednodes":{"value":446,"limit":1000000},"postexpandincludesize":{"value":8118,"limit":2097152},"templateargumentsize":{"value":5300,"limit":2097152},"expansiondepth":{"value":6,"limit":100},"expensivefunctioncount":{"value":1,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1002,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 163.404 1 -total"," 68.90% 112.579 1 Šablon:IPA"," 13.44% 21.965 1 Šablon:sh-imenica2"," 8.32% 13.599 1 Šablon:l"," 5.39% 8.815 1 Šablon:Značenje"," 4.79% 7.834 1 Šablon:rastav"," 4.43% 7.244 1 Šablon:sh-imenica-deklinacija2"," 4.27% 6.974 3 Šablon:značenje_preko_sinonima"," 1.89% 3.096 1 Šablon:Latn"," 1.82% 2.979 1 Šablon:Sinonimi"]},"scribunto":{"limitreport-timeusage":{"value":"0.099","limit":"10.000"},"limitreport-memusage":{"value":7580626,"limit":52428800}},"cachereport":{"origin":"mw1359","timestamp":"20220916223128","ttl":1814400,"transientcontent":false}}});mw.config.set({"wgBackendResponseTime":76,"wgHostname":"mw1415"});});</script>
</body>
</html>

View File

@@ -0,0 +1,3 @@
https://github.com/tatuylonen/wiktextract
https://kaikki.org/dictionary/rawdata.html

View File

@@ -0,0 +1,30 @@
gf -run MorphoDictHrv.gf <test-smart.gfs
mv *.tmp full/
gf -run MorphoDictHrvSmart.gf <test-smart.gfs
mv *.tmp smart/
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/N-list.tmp smart/N-list.tmp | wc
10509 147652 1331546
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/N-list.tmp smart/N-list.tmp | grep "|" | wc
5877 86924 749699
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/N-table.tmp smart/N-table.tmp | grep "|" | wc
22354 156623 994255
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/N-table.tmp smart/N-table.tmp | wc
105080 652941 4161921
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/A-table.tmp smart/A-table.tmp | wc
50760 416532 3014404
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/A-table.tmp smart/A-table.tmp | grep "|" | wc
10452 94068 648853
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/V-table.tmp smart/V-table.tmp | wc
69555 896719 5053646
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/V-table.tmp smart/V-table.tmp | grep "|" | wc
44589 607381 3485218
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/A-list.tmp smart/A-list.tmp | grep "|" | wc
1361 16068 173486
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/A-list.tmp smart/A-list.tmp | wc
1410 16661 179955
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/V-list.tmp smart/V-list.tmp | wc
4632 65408 590028
Aarnes-MacBook-Pro:wiktionary aarne$ diff -y full/V-list.tmp smart/V-list.tmp | grep "|" | wc
3979 56003 507444
Aarnes-MacBook-Pro:wiktionary aarne$

View File

@@ -0,0 +1,9 @@
gt -cat=N | l -list | wf -file=N-list.tmp
gt -cat=A | l -list | wf -file=A-list.tmp
gt -cat=PN | l -list | wf -file=PN-list.tmp
gt -cat=V | l -list | wf -file=V-list.tmp
gt -cat=N | l -table | wf -file=N-table.tmp
gt -cat=A | l -table | wf -file=A-table.tmp
gt -cat=PN | l -table | wf -file=PN-table.tmp
gt -cat=V | l -table | wf -file=V-table.tmp

View File

@@ -81,6 +81,6 @@ concrete CatDut of Cat =
N = Noun ;
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
PN = {s : NPCase => Str} ;
GN, SN, PN = {s : NPCase => Str} ;
}

View File

@@ -115,4 +115,9 @@ lin
isPron = False
} ;
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = {
s = \\c => gn.s ! NPNom ++ sn.s ! c
} ;
}

View File

@@ -6,7 +6,7 @@ flags optimize = all_subs ;
lincat
Digit = {s : DForm => CardOrd => Str ; en : Str} ;
Sub10 = {s : DForm => CardOrd => Str ; n : Number ; en : Str ; attr : Str} ;
Sub100, Sub1000, Sub1000000 =
Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
{s : CardOrd => Str ; n : Number ; attr : Str} ;
lin
@@ -49,6 +49,8 @@ lin
pot3plus n m =
addAttr {s = \\g => n.attr ++ "duizend" ++ m.s ! g ; n = Pl} ;
pot3as4 n = n ;
pot4as5 n = n ;
lincat
Dig = TDigit ;

View File

@@ -106,7 +106,7 @@ concrete CatEng of Cat = CommonX - [Pol,CAdv] ** open ResEng, Prelude in {
N = {s : Number => Case => Str ; g : Gender} ;
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Str} ;
PN = {s : Case => Str ; g : Gender} ;
GN, SN, PN = {s : Case => Str ; g : Gender} ;
lindef
SSlash = \s -> {s = s; c2 = ""} ;

View File

@@ -38,6 +38,34 @@ lin
)
} ;
InflectionGN = \pn -> {
t = "gn" ;
s1 = heading1 ("Given Name" ++
case pn.g of {
Neutr => "";
Masc => "(masc)";
Fem => "(fem)"
}) ;
s2 = frameTable (
tr (th "nom" ++ th "gen") ++
tr (td (pn.s ! Nom) ++ td (pn.s ! Gen))
)
} ;
InflectionSN = \pn -> {
t = "sn" ;
s1 = heading1 ("Secondary Name" ++
case pn.g of {
Neutr => "";
Masc => "(masc)";
Fem => "(fem)"
}) ;
s2 = frameTable (
tr (th "nom" ++ th "gen") ++
tr (td (pn.s ! Nom) ++ td (pn.s ! Gen))
)
} ;
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 "Adjective" ;

View File

@@ -191,13 +191,13 @@ concrete ExtendEng of Extend =
inf = verb.adv ++ vp.ad ! a ++ verb.fin ++ verb.inf ++ vp.p ++ compl} ;
} ;
linVPS : Agr -> {s : Order => Agr => {fin,inf : Str}} -> Str = \agr,vps -> let vpss = vps.s ! ODir True ! agr in vpss.fin ++ vpss.inf ;
linVPS : Agr -> {s : Order => Agr => {fin,inf : Str}} -> Str = \agr,vps -> let vpss = vps.s ! ODir False ! agr in vpss.fin ++ vpss.inf ;
mkVPI : VP -> VPI = \vp -> lin VPI {
s = table {
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ;
VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ;
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ++ vp.ext ;
VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ++ vp.ext ;
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext
}
} ;
@@ -471,4 +471,11 @@ lin UseDAPFem dap = {
lin CardCNCard card cn =
{s,sp = \\d,c => card.s ! d ! Nom ++ cn.s ! card.n ! c ; n = Pl} ;
lin GivenName gn = gn ;
lin MaleSurname, FemaleSurname = \sn -> sn ;
lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ;
g = gn.g
} ;
}

View File

@@ -4,8 +4,10 @@ lincat
Digit = {s : DForm => CardOrd => Case => Str} ;
Sub10 = {s : DForm => CardOrd => Case => Str ; n : Number} ;
Sub100 = {s : CardOrd => Case => Str ; n : Number} ;
Sub1000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000000000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
lin num x = x ;
lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in
@@ -25,22 +27,71 @@ lin n9 = mkNum "nine" "nineteen" "ninety" "ninth" ;
lin pot01 = mkNum "one" "eleven" "ten" "first" ** {n = Sg} ;
lin pot0 d = d ** {n = Pl} ;
lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
lin pot110 = regCardOrd "ten" ** {n = Pl} ;
lin pot111 = regCardOrd "eleven" ** {n = Pl} ;
lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ;
lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
lin pot1plus d e = {
s = \\o,c => d.s ! ten ! NCard ! Nom ++ BIND ++ "-" ++ BIND ++ e.s ! unit ! o ! c ; n = Pl} ;
lin pot1as2 n = {s = \\_ => n.s; n=n.n} ;
lin pot21 = {
s = \\d,o,c => case d of {True => []; False => "a"} ++
(regCardOrd "hundred").s ! o ! c;
n = Pl
} ;
lin pot2 d = {s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ mkCard o "hundred" ! c} ** {n = Pl} ;
lin pot2plus d e = {
s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ "hundred" ++ "and" ++ e.s ! o ! c ; n = Pl} ;
lin pot2as3 n = n ;
lin pot31 = {
s = \\d,o,c => case d of {True => []; False => "a"} ++
(regCardOrd "thousand").s ! o ! c;
n = Pl
} ;
lin pot3 n = {
s = \\d,o,c => n.s ! d ! NCard ! Nom ++ mkCard o "thousand" ! c ; n = Pl} ;
lin pot3plus n m = {
s = \\d,o,c => n.s ! d ! NCard ! Nom ++ "thousand" ++ m.s ! False ! o ! c; n = Pl} ;
lin pot3as4 n = n ;
lin pot3float f = {
s = \\d,o,c => f.s ++ mkCard o "thousand" ! c ; n = Pl} ;
lin pot41 = {
s = \\d,o,c => case d of {True => []; False => "a"} ++
(regCardOrd "million").s ! o ! c;
n = Pl
} ;
lin pot4 n = {
s = \\d,o,c => n.s ! d ! NCard ! Nom ++ pot41.s ! True ! o ! c ;
n = Pl
} ;
lin pot4plus n1 n2 = {
s = \\d,o,c => n1.s ! d ! NCard ! Nom ++ pot41.s ! True ! NCard ! Nom ++ "and" ++ n2.s ! True ! o ! c;
n = Pl
} ;
lin pot4as5 n = n ;
lin pot4float f = {
s = \\d,o,c => f.s ++ pot41.s ! True ! o ! c ; n = Pl} ;
lin pot51 = {
s = \\d,o,c => case d of {True => []; False => "a"} ++
(regCardOrd "billion").s ! o ! c;
n = Pl
} ;
lin pot5 n = {
s = \\d,o,c => n.s ! d ! NCard ! Nom ++ pot51.s ! True ! o ! c ;
n = Pl
} ;
lin pot5plus n1 n2 = {
s = \\d,o,c => n1.s ! d ! NCard ! Nom ++ pot51.s ! True ! NCard ! Nom ++ "and" ++ n2.s ! True ! o ! c;
n = Pl
} ;
lin pot5float f = {
s = \\d,o,c => f.s ++ pot51.s ! True ! o ! c ; n = Pl} ;
-- numerals as sequences of digits

View File

@@ -132,6 +132,7 @@ oper
mkPN : overload {
mkPN : Str -> PN ;
mkPN : Str -> Gender -> PN ;
-- Sometimes a common noun can be reused as a proper name, e.g. "Bank"
@@ -435,6 +436,7 @@ mkVoc s = lin Voc (ss s) ;
mkPN = overload {
mkPN : Str -> PN = regPN ;
mkPN : Str -> Gender -> PN = regGenPN ;
mkPN : N -> PN = nounPN
} ;

View File

@@ -1,4 +1,4 @@
abstract AllEstAbs =
Lang,
ExtraEstAbs
Extend
** {} ;

View File

@@ -13,7 +13,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in {
-- Sentence
Cl = {s : ResEst.Tense => Anteriority => Polarity => SType => Str} ;
Cl = {s : ResEst.Tense => Anteriority => Polarity => Str} ;
ClSlash = {s : ResEst.Tense => Anteriority => Polarity => Str ; c2 : Compl} ;
Imp = {s : Polarity => Agr => Str} ;
@@ -22,7 +22,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in {
QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ;
IP = ResEst.IPhrase ;
IComp = {s : Agr => Str} ;
IDet = {s : Case => Str ; n : Number ; isNum : Bool} ;
IDet = ResEst.IDeterminer ;
IQuant = {s : Number => Case => Str} ;
-- Relative
@@ -91,15 +91,15 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in {
c2,c3 : Compl ;
isPre,isPre2 : Bool
} ;
PN = {s : Case => Str} ;
GN, SN, PN = {s : Case => Str} ;
linref
VP = \vp -> linV vp.v ;
NP = linNP (NPCase Nom) ;
CN = linCN (NCase Sg Nom) ;
V,VS,VQ = linV ;
V2,VA,V2S,V2Q = linV2 ;
V2,VA,V2S,V2Q,V3 = linV2 ;
IDet = linIDet ;
}

View File

@@ -7,7 +7,9 @@ concrete ConjunctionEst of Conjunction =
ConjS = conjunctDistrSS ;
ConjAdv = conjunctDistrSS ;
ConjAdv,
ConjAdV,
ConjIAdv = conjunctDistrSS ;
ConjCN conj ss = conjunctDistrTable NForm conj ss ** ss ;
@@ -27,8 +29,8 @@ concrete ConjunctionEst of Conjunction =
BaseS = twoSS ;
ConsS = consrSS comma ;
BaseAdv = twoSS ;
ConsAdv = consrSS comma ;
BaseAdv, BaseAdV, BaseIAdv = twoSS ;
ConsAdv, ConsAdV, ConsIAdv = consrSS comma ;
BaseCN x y = twoTable NForm (mergeCN x) y ** {postmod = y.postmod} ;
ConsCN x xs = consrTable NForm comma (mergeCN x) xs ** xs ;
BaseNP x y = twoTable NPForm (mergeNP x) y ** {a = conjAgr x.a y.a ; postmod = y.postmod} ;
@@ -41,26 +43,29 @@ concrete ConjunctionEst of Conjunction =
lincat
[S] = {s1,s2 : Str} ;
[Adv] = {s1,s2 : Str} ;
[AdV] = {s1,s2 : Str} ;
[IAdv] = {s1,s2 : Str} ;
[CN] = {s1,s2 : NForm => Str ; postmod : Str} ;
[NP] = {s1,s2 : NPForm => Str ; a : Agr ; postmod : Str} ;
[AP] = {s1,s2 : {s : Bool => NForm => Str ; infl : Infl }} ;
[AP] = LinListAP ;
[RS] = {s1,s2 : Agr => Str ; c : NPForm} ;
oper
LinListAP : Type = {s1,s2 : {s : Bool => NForm => Str ; infl : Infl}} ;
--Modified from prelude/Coordination.gf generic functions
twoTableAdj : (_,_ : AP) -> [AP] = \x,y ->
lin ListAP {
twoTableAdj : (_,_ : ResEst.APhrase) -> LinListAP = \x,y -> {
s1 = x ;
s2 = y
} ;
consrTableAdj : Str -> APhrase -> [AP] -> [AP] = \c,x,xs ->
consrTableAdj : Str -> ResEst.APhrase -> LinListAP -> LinListAP = \c,x,xs ->
let
ap1 = xs.s1 ;
ap2 = xs.s2
in
lin ListAP {s1 =
{s = \\isMod,nf =>
in {
s1 = {s = \\isMod,nf =>
case isMod of {
True => case <ap1.infl, ap2.infl> of {
<(Participle|Invariable),(Participle|Invariable)> =>
@@ -74,16 +79,15 @@ concrete ConjunctionEst of Conjunction =
False => ap1.s ! isMod ! nf ++ c ++ ap2.s ! isMod ! nf --kassid on valmid ja suured
} ;
infl = Regular } ;
s2 = x ;
s2 = x ;
} ;
conjunctDistrTableAdj : ConjunctionDistr -> [AP] -> AP = \or,xs ->
conjunctDistrTableAdj : ConjunctionDistr -> LinListAP -> APhrase = \or,xs ->
let
ap1 = xs.s1 ;
ap2 = xs.s2 ;
in
lin AP {s = \\isMod,nf =>
in {s = \\isMod,nf =>
case isMod of {
True => case <ap1.infl, ap2.infl> of {
<(Participle|Invariable),(Participle|Invariable)> =>

View File

@@ -16,12 +16,12 @@ lin
let n_years_AdA : AdA = lin AdA (mkUtt (lin NP (mkNP <lin Card card : Card> L.year_N)))
in mkVP (mkAP n_years_AdA L.old_A) ;
have_name_Cl x y = mkCl (mkNP (E.GenNP x) L.name_N) (lin NP y) ;
married_Cl x y = mkCl (mkNP and_Conj (lin NP x) (lin NP y)) (ParadigmsEst.mkAdv "abielus") ;
have_name_Cl x y = mkCl (mkNP (E.GenNP x) L.name_N) <lin NP y : NP> ;
married_Cl x y = mkCl (mkNP and_Conj <lin NP x : NP> <lin NP y : NP>) (ParadigmsEst.mkAdv "abielus") ;
what_name_QCl x = mkQCl (mkIComp whatSg_IP) (mkNP (E.GenNP x) L.name_N) ;
how_old_QCl x = mkQCl (E.ICompAP (mkAP L.old_A)) (lin NP x) ;
how_far_QCl x = mkQCl (E.IAdvAdv L.far_Adv) (lin NP x) ;
how_old_QCl x = mkQCl (E.ICompAP (mkAP L.old_A)) <lin NP x : NP> ;
how_far_QCl x = mkQCl (E.IAdvAdv L.far_Adv) <lin NP x : NP> ;
-- some more things
weather_adjCl ap = mkCl (mkVP (lin AP ap)) ;
@@ -29,10 +29,13 @@ lin
is_right_VP = mkVP have_V2 (lin NP (mkNP (ParadigmsEst.mkN "õigus"))) ;
is_wrong_VP = mkVP (ParadigmsEst.mkV "eksima") ;
n_units_AP card cn a = mkAP (lin AdA (mkUtt (lin NP (mkNP <lin Card card : Card> (lin CN cn))))) (lin A a) ;
n_units_AP card cn a =
let x_inches_NP : NP = mkNP <lin Card card : Card> <lin CN cn : CN> ;
x_inches_AdA : AdA = lin AdA (mkUtt x_inches_NP) ;
in mkAP x_inches_AdA <lin A a : A> ;
{-
glass_of_CN np = mkCN (lin N2 (mkN2 (mkN "klaas") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "klaasitäis") (mkPrep partitive))) (lin NP np) ;
glass_of_CN np = mkCN (lin N2 (mkN2 (mkN "klaas") (casePrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "klaasitäis") (casePrep partitive))) (lin NP np) ;
where_go_QCl np = mkQCl (lin IAdv (ss "kuhu")) (mkCl np (mkVP L.go_V)) ;

View File

@@ -23,7 +23,7 @@ lincat
oper
heading : N -> Str = \n -> (nounHeading n).s ;
caseplus2nf : N -> ResEst.Number -> CasePlus -> Str = \noun,num,cas ->
caseplus2nf : ResEst.Noun -> ResEst.Number -> CasePlus -> Str = \noun,num,cas ->
noun.s ! NCase num cas.c ++ cas.suf ;
caseplus2af : (AForm => Str) -> ResEst.Number -> CasePlus -> Str = \adj,num,cas ->
@@ -65,77 +65,77 @@ lin
InflectionV v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v)) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V v : V>)) ;
s2 = inflVerb v
} ;
InflectionV2 v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V2 v : V2> S.something_NP)) ;
s2 = inflVerb v
} ;
InflectionV3 v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V3 v : V3> S.something_NP S.something_NP)) ;
s2 = inflVerb v
} ;
InflectionV2V v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (S.mkVP (L.sleep_V)))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V2V v : V2V> S.we_NP (S.mkVP (L.sleep_V)))) ;
s2 = inflVerb v
} ;
InflectionV2S v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin S (ss "...")))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V2S v : V2S> S.we_NP (lin S (ss "...")))) ;
s2 = inflVerb v
} ;
InflectionV2Q v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin QS (ss "...")))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V2Q v : V2Q> S.we_NP (lin QS (ss "...")))) ;
s2 = inflVerb v
} ;
InflectionV2A v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP L.beautiful_A)) ;
paragraph (verbExample (S.mkCl S.she_NP <lin V2A v : V2A> S.we_NP L.beautiful_A)) ;
s2 = inflVerb v
} ;
InflectionVV v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin VV v : VV> (S.mkVP (L.sleep_V)))) ;
s2 = inflVerb v
} ;
InflectionVS v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v (lin S (ss "...")))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin VS v : VS> (lin S (ss "...")))) ;
s2 = inflVerb v
} ;
InflectionVQ v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v (lin QS (ss "...")))) ;
paragraph (verbExample (S.mkCl S.she_NP <lin VQ v : VQ> (lin QS (ss "...")))) ;
s2 = inflVerb v
} ;
InflectionVA v = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
paragraph (verbExample (S.mkCl S.she_NP v L.beautiful_A)) ;
paragraph (verbExample (S.mkCl S.she_NP <lin VA v : VA> L.beautiful_A)) ;
s2 = inflVerb v
} ;
@@ -143,16 +143,15 @@ oper
verbExample : CatEst.Cl -> Str = \cl -> (S.mkUtt cl).s ;
{-
-} --# notpresent
inflVerb : CatEst.V -> Str = \verb ->
inflVerb : ResEst.Verb -> Str = \verb ->
let
--verb = sverb2verbSep verb0 ;
vfin : ResEst.VForm -> Str = \f ->
verb.s ! f ;
vinf : ResEst.InfForms -> Str = \if ->
applyInfFormsV if verb.s ;
nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 ->
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP n2))).s ;
(S.mkUtt (G.PossNP (S.mkCN <lin N n1 : N>) (S.mkNP <lin N n2 : N>))).s ;
in
heading3 (nounNounHeading present_Parameter indicative_Parameter) ++
frameTable (
@@ -254,7 +253,7 @@ oper
td (vfin (PastPart Pass )))
) ; --}
inflNoun : (Number -> CasePlus -> Str) -> Str = \nouns ->
inflNoun : (ResEst.Number -> CasePlus -> Str) -> Str = \nouns ->
frameTable (
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
tr (th (heading nominative_Parameter) ++ td (nouns Sg Nominative) ++ td (nouns Pl Nominative)) ++

View File

@@ -54,6 +54,10 @@ concrete ExtendEst of Extend =
VPI2 = X.VPI ** {c2 : Compl} ;
[VPI2] = X.ListVPI ** {c2 : Compl} ;
linref
VPS = X.linVPS (agrP3 Sg) ;
VPI = X.linVPI InfMa ;
lin
MkVPS = X.MkVPS ;
BaseVPS = X.BaseVPS ;
@@ -256,12 +260,12 @@ concrete ExtendEst of Extend =
-- : NP -> VS -> Utt -> Cl ; -- "I am here", she said
FrontComplDirectVS np vs utt =
let cl : Cl = PredVP np (UseV vs) ;
in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ;
in cl ** {s = \\t,a,p => utt.s ++ bindComma ++ cl.s ! t ! a ! p} ;
-- : NP -> VQ -> Utt -> Cl ; -- "where", she asked
FrontComplDirectVQ np vq utt =
let cl : Cl = PredVP np (UseV vq) ;
in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ;
in cl ** {s = \\t,a,p => utt.s ++ bindComma ++ cl.s ! t ! a ! p} ;
---------------------------------
@@ -298,8 +302,12 @@ concrete ExtendEst of Extend =
GerundAdv vp = {s = infVPdefault vp InfDes} ;
-- : VP -> CN -- publishing of the document (can get a determiner)
GerundCN vp = emptyCN ** {s = \\nf => infVPdefault vp InfMine} ;
GerundCN vp = emptyCN ** {
s = \\nf => infVPdefault vp {stem = InfM ; suf = []}
++ ine.s ! nf ;
} where {
ine : N = mkN "ine" "ise" "ist" "isesse" "iste" "isi"
} ;
-- : VP -> NP -- publishing the document (by nature definite)
GerundNP vp = MassNP (GerundCN vp) ;
@@ -345,7 +353,7 @@ concrete ExtendEst of Extend =
-- : VPSlash -> AP ; -- täna leitud
PastPartAP vp = {
s = \\_,_ => vp2adv vp True (VIPass Past) ;
s = \\_,_ => vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
infl = Invariable
} ;
@@ -357,7 +365,8 @@ concrete ExtendEst of Extend =
-- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm)
PastPartAgentAP vp np = {
s = \\_,_ => appCompl True Pos by8agent_Prep np ++ vp2adv vp True (VIPass Past) ;
s = \\_,_ => appCompl True Pos by8agent_Prep np
++ vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
infl = Invariable
} ;
@@ -385,17 +394,25 @@ concrete ExtendEst of Extend =
-- calling infVP with the "default arguments": NPCase Nom, Pos, agrP3 Sg
infVPdefault : VP -> InfForms -> Str = infVP (NPCase Nom) Pos (agrP3 Sg) ;
vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif ->
let vpforms : {fin,inf : Str} = case vif of {
VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here
_ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ;
in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut
++ vp.adv -- paremini
++ vp.p -- ära
++ vpforms.fin -- tunda/tundes/tundmata/...
++ vpforms.inf -- TODO is this necessary???
++ vp.ext ;
vp2adv = overload {
vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif ->
let vpforms : {fin,inf : Str} = case vif of {
VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here
_ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ;
in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut
++ vp.adv -- paremini
++ vp.p -- ära
++ vpforms.fin -- tunda/tundes/tundmata/...
++ vpforms.inf -- TODO is this necessary???
++ vp.ext ;
vp2adv : R.VP -> Bool -> VForm -> Str = \vp,sentIsPos,vf ->
vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut
++ vp.adv -- paremini
++ vp.p -- ära
++ vp.v.s ! vf -- tuntud
++ vp.ext
} ;
---------------------------------
-- S - W
@@ -420,4 +437,9 @@ concrete ExtendEst of Extend =
WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ;
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c
} ;
}

View File

@@ -23,15 +23,24 @@ concrete ExtraEst of ExtraEstAbs = CatEst **
--- a = RAg (agrP3 num.n)
} ;
oper
caseCN : CasePlus -> NP -> CN -> CN = \c,np,cn -> cn ** {
caseCN : CasePlus -> NPhrase -> CNoun -> CNoun = \c,np,cn -> cn ** {
s = \\nf => appCompl True Pos (P.casePrep c) np ++ cn.s ! nf
} ;
lincat
VPI = {s : InfStem => Str} ;
[VPI] = {s1,s2 : InfStem => Str} ;
-- VPI = {s : Str} ;
-- [VPI] = {s1,s2 : Str} ;
VPI = LinVPI ;
[VPI] = LinListVPI ;
oper
LinVPI : Type = {s : InfStem => Str} ;
LinListVPI : Type = {s1,s2 : InfStem => Str} ;
linVPI : InfForms -> LinVPI -> Str = \inf,vpi -> vpi.s ! inf.stem ;
-- Version that uses InfStem
infVPIF : NPForm -> Polarity -> Agr -> ResEst.VP -> InfStem -> Str = \sc,pol,agr,vp,if ->
infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ;
lin
BaseVPI = twoTable InfStem ;
ConsVPI = consrTable InfStem comma ;
@@ -41,23 +50,41 @@ concrete ExtraEst of ExtraEstAbs = CatEst **
ComplVPIVV vv vpi =
insertObj (\\_,_,_ => vpi.s ! vv.vi.stem) (predV vv) ;
oper
-- Version that uses InfStem
infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if ->
infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ;
lincat
VPS = {
VPS = LinVPS ;
[VPS] = LinListVPS ;
oper
LinVPS : Type = {
s : Agr => Str ;
sc : NPForm ; --- can be different for diff parts
} ;
[VPS] = {
LinListVPS : Type = {
s1,s2 : Agr => Str ;
sc : NPForm ; --- take the first: minä osaan kutoa ja täytyy virkata
} ;
linVPS : Agr -> {s : Agr => Str} -> Str = \agr,vps -> vps.s ! agr ;
-- This internal oper isn't used in any of the RGL linearisations, but can be useful for application grammars
-- It produces a telegraphic style in past participle, 'võetud …' instead of 'on/oli võetud …'.
-- It differs from PastPartAP in word order, and it also takes polarity.
TelegraphicPastPartPassVPS : Pol -> ResEst.VP -> VPS = \p,vp ->
let sentIsPos : Bool = case p.p of {
Neg => False ;
Pos => True } ;
neg : Str = case p.p of {
Neg => "ei" ;
Pos => [] } ;
in lin VPS {
s = \\a => neg -- ei
++ vp.v.s ! (PastPart Pass) -- võetud
++ vp.s2 ! sentIsPos ! p.p ! a -- vereanalüüs
++ vp.adv -- eile
++ vp.p
++ vp.ext ;
sc = vp.sc
};
lin
BaseVPS x y = twoTable Agr x y ** {sc = x.sc} ;
ConsVPS x y = consrTable Agr comma x y ** {sc = x.sc} ;
@@ -108,7 +135,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst **
(\\_,b,_ => linNP (NPCase Nom) np)
(predV (verbOlema ** {sc = NPCase Nom}))) ;
in
cl.s ! t ! ant ! bo ! SDecl ;
cl.s ! t ! ant ! bo ;
c = NPCase Nom
} ;
@@ -117,18 +144,20 @@ concrete ExtraEst of ExtraEstAbs = CatEst **
(\\_,b,_ => linNP (NPCase Nom) np) (predV v)) ;
ICompExistNP adv np =
let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj
(\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ;
in {
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
} ;
let subj : Polarity -> Str = \_ -> adv.s ! np.a ;
pred : ResEst.VP = insertObj
(\\_,b,_ => linNP (NPCase Nom) np)
(predV (verbOlema ** {sc = NPCase Nom})) ;
in mkClause subj np.a pred ;
IAdvPredNP iadv v np =
let cl = mkClause (\_ -> iadv.s) np.a (insertObj
(\\_,b,_ => linNP v.sc np) (predV v)) ;
in {
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
} ;
let subj : Polarity -> Str = \_ -> iadv.s ;
pred : ResEst.VP = insertObj
(\\_,b,_ => linNP v.sc np)
(predV v) ;
in mkClause subj np.a pred ;
-- i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ;
whatPart_IP = emptyIP ** {

View File

@@ -1,6 +1,6 @@
abstract ExtraEstAbs = Extra [
GenNP,GenIP,GenRP,
PassVPSlash, PassAgentVPSlash,
GenNP,GenIP,GenRP,IP,IQuant,Num,CN,RP,
PassVPSlash, PassAgentVPSlash, VPSlash,
VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI,
VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,ConjVPS,Tense,Temp,Pol,S,
VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP, Pron, ProDrop] ** {

View File

@@ -5,23 +5,17 @@ concrete IdiomEst of Idiom = CatEst **
lin
ExistNP np =
let
cas : Polarity -> NPForm = \p -> case p of {
Pos => NPCase Nom ; -- on olemas lammas
Neg => NPCase Part -- ei ole olemas lammast
} ;
vp = insertObj (\\_,b,_ => "olemas" ++ linNP (cas b) np) (predV olla)
in
existClause noSubj (agrP3 Sg) vp ;
let cas : Polarity -> NPForm = \p -> case p of {
Pos => NPCase Nom ; -- on olemas lammas
Neg => NPCase Part } ; -- ei ole olemas lammast
vp = insertObj (\\_,b,_ => "olemas" ++ linNP (cas b) np) (predV olla)
in existClause noSubj (agrP3 Sg) vp ;
ExistIP ip =
let
cas : NPForm = NPCase Nom ; ---- also partitive in Extra
vp = insertObj (\\_,b,_ => "olemas") (predV olla) ;
cl = existClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) cas) (agrP3 Sg) vp
in {
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
} ;
let cas : NPForm = NPCase Nom ; ---- also partitive in Extra
vp : MorphoEst.VP = insertObj (\\_,b,_ => "olemas") (predV olla) ;
subj : MorphoEst.NPhrase = ip ** {isPron = False ; a = agrP3 ip.n} ;
in existClause (subjForm subj cas) (agrP3 Sg) vp ;
-- Notice the nominative in the cleft $NP$: "se on Matti josta Liisa pitää"
-- Est: "see on Mati, kellest Liis lugu peab"

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