forked from GitHub/gf-rgl
Compare commits
55 Commits
toki-pona
...
fix-somali
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba879527ab | ||
|
|
4ab63d2d66 | ||
|
|
41e3b8280b | ||
|
|
4a3e30a1cd | ||
|
|
9458f96f0b | ||
|
|
922f664f74 | ||
|
|
3943089d3d | ||
|
|
6a6788c24e | ||
|
|
e7e7f12ad8 | ||
|
|
90d8897bf9 | ||
|
|
be0fb1f7c1 | ||
|
|
7d73dd8195 | ||
|
|
48ec088faa | ||
|
|
8a84ca1a45 | ||
|
|
34f5e625e3 | ||
|
|
27c2d7cbb3 | ||
|
|
26abc63953 | ||
|
|
15df5ed37e | ||
|
|
43f19f283e | ||
|
|
9b6b94ec1d | ||
|
|
8b462bdbfb | ||
|
|
14c7db6427 | ||
|
|
2c613bfc83 | ||
|
|
8a8c1c6b42 | ||
|
|
76b27152f9 | ||
|
|
36bc768f26 | ||
|
|
b7275a2bac | ||
|
|
7e8e6dbf34 | ||
|
|
27ff3935c5 | ||
|
|
4cd3d3158e | ||
|
|
e3b27613fd | ||
|
|
5f6a8b2905 | ||
|
|
6203aee170 | ||
|
|
ffb77daf31 | ||
|
|
494c91f9dd | ||
|
|
6f6405b90e | ||
|
|
da0e273d3d | ||
|
|
263b668249 | ||
|
|
019a347246 | ||
|
|
6aeda22ed6 | ||
|
|
ae9b7d4d45 | ||
|
|
323e4b4cdf | ||
|
|
e42c5f53e2 | ||
|
|
fea01dd313 | ||
|
|
9e402cb608 | ||
|
|
401ac1f954 | ||
|
|
6a2cb9ec77 | ||
|
|
b339f7c2fc | ||
|
|
d6f3cae141 | ||
|
|
44acdbd350 | ||
|
|
f630f6ef29 | ||
|
|
8808ce108b | ||
|
|
1c3bb0f6eb | ||
|
|
5cc990d259 | ||
|
|
621cfd8b43 |
12
.gitignore
vendored
12
.gitignore
vendored
@@ -5,15 +5,3 @@ dist/
|
||||
*.pgf
|
||||
*.tmp
|
||||
*~
|
||||
.direnv
|
||||
_grphp_*.dot
|
||||
_grphp_*.png
|
||||
_grpht_*.dot
|
||||
_grpht_*.png
|
||||
_gftmp
|
||||
t.dot
|
||||
t.dot.png
|
||||
u.dot.png
|
||||
t.dot.*.png
|
||||
u.dot.*.png
|
||||
u.dot
|
||||
|
||||
62
flake.lock
generated
62
flake.lock
generated
@@ -1,62 +0,0 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1775036866,
|
||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1750386251,
|
||||
"narHash": "sha256-1ovgdmuDYVo5OUC5NzdF+V4zx2uT8RtsgZahxidBTyw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "076e8c6678d8c54204abcb4b1b14c366835a58bb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"sydpkgs": "sydpkgs"
|
||||
}
|
||||
},
|
||||
"sydpkgs": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771299872,
|
||||
"narHash": "sha256-+OPW1SKKHT7aqhyjs2O20gd1MXa7LyD+9/lwMUCVL7Y=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "53bf019e26478666ab7f458f78e569b8b106cc1f",
|
||||
"revCount": 36,
|
||||
"type": "git",
|
||||
"url": "https://git.deertopia.net/msyds/sydpkgs"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.deertopia.net/msyds/sydpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
55
flake.nix
55
flake.nix
@@ -1,55 +0,0 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
# gf.url = "github:anka-213/cclaw-nix-stuff/nix-flakes";
|
||||
sydpkgs.url = "git+https://git.deertopia.net/msyds/sydpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, sydpkgs, ... }@inputs:
|
||||
let
|
||||
supportedSystems = [
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"x86_64-linux"
|
||||
];
|
||||
|
||||
each-system = f: nixpkgs.lib.genAttrs supportedSystems (system: f rec {
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [
|
||||
# (final: prev: { inherit (gf.packages.${system}) gf-core; })
|
||||
sydpkgs.overlays.default
|
||||
];
|
||||
};
|
||||
inherit (pkgs) lib;
|
||||
inherit system;
|
||||
});
|
||||
in {
|
||||
# Exposed as a REPL convenience.
|
||||
_pkgs = each-system ({ pkgs, ... }: pkgs);
|
||||
|
||||
packages = each-system ({ pkgs, ... }: {
|
||||
default = pkgs.callPackage ./package.nix {};
|
||||
});
|
||||
|
||||
devShells = each-system ({ pkgs, system, ... }:
|
||||
let
|
||||
gf-lsp = import
|
||||
(pkgs.fetchzip {
|
||||
url = "https://github.com/anka-213/gf-lsp/archive/refs/tags/1.0.6.0.tar.gz";
|
||||
hash = "sha256-UAI2qUslzLOWYjTirZJ0y4DZbkPZnVXTY0XtFO8+Rks=";
|
||||
}) {inherit system;};
|
||||
in {
|
||||
default = pkgs.mkShell {
|
||||
inputsFrom = [ self.packages.${system}.default ];
|
||||
packages = [
|
||||
gf-lsp.gf-lsp
|
||||
pkgs.gftest
|
||||
pkgs.graphviz
|
||||
pkgs.imagemagick
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
23
package.nix
23
package.nix
@@ -1,23 +0,0 @@
|
||||
{ stdenv
|
||||
, ghc
|
||||
, gf-core
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gf-rgl";
|
||||
src = ./.;
|
||||
buildInputs = [ ghc gf-core ];
|
||||
# Keep references to source, so go to definition works
|
||||
# postUnpack = ''
|
||||
# rm -r source/src
|
||||
# ln -s $src/src source/src
|
||||
# '';
|
||||
LC_ALL = "C.UTF-8";
|
||||
buildPhase = ''
|
||||
runghc Setup.hs build
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/gf/lib
|
||||
runghc Setup.hs copy --dest=$out/share/gf/lib
|
||||
'';
|
||||
}
|
||||
@@ -52,12 +52,6 @@ apiModules = ["Try","Symbolic","Syntax","Constructors","Combinators"]
|
||||
|
||||
clone :: [String] -> String -> String -> String -> String -> (String, String) -> IO ()
|
||||
clone options fromdir todir from to (absname,absfx) = do
|
||||
printf "clone options=%s\n\
|
||||
\ fromdir=%s\n\
|
||||
\ todir=%s\n\
|
||||
\ from=%s\n\
|
||||
\ to=%s\n" (show options) (show fromdir)
|
||||
(show todir) (show from) (show to)
|
||||
s <- readFile (fromdir ++ "/" ++ absname ++ from ++ absfx ++ ".gf")
|
||||
writeAndReportFile (todir ++ "/" ++ absname ++ to ++ absfx ++ ".gf") (commentIf options (replaceLang from to s))
|
||||
|
||||
|
||||
@@ -1,25 +1,61 @@
|
||||
concrete CatSqi of Cat = CommonX ** open ParamX, Prelude, ResSqi in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
|
||||
lincat AP = {s: Species => Case => Gender => Number => Str} ;
|
||||
lincat CN = Noun ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
|
||||
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
|
||||
lincat NP = {s: Case => Str; a : Agr} ;
|
||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||
|
||||
concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat ACard = {s : Str} ;
|
||||
lincat AP = {s : Species => Case => Gender => Number => Str} ;
|
||||
lincat CN = Noun ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {s : Str} ;
|
||||
lincat ClSlash = {s : Str} ;
|
||||
lincat Comp = {s : Str} ;
|
||||
lincat Conj = {s : Str} ;
|
||||
lincat DAP = {s : Str} ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
lincat GN = {s : Str} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
|
||||
c2 : {s : Str}} ;
|
||||
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
|
||||
c2 : {s : Str}; c3 : {s : Str}} ;
|
||||
lincat NP = {s : Case => Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat SN = {s : Str} ;
|
||||
lincat SSlash = {s : Str} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat VP = {indicative : Tense => Number => Person => Case => Str;
|
||||
participle : Case => Str;
|
||||
pres_optative : Number => Person => Case => Str;
|
||||
perf_optative : Number => Person => Case => Str;
|
||||
pres_admirative : Number => Person => Case => Str;
|
||||
imperf_admirative : Number => Person => Case => Str} ;
|
||||
lincat VPSlash = {indicative : Tense => Number => Person => Str;
|
||||
imperative : Number => Str; participle : Str;
|
||||
pres_optative : Number => Person => Str;
|
||||
perf_optative : Number => Person => Str;
|
||||
pres_admirative : Number => Person => Str;
|
||||
imperf_admirative : Number => Person => Str} ;
|
||||
}
|
||||
|
||||
@@ -51,32 +51,32 @@ lin InflectionV = \x -> {
|
||||
t="fl" ;
|
||||
s1=heading1 "Folje" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"24\"" "Indicative" ++ intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Pres ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Pres ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Pres ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Pres ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Past" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Past ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Past ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Past ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Past ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Past ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Past ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Aorist" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Aorist ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Aorist ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Aorist ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Aorist ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Imperfect" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.Imperative ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"24\"" "Indicative" ++ intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.indicative ! Pres ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Pres ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Pres ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.indicative ! Pres ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Pres ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Pres ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Past" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.indicative ! Past ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Past ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Past ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.indicative ! Past ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Past ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Past ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Aorist" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.indicative ! Aorist ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Aorist ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Aorist ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.indicative ! Aorist ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Aorist ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Aorist ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Imperfect" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.indicative ! Imperfect ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Imperfect ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Imperfect ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.indicative ! Imperfect ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.indicative ! Imperfect ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.indicative ! Imperfect ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pl)) ++
|
||||
tr (th "participle" ++ td (x.participle)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "pres_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_optative ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.pres_optative ! Sg ! P2)) ++
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
a = agrgP3 cn.g det.n
|
||||
} ;
|
||||
|
||||
UsePron p = p ;
|
||||
-- UsePron p = p ;
|
||||
|
||||
DetQuant quant num = {
|
||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
||||
@@ -30,7 +30,6 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
} ;
|
||||
|
||||
UseN n = n ;
|
||||
UseN2 n = n ;
|
||||
|
||||
AdjCN ap cn = {
|
||||
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
|
||||
|
||||
@@ -104,10 +104,10 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
|
||||
|
||||
|
||||
param Tense = Pres | Past | Imperfect | Aorist ;
|
||||
oper Verb = {Indicative: Tense => Number => Person => Str; Imperative: Number => Str; participle: Str; pres_optative: Number => Person => Str; perf_optative: Number => Person => Str; pres_admirative: Number => Person => Str; imperf_admirative: Number => Person => Str} ; -- 758
|
||||
oper Verb = {indicative: Tense => Number => Person => Str; imperative: Number => Str; participle: Str; pres_optative: Number => Person => Str; perf_optative: Number => Person => Str; pres_admirative: Number => Person => Str; imperf_admirative: Number => Person => Str} ; -- 758
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
|
||||
{ Indicative = table {
|
||||
{ indicative = table {
|
||||
Pres => table {
|
||||
Sg => table {
|
||||
P1 => f1 ;
|
||||
@@ -157,7 +157,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative = table {
|
||||
imperative = table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
|
||||
@@ -128,10 +128,8 @@ C1eC2aC3 = {C1 ="" ; C1C2="'"; C2C3 ="!"; C3="#"};
|
||||
peC1aC2C3 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
penC1aC2C3e = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};-- 3
|
||||
pteC1aC2C3u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||
pyeC1aC2C3 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pyeC1aC2C3u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||
|
||||
--Passive Jus_Imperat mkV3gdl
|
||||
@@ -343,7 +341,6 @@ leC1AC2aC3 = {C1 ="l" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
enC1AC2aC3 = { C1 = "(n" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
C1AC2aC3 = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
C1AC2aC3i = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="#"};
|
||||
C1AC2aC3u = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
||||
yC1AC2aC3 = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
tC1AC2aC3 = { C1 = "t" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
yC1AC2aC3u = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
||||
@@ -661,7 +658,7 @@ C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2yz
|
||||
@@ -701,7 +698,6 @@ C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
||||
|
||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
@@ -721,81 +717,12 @@ meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
||||
--Infinitve mkV2yz
|
||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
||||
|
||||
|
||||
--mkV2yz -- yz -- catch
|
||||
--Perf --
|
||||
C1AC2hu = {C1 ="" ; C1C2="!"; C2 ="h&"};
|
||||
C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2yz
|
||||
eC1C2alehu = { C1 = "ä" ; C1C2=""; C2 ="!l'h&"};
|
||||
enC1C2alen = { C1 = "än" ; C1C2=""; C2 ="!l'n"};
|
||||
teC1C2yaleh = { C1 = "t" ; C1C2=""; C2 ="!l'h"};
|
||||
teC1C2aleh = { C1 = "t" ; C1C2=""; C2 ="y!l'x"};
|
||||
teC1C2alachehu = { C1 = "t" ; C1C2=""; C2 ="!l!ch&"};
|
||||
yeC1C2al = { C1 = "y" ; C1C2=""; C2 ="!l"};
|
||||
teC1C2alech = { C1 = "t" ; C1C2=""; C2 ="!l'c"};
|
||||
yeC1C2alu = { C1 = "y" ; C1C2=""; C2 ="!l&"};
|
||||
|
||||
-- Cont -- mkV2yz
|
||||
eC1C2 = { C1 = "ä" ; C1C2=""; C2 =""};
|
||||
enC1C2 = { C1 = "än" ; C1C2=""; C2 =""};
|
||||
teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};3
|
||||
teC1C2u = { C1 = "t" ; C1C2=""; C2 ="&"};
|
||||
yeC1C2 = { C1 = "y" ; C1C2=""; C2 =""};
|
||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
yeC1C2u = { C1 = "y" ; C1C2=""; C2 ="&"};
|
||||
|
||||
|
||||
--Jus_Imperat mkV2yz
|
||||
leC1aC2a = {C1 ="l" ; C1C2="!"; C2 =""};
|
||||
enC1aC2a = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
C1aC2 = { C1 = "" ; C1C2="!"; C2 =""};
|
||||
C1aC2i = { C1 = "" ; C1C2="!"; C2 ="#"};
|
||||
C1eC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
yC1aC2a = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
tC1aC2a = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
yC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
--Gerund mkV2yz
|
||||
C1C2ie = {C1 ="" ; C1C2=""; C2 ="%"};
|
||||
C1C2en = { C1 = "" ; C1C2=""; C2 ="'n"};
|
||||
C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
||||
|
||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1C2iealehu = {C1 ="" ; C1C2=""; C2 ="%y!l'h&"};
|
||||
C1C2enal = { C1 = "" ; C1C2=""; C2 ="'n!l"};
|
||||
C1C2ekal = { C1 = "" ; C1C2=""; C2 ="'k!l"};
|
||||
C1C2eshal = { C1 = "" ; C1C2=""; C2 ="'x!l"};
|
||||
C1C2achehual = { C1 = "" ; C1C2=""; C2 ="!cX7l"};
|
||||
C1C2oal = { C1 = "" ; C1C2=""; C2 ="7l"};
|
||||
C1C2alech = { C1 = "" ; C1C2=""; C2="!l'c"};
|
||||
C1C2ewal = { C1 = "" ; C1C2=""; C2="'w!l"};
|
||||
|
||||
|
||||
--Infinitve mkV2yz
|
||||
meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
||||
|
||||
--Infinitve mkV2yz
|
||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
||||
|
||||
--nore -- nr -- live
|
||||
--Perf --
|
||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
||||
@@ -858,87 +785,12 @@ meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
||||
|
||||
|
||||
|
||||
|
||||
--nore -- nr -- live
|
||||
--Perf --
|
||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
||||
-- Imper -- mkV2nr
|
||||
eC1oC2alehu = { C1 = "ä" ; C1C2="/"; C2 ="!l'h&"};
|
||||
enC1oC2alen = { C1 = "än" ; C1C2="/"; C2 ="!l'n"};
|
||||
teC1oC2yaleh = { C1 = "t" ; C1C2="/"; C2 ="!l'h"};
|
||||
teC1oC2alesh = { C1 = "t" ; C1C2="/"; C2 ="y!l'x"};
|
||||
teC1oC2alachehu = { C1 = "t" ; C1C2="/"; C2 ="!l!ch&"};
|
||||
yeC1oC2al = { C1 = "y" ; C1C2="/"; C2 ="!l"};
|
||||
teC1oC2alech = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
||||
yeC1oC2alu = { C1 = "y" ; C1C2="/"; C2 ="!l&"};
|
||||
|
||||
-- Imper -- mkV2nr
|
||||
eC1oC2 = { C1 = "ä" ; C1C2="/"; C2 =""};
|
||||
enC1oC2 = { C1 = "än" ; C1C2="/"; C2 =""};
|
||||
teC1oC2 = { C1 = "t" ; C1C2="/"; C2 =""};
|
||||
teC1oC2i = { C1 = "t" ; C1C2="/"; C2 ="#"};
|
||||
teC1oC2u = { C1 = "t" ; C1C2="/"; C2 ="&"};
|
||||
yeC1oC2 = { C1 = "y" ; C1C2="/"; C2 =""};
|
||||
--teC1oC2 = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
||||
yeC1oC2u = { C1 = "y" ; C1C2="/"; C2 ="&"};
|
||||
|
||||
--Jus_Imperat mkV2nr
|
||||
leC1uC2 = {C1 ="l" ; C1C2="&"; C2 =""};
|
||||
enC1uC2 = { C1 = "än" ; C1C2="&"; C2 =""};
|
||||
C1uC2 = { C1 = "" ; C1C2="&"; C2 =""};
|
||||
C1uC2i = { C1 = "" ; C1C2="&"; C2 ="#"};
|
||||
C1uC2u = { C1 = "" ; C1C2="&"; C2 ="&"};
|
||||
yC1uC2 = { C1 = "y" ; C1C2="&"; C2 =""};
|
||||
tC1uC2 = { C1 = "t" ; C1C2="&"; C2 =""};
|
||||
yC1uC2u = { C1 = "y" ; C1C2="&"; C2 ="&"};
|
||||
|
||||
|
||||
|
||||
--Gerund mkV2nr
|
||||
C1oC2ie = {C1 ="" ; C1C2="/"; C2 ="%"};
|
||||
C1oC2en = { C1 = "" ; C1C2="/"; C2 ="'n"};
|
||||
C1oC2ek = { C1 = "" ; C1C2="/"; C2 ="'k"};
|
||||
C1oC2esh = { C1 = "" ; C1C2="/"; C2 ="'x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2="/"; C2 ="!ch&"};
|
||||
C1oC2o = { C1 = "" ; C1C2="/"; C2 ="/"};
|
||||
C1oC2A = { C1 = "" ; C1C2="/"; C2="!"};
|
||||
C1oC2ew = { C1 = "" ; C1C2="/"; C2="'w"};
|
||||
|
||||
--CompPer mkV2nr y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1oC2iealehu = {C1 ="" ; C1C2="/"; C2 ="%y!l'h& "};
|
||||
C1oC2enal = { C1 = "" ; C1C2="/"; C2 ="'n!l"};
|
||||
C1oC2ekal = { C1 = "" ; C1C2="/"; C2 ="'k!l"};
|
||||
C1oC2eshal = { C1 = "" ; C1C2="/"; C2 ="'x!l"};
|
||||
C1oC2achehual = { C1 = "" ; C1C2="/"; C2 ="!cX7l"};
|
||||
C1oC2oal = { C1 = "" ; C1C2="/"; C2 ="7l"};
|
||||
C1oC2Alech = { C1 = "" ; C1C2="/"; C2="!l'c"};
|
||||
C1oC2ewal = { C1 = "" ; C1C2="/"; C2="'w!l"};
|
||||
|
||||
--Infinitve mkV2nr
|
||||
meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
||||
|
||||
--Participle mkV2nr
|
||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
||||
|
||||
|
||||
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
||||
--Perf --
|
||||
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
||||
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
||||
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
||||
C1AC2esh = { C1 = "" ; C1C2="!"; C2 ="'x"};
|
||||
--C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
--C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
--C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
--C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2wN
|
||||
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
||||
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
||||
@@ -992,74 +844,6 @@ C1aC2tewal = { C1 = "" ; C1C2="!"; C2="t'w!l"};
|
||||
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
||||
--nore -- nr -- live
|
||||
|
||||
|
||||
|
||||
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
||||
--Perf --
|
||||
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
||||
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
||||
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
||||
C1AC2esh = { C1 = "" ; C1C2="!"; C2 ="'x"};
|
||||
--C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
--C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
--C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
--C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2wN
|
||||
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
||||
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
||||
teC1aC2yaleh = { C1 = "t" ; C1C2="!"; C2 ="!l'h"};
|
||||
teC1aC2alesh = { C1 = "t" ; C1C2="!"; C2 ="y!l'x"};
|
||||
teC1aC2alachehu = { C1 = "t" ; C1C2="!"; C2 ="!l!ch&"};
|
||||
yeC1aC2al = { C1 = "y" ; C1C2="!"; C2 ="!l"};
|
||||
teC1aC2alech = { C1 = "t" ; C1C2="!"; C2 ="!l'c"};
|
||||
yeC1aC2alu = { C1 = "y" ; C1C2="!"; C2 ="!l&"};
|
||||
|
||||
-- Cont -- mkV2wN
|
||||
eC1aC2 = { C1 = "ä" ; C1C2="!"; C2 =""};
|
||||
enC1aC2 = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
--teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
teC1aC2u = { C1 = "t" ; C1C2="!"; C2 ="&"};
|
||||
yeC1aC2 = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
--teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
yeC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
|
||||
--Jus_Imperat mkV2wN
|
||||
--leC1aC2a = {C1 ="l" ; C1C2="!"; C2 =""};
|
||||
--enC1aC2a = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
--C1aC2 = { C1 = "" ; C1C2="!"; C2 =""};
|
||||
--C1aC2i = { C1 = "" ; C1C2="!"; C2 ="#"};
|
||||
--C1eC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
--yC1aC2a = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
--tC1aC2a = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
--yC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
--Gerund mkV2wN
|
||||
C1aC2cie = {C1 ="" ; C1C2="!"; C2 ="c%"};
|
||||
C1aC2ten = { C1 = "" ; C1C2="!"; C2 ="t'n"};
|
||||
C1aC2tek = { C1 = "" ; C1C2="!"; C2 ="t'k"};
|
||||
C1aC2tesh = { C1 = "" ; C1C2="!"; C2 ="t'x"};
|
||||
C1aC2tachehu = { C1 = "" ; C1C2="!"; C2 ="t!ch&"};
|
||||
C1aC2to = { C1 = "" ; C1C2="!"; C2 ="t/"};
|
||||
C1aC2ta = { C1 = "" ; C1C2="!"; C2="t!"};
|
||||
C1aC2tew = { C1 = "" ; C1C2="!"; C2="t'w"};
|
||||
|
||||
--ComPer mkV2wN y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1aC2ciealehu = {C1 ="" ; C1C2="!"; C2 ="c%y!l'h&"};
|
||||
C1aC2tenal = { C1 = "" ; C1C2="!"; C2 ="t'n!l"};
|
||||
C1aC2tekal = { C1 = "" ; C1C2="!"; C2 ="t'k!l"};
|
||||
C1aC2teshal = { C1 = "" ; C1C2="!"; C2 ="t'x!l"};
|
||||
C1aC2tachehual = { C1 = "" ; C1C2="!"; C2 ="t!cX7l"};
|
||||
C1aC2toal = { C1 = "" ; C1C2="!"; C2 ="t7l"};
|
||||
C1aC2talech = { C1 = "" ; C1C2="!"; C2="t!l'c"};
|
||||
C1aC2tewal = { C1 = "" ; C1C2="!"; C2="t'w!l"};
|
||||
|
||||
--Infinitve mkV2wN
|
||||
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
||||
--nore -- nr -- live
|
||||
|
||||
|
||||
|
||||
|
||||
----------- This much is enough for the duo-radicals---
|
||||
--There are few verbs still remaining like the case of shete, hede , --washe, aye, ale , all need unique froms for them selves. I will get --back here later!!
|
||||
|
||||
@@ -1109,63 +893,8 @@ tC1eC2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
meC1C2et= {C1 ="m'" ; C1C2=""; C2 ="'t"};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------- This much is enough for the duo-radicals---
|
||||
--There are few verbs still remaining like the case of shete, hede , --washe, aye, ale , all need unique froms for them selves. I will get --back here later!!
|
||||
|
||||
--seTe -- st -- give
|
||||
--Perf --
|
||||
C1eC2hu = {C1 ="" ; C1C2="'"; C2 ="'h&"};
|
||||
C1eC2n = { C1 = "" ; C1C2="'"; C2 ="'n"};
|
||||
C1eC2k = { C1 = "" ; C1C2="'"; C2 ="'k"};
|
||||
C1eC2sh = { C1 = "" ; C1C2="'"; C2 ="'x"};
|
||||
C1eC2achehu = { C1 = "" ; C1C2 ="'"; C2 ="'ch&"};
|
||||
C1eC2a = { C1 = "" ; C1C2="'"; C2 ="'"};
|
||||
C1eC2ach = { C1 = "" ; C1C2="'"; C2 ="'c"};
|
||||
--C1eC2u = { C1 = "" ; C1C2="'"; C2 ="&"}; same as C1aC2u (bela)
|
||||
-- Imper -- mkV2sT
|
||||
--eC1eC2alehu = { C1 = "ä" ; C1C2="'"; C2 ="!l'h&"}; eC1aC2alehu
|
||||
--enC1eC2alen = { C1 = "än" ; C1C2="'"; C2 ="!l'n"};enC1aC2alen
|
||||
--teC1eC2yaleh = { C1 = "t" ; C1C2="'"; C2 ="!l'h"};teC1aC2yaleh
|
||||
--teC1eC2aleh = { C1 = "t" ; C1C2="'"; C2 ="y!l'x"};teC1aC2aleh
|
||||
--teC1eC2alachehu = { C1 = "t" ; C1C2="'"; C2 ="!l!ch&"};teC1aC2alachehu
|
||||
--yeC1eC2al = { C1 = "y" ; C1C2="'"; C2 ="!l"};yeC1aC2al
|
||||
--teC1eC2alech = { C1 = "t" ; C1C2="'"; C2 ="!l'c"};teC1aC2alech
|
||||
--yeC1eC2alu = { C1 = "y" ; C1C2="'"; C2 ="!l&"};yeC1aC2alu
|
||||
|
||||
--Jus_Imperat mkV2sT
|
||||
|
||||
leC1eC2 = {C1 ="l" ; C1C2=""; C2 =""};
|
||||
enC1eC2 = { C1 = "än" ; C1C2=""; C2 =""};
|
||||
C1C2 = { C1 = "" ; C1C2=""; C2 =""};
|
||||
C1eC2i = { C1 = "" ; C1C2=""; C2 ="#"};
|
||||
--C1eC2u = { C1 = "" ; C1C2=""; C2 ="&"}; C1C2u
|
||||
yC1eC2 = { C1 = "y" ; C1C2=""; C2 =""};
|
||||
tC1eC2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
--yC1eC2u = { C1 = "y" ; C1C2=""; C2 ="&"};yC1C2u
|
||||
|
||||
|
||||
--Gerund mkV2sT
|
||||
|
||||
--C1eC2ie = {C1 ="" ; C1C2="'"; C2 ="c%"}; C1aC2cie
|
||||
--C1eC2en = { C1 = "" ; C1C2="'"; C2 ="'n"};C1aC2ten
|
||||
--C1eC2ek = { C1 = "" ; C1C2="'"; C2 ="'k"}; C1aC2tek
|
||||
--C1eC2esh = { C1 = "" ; C1C2="'"; C2 ="'x"}; C1aC2tesh
|
||||
--C1eC2achehu = { C1 = "" ; C1C2="'"; C2 ="!ch&"};C1aC2tachehu
|
||||
--C1eC2o = { C1 = "" ; C1C2="'"; C2 ="/"};C1aC2to
|
||||
--C1eC2A = { C1 = "" ; C1C2="'"; C2="!"};C1aC2ta
|
||||
--C1eC2ew = { C1 = "" ; C1C2="'"; C2="'w"}; C1aC2tew
|
||||
--Infinitve mkV2sT
|
||||
meC1C2et= {C1 ="m'" ; C1C2=""; C2 ="'t"};
|
||||
|
||||
|
||||
|
||||
|
||||
---- Quadro_Radical
|
||||
|
||||
|
||||
--Starting with type Tri-Radical Roots
|
||||
-- Eg. dbdb - fight
|
||||
-- qzqz - freeze
|
||||
@@ -1238,152 +967,4 @@ meC1aC2C3aC4 = {C1 ="m'" ; C1C2="'"; C2C3 =""; C3C4="'"; C4= "" };
|
||||
--Participle mkV4dbdb
|
||||
C1eC2C3aC4i = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4="!"; C4= "#" };
|
||||
|
||||
|
||||
---- Quadro_Radical
|
||||
|
||||
|
||||
--Starting with type Tri-Radical Roots
|
||||
-- Eg. dbdb - fight
|
||||
-- qzqz - freeze
|
||||
-- wrwr - throw
|
||||
-- tnfs - breath
|
||||
|
||||
--Perf --
|
||||
C1aC2aC3aC4hu = {C1 ="" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "h&" };
|
||||
C1aC2aC3aC4n = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "n" };
|
||||
C1aC2aC3aC4k = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "k" };
|
||||
C1aC2aC3aC4sh = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "x" };
|
||||
C1aC2aC3aC4achehu = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "!ch&" };
|
||||
C1aC2aC3aC4a = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "'" };
|
||||
C1aC2aC3aC4ech = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "'c" };
|
||||
C1aC2aC3aC4u = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "&" };
|
||||
--Imper --mkV4dbdb
|
||||
eC1aC2aC3C4alehu = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'h&" };
|
||||
enC1aC2aC3C4alen = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'n" };
|
||||
teC1aC2aC3C4yaleh = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'h" };
|
||||
teC1aC2aC3C4aleh = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "y!l'x" };
|
||||
teC1aC2aC3C4alachehu = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l!ch&" };
|
||||
yeC1aC2aC3C4al = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l" };
|
||||
teC1aC2aC3C4alech = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'c" };
|
||||
yeC1aC2aC3C4alu = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l&" };
|
||||
|
||||
--Cont --mkV4dbdb
|
||||
eC1aC2aC3C4 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
enC1aC2aC3C4 = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
teC1aC2aC3C4 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
teC1aC2aC3C4i = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "#" };
|
||||
teC1aC2aC3C4u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "&" };
|
||||
yeC1aC2aC3C4 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
--teC1aC2aC3C4 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
yeC1aC2aC3C4u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "&" };
|
||||
|
||||
|
||||
|
||||
--Jus_Imperat mkV4dbdb
|
||||
leC1aC2C3C4 = {C1 ="l" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
enC1aC2C3C4 = { C1 = "än" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
C1aC2C3C4 = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
C1aC2C3C4i = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "#" };
|
||||
C1aC2C3C4u = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "&" };
|
||||
yC1aC2C3C4 = { C1 = "y" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
tC1aC2C3C4 = { C1 = "t" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
yC1aC2C3C4u = { C1 = "y" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "&" };
|
||||
--Gerund mkV4dbdb
|
||||
C1aC2C3C4ie = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "%" };
|
||||
C1aC2C3C4en = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'n" };
|
||||
C1aC2C3C4ek = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'k" };
|
||||
C1aC2C3C4esh = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'x" };
|
||||
C1aC2C3C4achehu = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!ch&" };
|
||||
C1aC2C3C4o = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "/" };
|
||||
C1aC2C3C4a = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!" };
|
||||
C1aC2C3C4ew = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'w" };
|
||||
|
||||
--CompPerf mkV4dbdb y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1aC2C3C4iealehu = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "%y!l'h&" };
|
||||
C1aC2C3C4enal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'n!l" };
|
||||
C1aC2C3C4ekal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'k!l" };
|
||||
C1aC2C3C4eshal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'x!l" };
|
||||
C1aC2C3C4achehual = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!cX7l" };
|
||||
C1aC2C3C4oal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "7l" };
|
||||
C1aC2C3C4alech = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!l'c" };
|
||||
C1aC2C3C4ewal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'w!l" };
|
||||
|
||||
--Infinitve mkV4dbdb
|
||||
meC1aC2C3aC4 = {C1 ="m'" ; C1C2="'"; C2C3 =""; C3C4="'"; C4= "" };
|
||||
|
||||
--Participle mkV4dbdb
|
||||
C1eC2C3aC4i = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4="!"; C4= "#" };
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{-
|
||||
resource PatternsAmh = {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
oper
|
||||
--perf
|
||||
C1aC2aC3ku = {C1 ="" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኩ"};
|
||||
C1aC2aC3n = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ን"};
|
||||
C1aC2aC3k = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ክ"};
|
||||
C1aC2aC3sh = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ሽ"};
|
||||
C1aC2aC3achehu = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="አችሁ"};
|
||||
C1aC2aC3e = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኧ"};
|
||||
C1aC2aC3ech = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኧች"};
|
||||
C1aC2aC3u = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኡ"};
|
||||
|
||||
--imper
|
||||
eC1aC2C3alehu = { C1 = "እ" ; C1C2="ኧ"; C2C3 =""; C3="አለሁ"};
|
||||
enC1aC2C3alen = { C1 = "እን" ; C1C2="ኧ"; C2C3 =""; C3="አለን"};
|
||||
teC1aC2C3yaleh = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አለህ"};
|
||||
teC1aC2C3aleh = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="ያለሽ"};
|
||||
teC1aC2C3alachehu = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አላችሁ"};
|
||||
yeC1aC2C3al = { C1 = "ይ" ; C1C2="ኧ"; C2C3 =""; C3="አል"};
|
||||
teC1aC2C3alech = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አለች"};
|
||||
yeC1aC2C3alu = { C1 = "ይ" ; C1C2="ኧ"; C2C3 =""; C3="አሉ"};
|
||||
|
||||
|
||||
}
|
||||
-}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,12 +22,9 @@ concrete PhraseAmh of Phrase = CatAmh ** open
|
||||
UttIP ip = ip ; --- Acc also
|
||||
UttVP vp = {s = vp.obj.s ++ vp.inf} ;
|
||||
UttIAdv iadv = iadv ;
|
||||
UttCN n = {s = n.s ! Sg ! Indef!Nom} ;
|
||||
UttCard n = {s = n.s ! Masc!Sg!Indef!Nom} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s!pol.p!Masc!Sg};
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p! Masc! Pl} ; --- TO DO
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc!Pl} ; -- TO DO ---
|
||||
UttQS qs = {s = qs.s } ; -- TO DO
|
||||
{-
|
||||
|
||||
PConjConj conj = {s = conj.s2} ; ---
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
concrete AdjectiveHye of Adjective = CatHye ** {
|
||||
concrete AdjectiveHye of Adjective = CatHye ** open ResHye, Prelude in {
|
||||
lin
|
||||
PositA a = a ;
|
||||
AdAP ada ap = {
|
||||
s = \\sp,c,num => ada.s ++ ap.s ! sp ! c ! num;
|
||||
isPre = ap.isPre
|
||||
} ;
|
||||
PositA a = {
|
||||
s = \\sp,c,num =>
|
||||
case <sp,c> of {
|
||||
<Def,Nom> => a.def_nom ! num ;
|
||||
<Def,Dat> => a.def_dat ! num ;
|
||||
<Poss P1,_> => a.poss1 ! c ! num ;
|
||||
<Poss P2,_> => a.poss2 ! c ! num ;
|
||||
_ => a.s ! c ! num
|
||||
} ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
6
src/armenian/AdverbHye.gf
Normal file
6
src/armenian/AdverbHye.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete AdverbHye of Adverb = CatHye ** open Prelude,ResHye in {
|
||||
lin PrepNP p np = {s = case p.isPre of {
|
||||
False => np.s ! p.c ++ p.s;
|
||||
True => p.s ++ np.s ! p.c
|
||||
}} ;
|
||||
}
|
||||
@@ -1,16 +1,63 @@
|
||||
concrete CatHye of Cat = CommonX ** open ResHye in {
|
||||
|
||||
lincat V = Verb ;
|
||||
lincat VV,VS,VQ,VA = Verb ;
|
||||
lincat V2 = Verb ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat CN = Noun ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat AP = Adj ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
concrete CatHye of Cat = CommonX ** open Prelude,ResHye in {
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat ACard = {s : Str} ;
|
||||
lincat AP = {s : Species => Case => Number => Str; isPre : Bool} ;
|
||||
lincat CN = {s : Species => Case => Number => Str} ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {s : Str;
|
||||
conditional : Aspect => Number => Str;
|
||||
converb : {imperfective : Str; futCon1 : Str;
|
||||
futCon2 : Str; negative : Str;
|
||||
perfective : Str; simultaneous : Str};
|
||||
passive : Str; past : Person => Number => Str;
|
||||
participle : PartType => Str;
|
||||
subjunctive : Aspect => Number => Str} ;
|
||||
lincat ClSlash = {s : Str} ;
|
||||
lincat Comp = {s : Str} ;
|
||||
lincat Conj = {s : Str} ;
|
||||
lincat DAP = {s : Str} ;
|
||||
lincat Decimal = {s : Str} ;
|
||||
lincat Det = {s : Str; n : Number; sp : Species} ;
|
||||
lincat Digits = {s : Str} ;
|
||||
lincat GN = {s : Str} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat NP = {s : Case => Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Prep = Compl ** {isPre : Bool} ;
|
||||
lincat Pron = {s : Str; empty : Str; a : Agr} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Str; sp : Species} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat SN = {s : Str} ;
|
||||
lincat SSlash = {s : Str} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat V = Verb ;
|
||||
lincat VV,VS,VQ,VA = Verb ;
|
||||
lincat V2 = Verb ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat VP = {s : Str;
|
||||
conditional : Aspect => Person => Number => Str;
|
||||
converb : {imperfective : Str; futCon1 : Str; futCon2 : Str;
|
||||
negative : Str; perfective : Str; simultaneous : Str};
|
||||
imperative : Number => Str; passive : Str;
|
||||
past : Person => Number => Str; participle : PartType => Str;
|
||||
subjunctive : Aspect => Person => Number => Str} ;
|
||||
lincat VPSlash = Verb ** {c2 : Compl} ;
|
||||
}
|
||||
|
||||
@@ -15,50 +15,50 @@ lin
|
||||
paragraph (x.s) ++
|
||||
heading1 "Converb" ++
|
||||
frameTable (
|
||||
tr (th "Imperfective" ++ td (x.Converb.Imperfective)) ++
|
||||
tr (th "Simultaneous" ++ td (x.Converb.Simultaneous)) ++
|
||||
tr (th "Perfective" ++ td (x.Converb.Perfective)) ++
|
||||
tr (th "Futute I" ++ td (x.Converb.FutCon1)) ++
|
||||
tr (th "Futute II" ++ td (x.Converb.FutCon2)) ++
|
||||
tr (th "Connegative" ++ td (x.Converb.Negative))) ++
|
||||
tr (th "Imperfective" ++ td (x.converb.imperfective)) ++
|
||||
tr (th "Simultaneous" ++ td (x.converb.simultaneous)) ++
|
||||
tr (th "Perfective" ++ td (x.converb.perfective)) ++
|
||||
tr (th "Futute I" ++ td (x.converb.futCon1)) ++
|
||||
tr (th "Futute II" ++ td (x.converb.futCon2)) ++
|
||||
tr (th "Connegative" ++ td (x.converb.negative))) ++
|
||||
heading1 "Passive" ++
|
||||
paragraph x.Passive ++
|
||||
paragraph x.passive ++
|
||||
heading1 "Participle" ++
|
||||
frameTable (
|
||||
tr (th "Resultative" ++ td (x.Participle ! Resultative)) ++
|
||||
tr (th "Subject" ++ td (x.Participle ! Subject))) ++
|
||||
tr (th "Resultative" ++ td (x.participle ! Resultative)) ++
|
||||
tr (th "Subject" ++ td (x.participle ! Subject))) ++
|
||||
heading1 "Past" ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "P1" ++ td (x.Past ! P1 ! Sg) ++ td (x.Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Past ! P2 ! Sg) ++ td (x.Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Past ! P3 ! Sg) ++ td (x.Past ! P3 ! Pl))) ++
|
||||
tr (th "P1" ++ td (x.past ! P1 ! Sg) ++ td (x.past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.past ! P2 ! Sg) ++ td (x.past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.past ! P3 ! Sg) ++ td (x.past ! P3 ! Pl))) ++
|
||||
heading1 "Subjunctive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||
th "P1" ++ td (x.Subjunctive ! Perfect ! P1 ! Sg) ++ td (x.Subjunctive ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Subjunctive ! Perfect ! P2 ! Sg) ++ td (x.Subjunctive ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Subjunctive ! Perfect ! P3 ! Sg) ++ td (x.Subjunctive ! Perfect ! P3 ! Pl)) ++
|
||||
th "P1" ++ td (x.subjunctive ! Perfect ! P1 ! Sg) ++ td (x.subjunctive ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.subjunctive ! Perfect ! P2 ! Sg) ++ td (x.subjunctive ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.subjunctive ! Perfect ! P3 ! Sg) ++ td (x.subjunctive ! Perfect ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Non_Past" ++
|
||||
th "P1" ++ td (x.Subjunctive ! Non_Past ! P1 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Subjunctive ! Non_Past ! P2 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Subjunctive ! Non_Past ! P3 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P3 ! Pl))) ++
|
||||
th "P1" ++ td (x.subjunctive ! Non_Past ! P1 ! Sg) ++ td (x.subjunctive ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.subjunctive ! Non_Past ! P2 ! Sg) ++ td (x.subjunctive ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.subjunctive ! Non_Past ! P3 ! Sg) ++ td (x.subjunctive ! Non_Past ! P3 ! Pl))) ++
|
||||
heading1 "Conditional" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||
th "P1" ++ td (x.Conditional ! Perfect ! P1 ! Sg) ++ td (x.Conditional ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Conditional ! Perfect ! P2 ! Sg) ++ td (x.Conditional ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Conditional ! Perfect ! P3 ! Sg) ++ td (x.Conditional ! Perfect ! P3 ! Pl)) ++
|
||||
th "P1" ++ td (x.conditional ! Perfect ! P1 ! Sg) ++ td (x.conditional ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.conditional ! Perfect ! P2 ! Sg) ++ td (x.conditional ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.conditional ! Perfect ! P3 ! Sg) ++ td (x.conditional ! Perfect ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Non_Past" ++
|
||||
th "P1" ++ td (x.Conditional ! Non_Past ! P1 ! Sg) ++ td (x.Conditional ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Conditional ! Non_Past ! P2 ! Sg) ++ td (x.Conditional ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Conditional ! Non_Past ! P3 ! Sg) ++ td (x.Conditional ! Non_Past ! P3 ! Pl))) ++
|
||||
th "P1" ++ td (x.conditional ! Non_Past ! P1 ! Sg) ++ td (x.conditional ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.conditional ! Non_Past ! P2 ! Sg) ++ td (x.conditional ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.conditional ! Non_Past ! P3 ! Sg) ++ td (x.conditional ! Non_Past ! P3 ! Pl))) ++
|
||||
heading1 "Imperative" ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ th "Pl") ++
|
||||
tr (td (x.Imperative_Jussive ! Sg) ++ td (x.Imperative_Jussive ! Pl))) ;
|
||||
tr (td (x.imperative ! Sg) ++ td (x.imperative ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
|
||||
@@ -2,5 +2,9 @@ concrete GrammarHye of Grammar =
|
||||
TenseX,
|
||||
PhraseHye,
|
||||
NounHye,
|
||||
AdjectiveHye ** {
|
||||
}
|
||||
VerbHye,
|
||||
AdjectiveHye,
|
||||
AdverbHye,
|
||||
SentenceHye,
|
||||
StructuralHye ** {
|
||||
}
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
concrete LexiconHye of Lexicon = CatHye ** open ParadigmsHye in {
|
||||
}
|
||||
lin apple_N = mkN001 "խնձոր" ;
|
||||
lin man_N = mkN047 "տղամարդ" ;
|
||||
lin woman_N = mkN034 "կին" ;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,35 @@
|
||||
concrete NounHye of Noun = CatHye ** {
|
||||
lin
|
||||
UseN n = n ;
|
||||
concrete NounHye of Noun = CatHye ** open ResHye in {
|
||||
lin AdjCN ap cn = {
|
||||
s = \\sp,c,n =>
|
||||
case ap.isPre of {
|
||||
True => ap.s ! Indef ! Nom ! Sg ++ cn.s ! sp ! c ! n;
|
||||
False => cn.s ! sp ! c ! n ++ ap.s ! Indef ! Nom ! Sg
|
||||
}
|
||||
} ;
|
||||
lin AdvCN cn adv = {
|
||||
s = \\sp,c,num => adv.s ++ cn.s ! sp ! c ! num
|
||||
} ;
|
||||
lin DefArt = {s = []; sp = Def} ;
|
||||
lin DetCN det cn = {s = \\c => det.s ++ cn.s ! det.sp ! c ! det.n;
|
||||
a = {n=det.n; p=P3}} ;
|
||||
lin DetQuant quant num = {s = quant.s ++ num.s; n = num.n; sp=quant.sp} ;
|
||||
lin IndefArt = {s = "մի"; sp = Indef} ;
|
||||
lin NumPl = {s = []; n = Pl} ;
|
||||
lin NumSg = {s = []; n = Sg} ;
|
||||
lin MassNP cn = {
|
||||
s = \\c => cn.s ! Indef ! c ! Sg;
|
||||
a = {n=Sg; p=P3}
|
||||
} ;
|
||||
lin PossPron pron = {s = pron.empty; sp = Poss pron.a.p} ;
|
||||
lin UseN n = {
|
||||
s = \\sp,c,num =>
|
||||
case <sp,c> of {
|
||||
<Def,Nom> => n.def_nom ! num ;
|
||||
<Def,Dat> => n.def_dat ! num ;
|
||||
<Poss P1,_> => n.poss1 ! c ! num ;
|
||||
<Poss P2,_> => n.poss2 ! c ! num ;
|
||||
_ => n.s ! c ! num
|
||||
}
|
||||
} ;
|
||||
lin UsePron pron = {s = \\c => pron.s; a=pron.a} ;
|
||||
}
|
||||
|
||||
@@ -468,16 +468,19 @@ oper
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Dat} ;
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Dat; isPre=False} ;
|
||||
|
||||
singular : Number = Sg ;
|
||||
plural : Number = Pl ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ;
|
||||
mkDet : Str -> Number -> Det = \s,n -> lin Det {s=s; n=n; sp=Indef} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
@@ -488,4 +491,10 @@ oper
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
||||
|
||||
mkPron : Str -> Number -> Person -> Pron = \s,n,p ->
|
||||
lin Pron {
|
||||
s = s ;
|
||||
empty = [] ;
|
||||
a = {n = n; p = p}
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
resource ResHye = {
|
||||
resource ResHye = ParamX ** {
|
||||
|
||||
param Aspect = Non_Past | Perfect ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
||||
param PartType = Resultative | Subject ;
|
||||
oper Verb = {s: Str; Causative: Str; Conditional: Aspect => Person => Number => Str; Converb: {Imperfective: Str; FutCon1: Str; FutCon2: Str; Negative: Str; Perfective: Str; Simultaneous: Str}; Imperative_Jussive: Number => Str; Passive: Str; Past: Person => Number => Str; Participle: PartType => Str; Subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper Verb = {s: Str; causative: Str; conditional: Aspect => Person => Number => Str; converb: {imperfective: Str; futCon1: Str; futCon2: Str; negative: Str; perfective: Str; simultaneous: Str}; imperative: Number => Str; passive: Str; past: Person => Number => Str; participle: PartType => Str; subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43 ->
|
||||
{ s = f1 ;
|
||||
Causative = f2 ;
|
||||
Conditional = table {
|
||||
causative = f2 ;
|
||||
conditional = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
@@ -40,19 +38,19 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Converb = { Imperfective = f15 ;
|
||||
FutCon1 = f16 ;
|
||||
FutCon2 = f17 ;
|
||||
Negative = f18 ;
|
||||
Perfective = f19 ;
|
||||
Simultaneous = f20
|
||||
converb = { imperfective = f15 ;
|
||||
futCon1 = f16 ;
|
||||
futCon2 = f17 ;
|
||||
negative = f18 ;
|
||||
perfective = f19 ;
|
||||
simultaneous = f20
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
imperative = table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Passive = f23 ;
|
||||
Past = table {
|
||||
passive = f23 ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => f24 ;
|
||||
Pl => f25
|
||||
@@ -66,11 +64,11 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
Pl => f29
|
||||
}
|
||||
} ;
|
||||
Participle = table {
|
||||
participle = table {
|
||||
Resultative => f30 ;
|
||||
Subject => f31
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
subjunctive = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f32 ;
|
||||
@@ -102,7 +100,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
param Species = Indef | Def | Poss Person ;
|
||||
oper Agr = {n : Number; p : Person} ;
|
||||
oper Noun = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 4880
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 ->
|
||||
|
||||
14
src/armenian/SentenceHye.gf
Normal file
14
src/armenian/SentenceHye.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in {
|
||||
lin PredVP np vp = {s = np.s ! Nom ++ vp.s;
|
||||
conditional = \\a,n => np.s ! Nom ++ vp.conditional ! a ! P3 ! n;
|
||||
converb = {imperfective = np.s ! Nom ++ vp.converb.imperfective;
|
||||
futCon1 = np.s ! Nom ++ vp.converb.futCon1;
|
||||
futCon2 = np.s ! Nom ++ vp.converb.futCon2;
|
||||
negative = np.s ! Nom ++ vp.converb.negative;
|
||||
perfective = np.s ! Nom ++ vp.converb.perfective;
|
||||
simultaneous = np.s ! Nom ++ vp.converb.simultaneous};
|
||||
passive = np.s ! Nom ++ vp.passive;
|
||||
past = \\_,n => np.s ! Nom ++ vp.past ! P3 ! n;
|
||||
participle = \\p => np.s ! Nom ++ vp.participle ! p;
|
||||
subjunctive = \\a,n => np.s ! Nom ++ vp.subjunctive ! a ! P3 ! n} ;
|
||||
}
|
||||
8
src/armenian/StructuralHye.gf
Normal file
8
src/armenian/StructuralHye.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
concrete StructuralHye of Structural = CatHye ** open ResHye, ParadigmsHye in {
|
||||
lin i_Pron = mkPron "ես" Sg P1 ;
|
||||
lin youSg_Pron = mkPron "դու" Sg P2 ;
|
||||
lin he_Pron, she_Pron, it_Pron = mkPron "նա" Sg P3 ;
|
||||
lin we_Pron = mkPron "մեք" Pl P1 ;
|
||||
lin youPl_Pron = mkPron "դուք" Pl P2 ;
|
||||
lin they_Pron = mkPron "նոքա" Pl P3 ;
|
||||
}
|
||||
35
src/armenian/VerbHye.gf
Normal file
35
src/armenian/VerbHye.gf
Normal file
@@ -0,0 +1,35 @@
|
||||
concrete VerbHye of Verb = CatHye ** open Prelude,ResHye in {
|
||||
lin AdvVP vp adv = {s = adv.s ++ vp.s;
|
||||
conditional = \\a,p,n => adv.s ++ vp.conditional ! a ! p ! n;
|
||||
converb = {imperfective = adv.s ++ vp.converb.imperfective;
|
||||
futCon1 = adv.s ++ vp.converb.futCon1;
|
||||
futCon2 = adv.s ++ vp.converb.futCon2;
|
||||
negative = adv.s ++ vp.converb.negative;
|
||||
perfective = adv.s ++ vp.converb.perfective;
|
||||
simultaneous = adv.s ++ vp.converb.simultaneous};
|
||||
imperative = \\n => vp.imperative ! n ++ adv.s;
|
||||
passive = adv.s ++ vp.passive;
|
||||
past = \\p,n => adv.s ++ vp.past ! p ! n;
|
||||
participle = \\p => adv.s ++ vp.participle ! p;
|
||||
subjunctive = \\a,p,n => adv.s ++ vp.subjunctive ! a ! p ! n} ;
|
||||
lin ComplSlash vp np = {s = vp.s ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
conditional = \\a,p,n => vp.conditional ! a ! p ! n
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
converb = {imperfective = vp.converb.imperfective
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
futCon1 = vp.converb.futCon1 ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
futCon2 = vp.converb.futCon2 ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
negative = vp.converb.negative ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
perfective = vp.converb.perfective
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
simultaneous = vp.converb.simultaneous
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c};
|
||||
imperative = \\n => vp.imperative ! n ++ vp.c2.s ++ np.s ! Nom;
|
||||
passive = vp.passive ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
past = \\p,n => vp.past ! p ! n ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
participle = \\p => vp.participle ! p ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
subjunctive = \\a,p,n => vp.subjunctive ! a ! p ! n
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c} ;
|
||||
lin SlashV2a v = v ;
|
||||
lin UseV v = v ;
|
||||
}
|
||||
@@ -139,9 +139,6 @@ lin
|
||||
|
||||
SubjunctRelCN cn rs = RelCN cn rs ; -- no difference from indicative
|
||||
|
||||
lincat
|
||||
X = {s : Str} ;
|
||||
|
||||
lin
|
||||
UseComp_estar = UseComp ;
|
||||
UseComp_ser = UseComp ;
|
||||
|
||||
@@ -39,9 +39,9 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
|
||||
DetQuant quant num = {
|
||||
s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom;
|
||||
sp = \\g,hasAdj,c => case <num.hasCard,num.n> of {
|
||||
<False,Sg> => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
||||
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
|
||||
sp = \\g,hasAdj,c => case num.hasCard of {
|
||||
False => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
||||
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
|
||||
} ;
|
||||
n = num.n ;
|
||||
hasNum = num.hasCard
|
||||
|
||||
@@ -10,7 +10,11 @@ lincat
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s1 = heading1 ("Noun" ++ case x.g of {
|
||||
Neuter=> "(neuter)";
|
||||
Masc => "(masc)";
|
||||
Fem => "(fem)"
|
||||
}) ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Indef" ++ th "Def") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
@@ -30,17 +34,17 @@ lin
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neutr") ++
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neuter") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neutr ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neutr ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neutr ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neutr ! Sg ! Gen)) ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neuter ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neuter ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neuter ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neuter ! Sg ! Gen)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pl" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neutr ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neutr ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neutr ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neutr ! Pl ! Gen))) ;
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neuter ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neuter ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neuter ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neuter ! Pl ! Gen))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,10 +3,10 @@ resource ResFao = {
|
||||
param Species = Indef | Def ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Acc | Dat | Gen ;
|
||||
param Gender = Neutr | Fem | Masc ;
|
||||
oper Noun = {s: Species => Number => Case => Str} ; -- 2135
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 ->
|
||||
param Gender = Masc | Fem | Neuter ;
|
||||
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
||||
{ s = table {
|
||||
Indef => table {
|
||||
Sg => table {
|
||||
@@ -36,7 +36,8 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
Gen => f16
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
@@ -72,7 +73,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||
Gen => f16
|
||||
}
|
||||
} ;
|
||||
Neutr => table {
|
||||
Neuter=> table {
|
||||
Sg => table {
|
||||
Nom => f17 ;
|
||||
Acc => f18 ;
|
||||
|
||||
@@ -670,31 +670,6 @@ resource ResGre = ParamX ** open Prelude in {
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
mkNoun_anthropos : (s1,_ : Str) -> Gender -> Noun =
|
||||
\anthropos, anthropon, g ->
|
||||
let
|
||||
anthrop = Predef.tk 2 anthropos ;
|
||||
anthrOp = Predef.tk 2 anthropon ;
|
||||
in {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Nom => anthropos ;
|
||||
Gen|CPrep P_Dat => anthrOp + "ου" ;
|
||||
Acc |CPrep P_se |CPrep PNul => anthrop + "ο";
|
||||
Vocative => anthrop + "ε"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom | Vocative=> anthrop + "οι" ;
|
||||
Gen |CPrep P_Dat=> anthropon ;
|
||||
Acc |CPrep P_se |CPrep PNul => anthrOp + "ους"
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
----------------Neuter nouns in -ς , with stress movement,syllabic augmentation, irregular (φως, γεγονός, ημίφως) --------------
|
||||
mkNoun_fws: (s1,_ : Str) -> Gender -> Noun =
|
||||
\fws, fwtos, g ->
|
||||
|
||||
@@ -72,9 +72,7 @@ taC1C2eC3o = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="ו"};
|
||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
||||
|
||||
yaC1C2aC3 = { C1 = "י" ; C1C2=""; C2C3 =""; C3=""};
|
||||
taC1C2aC3 = { C1 = "ת" ; C1C2=""; C2C3 =""; C3=""};
|
||||
yaC1C2aC3u = { C1 = "י" ; C1C2=""; C2C3 =""; C3="ו"};
|
||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
||||
|
||||
|
||||
C1uC2aC3 = { C1 = "" ; C1C2="ו"; C2C3 =""; C3=""};
|
||||
|
||||
@@ -1,13 +1,69 @@
|
||||
concrete CatKaz of Cat = CommonX ** open ResKaz in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat A = {s : Str} ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
concrete CatKaz of Cat = CommonX ** open Prelude,ResKaz in {
|
||||
lincat A = {s : Str} ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat ACard = {s : Str} ;
|
||||
lincat AP = {s : Str} ;
|
||||
lincat CN = {s : Case => Str} ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {infinitive : Case => Str} ;
|
||||
lincat ClSlash = {s : Str} ;
|
||||
lincat Comp = {s : Str} ;
|
||||
lincat Conj = {s : Str} ;
|
||||
lincat DAP = {s : Str} ;
|
||||
lincat Decimal = {s : Str} ;
|
||||
lincat Det = {s : Str; n : Number} ;
|
||||
lincat Digits = {s : Str} ;
|
||||
lincat GN = {s : Str} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str} ;
|
||||
lincat N2 = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str; c2 : {s : Str}} ;
|
||||
lincat N3 = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str; c2 : {s : Str};
|
||||
c3 : {s : Str}} ;
|
||||
lincat NP = {s : Case => Str} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat Pron = {s : Str} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Str} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat SN = {s : Str} ;
|
||||
lincat SSlash = {s : Str} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat V = Verb ;
|
||||
lincat VV,VS,VQ,VA = Verb ;
|
||||
lincat V2 = Verb ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat VP = {infinitive : Case => Str;
|
||||
indicative : {fut : Case => Str;
|
||||
pres : {progressive : Polarity => Case => Str;
|
||||
noAspect : Polarity => Case => Str};
|
||||
past : {perfect : Polarity => Case => Str;
|
||||
progressive : Polarity => Case => Str;
|
||||
noAspect : Polarity => Case => Str}};
|
||||
subjunctive : Person => Case => Str} ;
|
||||
lincat VPSlash = {infinitive : Str;
|
||||
indicative : {fut : Str;
|
||||
pres : {progressive : Polarity => Person => Number => Str;
|
||||
noAspect : Polarity => Person => Number => Str};
|
||||
past : {perfect : Polarity => Person => Number => Str;
|
||||
progressive : Polarity => Person => Number => Str;
|
||||
noAspect : Polarity => Person => Number => Str}};
|
||||
imperative : Polarity => Formality => Number => Str;
|
||||
subjunctive : Person => Number => Str} ;
|
||||
}
|
||||
|
||||
@@ -34,118 +34,118 @@ lin InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S,
|
||||
InflectionVQ, InflectionVA = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading2 "Infinitive" ++ paragraph (x.Infinitive) ++
|
||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.Indicative.Fut)) ++
|
||||
s2=heading2 "Infinitive" ++ paragraph (x.infinitive) ++
|
||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.indicative.Fut)) ++
|
||||
heading2 "Present"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Present Progressive"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Sg))++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P1 ! Sg))++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Perfect" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Progressive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.imperative ! Pos ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pos ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Pos ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pos ! Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.imperative ! Neg ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Neg ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Neg ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Neg ! Formal ! Pl))) ++
|
||||
heading2 "Subjunctive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Subjunctive ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Subjunctive ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P3 ! Pl))) ;
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.subjunctive ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.subjunctive ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.subjunctive ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.subjunctive ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P3 ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -81,12 +81,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str
|
||||
|
||||
|
||||
param Polarity = Pos | Neg ;
|
||||
oper Verb = {Infinitive: Str; Indicative: {Fut: Str; Pres: {Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}; Past: {Perfect: Polarity => Person => Number => Str; Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}}; Imperative_Jussive: Polarity => Formality => Number => Str; Subjunctive: Person => Number => Str} ; -- 113
|
||||
oper Verb = {infinitive: Str; indicative: {fut: Str; pres: {progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}; past: {perfect: Polarity => Person => Number => Str; progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}}; imperative: Polarity => Formality => Number => Str; subjunctive: Person => Number => Str} ; -- 113
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65,f66,f67,f68,f69,f70,f71,f72,f73,f74,f75,f76,f77,f78,f79,f80,f81,f82,f83,f84,f85,f86,f87,f88,f89,f90,f91,f92,f93,f94,f95,f96,f97,f98 ->
|
||||
{ Infinitive = f1 ;
|
||||
Indicative = { Fut = f2 ;
|
||||
Pres = { Progressive = table {
|
||||
{ infinitive = f1 ;
|
||||
indicative = { fut = f2 ;
|
||||
pres = { progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
@@ -163,7 +163,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Past = { Perfect = table {
|
||||
past = { perfect = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f35 ;
|
||||
@@ -201,7 +201,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Progressive = table {
|
||||
progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f51 ;
|
||||
@@ -279,7 +279,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
imperative = table {
|
||||
Pos => table {
|
||||
Informal => table {
|
||||
Sg => f83 ;
|
||||
@@ -301,7 +301,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
subjunctive = table {
|
||||
P1 => table {
|
||||
Sg => f91 ;
|
||||
Pl => f92
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
concrete AdjectiveMkd of Adjective = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin AdAP a ap = {s = \\s,g => a.s ++ ap.s ! s ! g;
|
||||
isPre = ap.isPre} ;
|
||||
lin AdjOrd o = {s = o.s; isPre = False} ;
|
||||
lin AdvAP ap adv = {
|
||||
s = \\s,g => ap.s ! s ! g ++ adv.s;
|
||||
isPre = False
|
||||
} ;
|
||||
lin CAdvAP c ap np = {s = \\s,g => c.s
|
||||
++ ap.s ! s ! g ++ np.s ! RSubj;
|
||||
isPre = ap.isPre} ;
|
||||
lin ComparA a np = {s = \\s,g => "по" ++ BIND ++ a.s ! s ! g ++ "од" ++ np.s ! RPrep;
|
||||
isPre = False} ;
|
||||
lin ComplA2 a2 np = {s = \\s,g => a2.s ! s ! g ++ a2.c2.s ++ np.s ! RObj a2.c2.c;
|
||||
isPre = False} ;
|
||||
lin PositA a = a ** {isPre = True} ;
|
||||
lin ReflA2 a2 = {s = \\s,g => a2.s ! s ! g; isPre = False} ;
|
||||
lin SentAP ap sc = {s = \\s,g => ap.s ! s ! g ++ sc.s;
|
||||
isPre = ap.isPre} ;
|
||||
lin UseA2 a2 = {s = a2.s; isPre = True} ;
|
||||
lin UseComparA a = {s = \\s,g => "по" ++ BIND ++ a.s ! s ! g; isPre = True} ;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
concrete AdverbMkd of Adverb = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdAdv a a2 = {s = a.s ++ a2.s} ;
|
||||
lin AdnCAdv c = {s = c.s} ;
|
||||
lin ComparAdvAdj c a np = {s = c.s
|
||||
++ a.s ! Indef ! np.a.g ++ np.s ! RSubj} ;
|
||||
lin ComparAdvAdjS c a s = {s = c.s
|
||||
++ a.s ! Indef ! GSg Masc ++ s.s} ;
|
||||
lin PositAdAAdj a = {s = a.s ! Indef ! GSg Masc} ;
|
||||
lin PositAdvAdj a = {s = a.s ! Indef ! GSg Masc} ;
|
||||
lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ;
|
||||
lin SubjS s s2 = {s = s.s ++ s2.s} ;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
--# -path=.:../abstract:../common:../prelude:../api
|
||||
|
||||
concrete AllMkd of AllMkdAbs =
|
||||
LangMkd
|
||||
LangMkd,
|
||||
ExtendMkd
|
||||
** {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllMkdAbs =
|
||||
Lang
|
||||
Lang,
|
||||
Extend
|
||||
** {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
concrete CatMkd of Cat = CommonX ** open ResMkd, Prelude in {
|
||||
concrete CatMkd of Cat = CommonX - [Temp,Tense] ** open ParamX, ResMkd, Prelude, Predef in {
|
||||
|
||||
lincat
|
||||
Temp = {s : Str ; t : ResMkd.Tense ; a : Anteriority} ;
|
||||
Tense = {s : Str ; t : ResMkd.Tense} ;
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
@@ -9,7 +13,7 @@ lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat Pron = Pron ;
|
||||
lincat Pron = Pronoun ;
|
||||
lincat Prep = Compl ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
@@ -17,35 +21,35 @@ lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
linref N,N2,N3 = \n -> n.s ! Indef ! Sg ;
|
||||
linref V, VA, VV, VS, VQ, V2, V2S, V2Q, V3, V2A, V2V =
|
||||
\v -> v.present ! Imperfective ! Sg ! P3 ++
|
||||
case v.isRefl of {
|
||||
True => "се" ;
|
||||
False => []
|
||||
case v.vtype of {
|
||||
VNormal => [] ;
|
||||
VMedial Acc => "се" ;
|
||||
VMedial Dat => "си"
|
||||
} ;
|
||||
linref A, A2 = \a -> a.s ! Indef ! GSg Masc ;
|
||||
|
||||
lincat AP = {s : Species => GenNum => Str; isPre : Bool} ;
|
||||
lincat NP = {s : Role => Str; vocative: Str; g : GenNum; p : Person} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Quant = {s : Str; sp : Species} ;
|
||||
lincat Det = {s : Str; n : Number; sp : Species} ;
|
||||
lincat NP = {s : Role => Str; vocative: Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : NNumber} ;
|
||||
lincat Quant = {s : GenNum => Str; sp : Species} ;
|
||||
lincat Ord = {s : Species => GenNum => Str} ;
|
||||
lincat Det, DAP = {s : Gender => Str; n : NNumber; sp : Species} ;
|
||||
|
||||
lincat VP = {present : Aspect => Number => Person => Str;
|
||||
aorist : Number => Person => Str;
|
||||
imperfect : Aspect => Number => Person => Str;
|
||||
imperative : Aspect => Number => Str;
|
||||
participle : {aorist : Aspect => GenNum => Str; perfect : Aspect => Str}} ;
|
||||
lincat VPSlash = {present : Aspect => Number => Person => Str;
|
||||
aorist : Number => Person => Str;
|
||||
imperfect : Aspect => Number => Person => Str;
|
||||
imperative : Aspect => Number => Str;
|
||||
participle : {aorist : Aspect => GenNum => Str;
|
||||
imperfect : GenNum => Str; perfect : Aspect => Str;
|
||||
adjectival : Aspect => Str; adverbial : Str};
|
||||
noun_from_verb : Str; isRefl : Bool; c2 : Compl} ;
|
||||
lincat Cl = {present : Aspect => Str;
|
||||
aorist : Str;
|
||||
participle : {aorist : Aspect => Str; perfect : Aspect => Str}} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat VP = Verb ** {compl : Agr => Str} ;
|
||||
lincat VPSlash = Verb ** {compl : Agr => Str; c2 : Compl} ;
|
||||
lincat S,QS = {s : Str} ;
|
||||
lincat RS = {s : GenNum => Str} ;
|
||||
lincat Cl = {s : Order => ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat QCl = {s : ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat RCl = {s : GenNum => ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat RP = {s : GenNum => Str} ;
|
||||
lincat IP = {s : Str; g : GenNum} ;
|
||||
lincat IQuant = {s : GenNum => Str} ;
|
||||
lincat IDet = {s : Gender => Str; n : Number} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat Imp = {s : Polarity => GenNum => Str} ;
|
||||
lincat Comp = {s : GenNum => Str} ;
|
||||
|
||||
lincat Conj = {s : Str; sep : Ints 3; n : Number} ;
|
||||
|
||||
}
|
||||
|
||||
104
src/macedonian/ConjunctionMkd.gf
Normal file
104
src/macedonian/ConjunctionMkd.gf
Normal file
@@ -0,0 +1,104 @@
|
||||
--# -coding=utf8
|
||||
concrete ConjunctionMkd of Conjunction =
|
||||
CatMkd ** open ResMkd, Coordination, Prelude, Predef in {
|
||||
|
||||
lin
|
||||
ConjS conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjAdv conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjAdV conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjIAdv conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjNP conj ss = {
|
||||
s = \\role => linCoord []!conj.sep ++ ss.s!role!conj.sep ++ conj.s ++ ss.s!role!4;
|
||||
vocative = linCoord []!conj.sep ++ ss.vocative!conj.sep ++ conj.s ++ ss.vocative!4;
|
||||
a = {g = conjGenNum (genNum Masc conj.n) ss.gn; p = ss.p}
|
||||
} ;
|
||||
|
||||
ConjAP conj ss = {
|
||||
s = \\sp,gn => linCoord []!conj.sep ++ ss.s!sp!gn!conj.sep ++ conj.s ++ ss.s!sp!gn!4;
|
||||
isPre = ss.isPre
|
||||
} ;
|
||||
|
||||
ConjRS conj ss = {
|
||||
s = \\gn => linCoord []!conj.sep ++ ss.s!gn!conj.sep ++ conj.s ++ ss.s!gn!4;
|
||||
} ;
|
||||
|
||||
ConjCN conj ss = {
|
||||
s = \\sp,n => linCoord []!conj.sep ++ ss.s!sp!n!conj.sep ++ conj.s ++ ss.s!sp!n!4;
|
||||
count_form = linCoord []!conj.sep ++ ss.count_form!conj.sep ++ conj.s ++ ss.s!Indef!Pl!4;
|
||||
vocative = \\n => linCoord []!conj.sep ++ ss.vocative!n!conj.sep ++ conj.s ++ ss.vocative!n!4;
|
||||
g = ss.g
|
||||
} ;
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
BaseS x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsS x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseAdv x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsAdv x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseAdV x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsAdV x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseIAdv x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsIAdv x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseNP x y =
|
||||
{s = \\role=>table {4 => y.s!role; _ => x.s!role};
|
||||
vocative = table {4 => y.vocative; _ => x.vocative};
|
||||
gn = conjGenNum x.a.g y.a.g;
|
||||
p = x.a.p} ;
|
||||
ConsNP x xs =
|
||||
{s = \\role=>table {4 => xs.s!role!4; t => x.s!role++linCoord bindComma!t++xs.s!role!t};
|
||||
vocative = table {4 => xs.vocative!4; t => x.vocative++linCoord bindComma!t++xs.vocative!t};
|
||||
gn = conjGenNum xs.gn x.a.g;
|
||||
p = x.a.p} ;
|
||||
|
||||
BaseAP x y =
|
||||
{s = \\sp,gn => table {4 => y.s!sp!gn; _ => x.s!sp!gn} ;
|
||||
isPre = andB x.isPre y.isPre} ;
|
||||
ConsAP x xs =
|
||||
{s = \\sp,gn => table {4 => xs.s!sp!gn!4; t => x.s!sp!gn++linCoord bindComma!t++xs.s!sp!gn!t};
|
||||
isPre = andB x.isPre xs.isPre} ;
|
||||
|
||||
BaseRS x y =
|
||||
{s = \\gn=>table {4 => y.s!gn; _ => x.s!gn}} ;
|
||||
ConsRS x xs =
|
||||
{s = \\gn=>table {4 => xs.s!gn!4; t => x.s!gn++linCoord bindComma!t++xs.s!gn!t}} ;
|
||||
|
||||
BaseCN x y =
|
||||
{s = \\sp,n=>table {4 => y.s!sp!n; _ => x.s!sp!n};
|
||||
count_form = table {4 => y.count_form; t => x.count_form};
|
||||
vocative = \\n=>table {4 => y.vocative!n; t => x.vocative!n};
|
||||
g = x.g} ;
|
||||
ConsCN x xs =
|
||||
{s = \\sp,n=>table {4 => xs.s!sp!n!4; t => x.s!sp!n++linCoord bindComma!t++xs.s!sp!n!t};
|
||||
count_form = table {4 => xs.count_form!4; t => x.count_form++linCoord bindComma!t++xs.count_form!t};
|
||||
vocative = \\n=>table {4 => xs.vocative!n!4; t => x.vocative!n++linCoord bindComma!t++xs.vocative!n!t};
|
||||
g = x.g} ;
|
||||
|
||||
lincat
|
||||
[S] = {s : Ints 4 => Str} ;
|
||||
[Adv] = {s : Ints 4 => Str} ;
|
||||
[AdV] = {s : Ints 4 => Str} ;
|
||||
[IAdv] = {s : Ints 4 => Str} ;
|
||||
[NP] = {s : Role => Ints 4 => Str; vocative : Ints 4 => Str; gn : GenNum; p : Person} ;
|
||||
[AP] = {s : Species => GenNum => Ints 4 => Str; isPre : Bool} ;
|
||||
[RS] = {s : GenNum => Ints 4 => Str} ;
|
||||
[CN] = {s : Species => Number => Ints 4 => Str ;
|
||||
count_form : Ints 4 => Str ;
|
||||
vocative : Number => Ints 4 => Str ;
|
||||
g : Gender} ;
|
||||
|
||||
}
|
||||
@@ -121,7 +121,7 @@ lin
|
||||
heading3 ("Партицип") ++
|
||||
adjForms (v.participle.aorist ! Imperfective) ++
|
||||
tag "br" ++
|
||||
adjForms v.participle.imperfect ++
|
||||
adjForms (v.participle.imperfect ! Imperfective) ++
|
||||
heading2 ("Свършен вид") ++
|
||||
heading3 ("Изявително наклонение") ++
|
||||
heading4 ("Сегашно време") ++
|
||||
@@ -134,6 +134,8 @@ lin
|
||||
imperative (v.imperative ! Perfective) ++
|
||||
heading3 ("Партицип") ++
|
||||
adjForms (v.participle.aorist ! Perfective) ++
|
||||
tag "br" ++
|
||||
adjForms (v.participle.imperfect ! Perfective) ++
|
||||
heading1 ("Именка") ++
|
||||
v.noun_from_verb ;
|
||||
s3= ""
|
||||
|
||||
38
src/macedonian/ExtendMkd.gf
Normal file
38
src/macedonian/ExtendMkd.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
concrete ExtendMkd of Extend = CatMkd ** open ResMkd, ParadigmsMkd, StructuralMkd in {
|
||||
|
||||
lin
|
||||
CompoundN n1 n2 =
|
||||
let comp : Species => Number => Str
|
||||
= \\sp,n => case n1.relType of {
|
||||
Pref => n1.rel ! sp ! genNum n2.g n ++ n2.s ! sp ! n ;
|
||||
AdjMod => n1.rel ! sp ! genNum n2.g n ++ n2.s ! Indef ! n ;
|
||||
AdvMod => n2.s ! sp ! n ++ n1.rel ! sp ! genNum n2.g n
|
||||
} ;
|
||||
voc : Number => Str
|
||||
= \\n => case n1.relType of {
|
||||
Pref => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ;
|
||||
AdjMod => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ;
|
||||
AdvMod => n2.vocative ! n ++ n1.rel ! Indef ! genNum n2.g n
|
||||
}
|
||||
in {
|
||||
s = comp ;
|
||||
count_form = comp ! Indef ! Pl ;
|
||||
vocative = voc ;
|
||||
rel = \\sp,n => "на" ++ comp ! sp ! Sg ; relType = AdvMod ;
|
||||
g = n2.g
|
||||
} ;
|
||||
|
||||
iFem_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Fem) P1 ;
|
||||
youFem_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Fem) P2 ;
|
||||
weFem_Pron = we_Pron ;
|
||||
youPlFem_Pron = youPl_Pron ;
|
||||
theyFem_Pron = they_Pron ;
|
||||
youPolFem_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Fem) P2 ;
|
||||
youPolPl_Pron = youPol_Pron ;
|
||||
youPolPlFem_Pron = youPol_Pron ;
|
||||
|
||||
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
|
||||
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete GrammarMkd of Grammar = VerbMkd,SentenceMkd,NounMkd,AdverbMkd,AdjectiveMkd,NumeralMkd,PhraseMkd,TextX,StructuralMkd,TenseX ** {
|
||||
concrete GrammarMkd of Grammar = NamesMkd,VerbMkd,SentenceMkd,QuestionMkd,NounMkd,AdverbMkd,AdjectiveMkd,IdiomMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextMkd,StructuralMkd,TenseMkd,ConjunctionMkd ** {
|
||||
}
|
||||
|
||||
52
src/macedonian/IdiomMkd.gf
Normal file
52
src/macedonian/IdiomMkd.gf
Normal file
@@ -0,0 +1,52 @@
|
||||
concrete IdiomMkd of Idiom = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin CleftAdv a s = {s = \\t,a2,p,o => a.s ++ s.s} ;
|
||||
lin CleftNP np rs = {s = \\t,a,p,o => np.s ! RSubj
|
||||
++ rs.s ! np.a.g} ;
|
||||
lin ExistIP ip = {s = \\t,a,p => ip.s} ;
|
||||
lin ExistIPAdv ip a = {s = \\t,a2,p => ip.s ++ a.s} ;
|
||||
lin ExistNP np = {s = \\t,a,p,o => np.s ! RSubj} ;
|
||||
lin ExistNPAdv np a = {s = \\t,a2,p,o => np.s ! RSubj ++ a.s} ;
|
||||
lin GenericCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
|
||||
! P1} ;
|
||||
lin ImpP3 np vp = {s = np.s ! RSubj
|
||||
++ vp.present ! Imperfective ! Sg ! np.a.p} ;
|
||||
lin ImpPl1 vp = {s = vp.present ! Imperfective ! Sg ! P1} ;
|
||||
lin ImpersCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
|
||||
! P1} ;
|
||||
lin ProgrVP vp = vp ** {
|
||||
present = \\a,n,p => vp.present ! Imperfective ! n ! p ;
|
||||
imperfect = \\a,n,p => vp.imperfect ! Imperfective ! n ! p ;
|
||||
imperative = \\a,n => vp.imperative ! Imperfective ! n ;
|
||||
participle = {aorist = \\a,gn => vp.participle.aorist ! Imperfective ! gn ;
|
||||
perfect = \\a => vp.participle.perfect ! Imperfective ;
|
||||
imperfect = \\a => vp.participle.imperfect ! Imperfective ;
|
||||
adjectival = vp.participle.adjectival ;
|
||||
adverbial = vp.participle.adverbial}
|
||||
} ;
|
||||
|
||||
lin SelfAdVVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
|
||||
aorist = \\n,p => vp.aorist ! n ! p;
|
||||
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
|
||||
imperative = \\a,n => vp.imperative ! a ! n;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
|
||||
perfect = \\a => vp.participle.perfect ! a;
|
||||
adjectival = \\a => vp.participle.adjectival ! a;
|
||||
adverbial = vp.participle.adverbial};
|
||||
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
|
||||
lin SelfAdvVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
|
||||
aorist = \\n,p => vp.aorist ! n ! p;
|
||||
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
|
||||
imperative = \\a,n => vp.imperative ! a ! n;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
|
||||
perfect = \\a => vp.participle.perfect ! a;
|
||||
adjectival = \\a => vp.participle.adjectival ! a;
|
||||
adverbial = vp.participle.adverbial};
|
||||
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
|
||||
lin SelfNP np = {s = \\r => np.s ! r; vocative = np.vocative;
|
||||
a = {g = np.a.g; p = np.a.p}} ;
|
||||
}
|
||||
@@ -5,7 +5,14 @@ lin
|
||||
airplane_N = mkN001 "авион" ;
|
||||
apple_N = mkN012 "јаболко" ;
|
||||
bad_A = mkA004 "лош" ;
|
||||
good_A = mkA021 "добар" ;
|
||||
close_V2 = mkV2 (dualV (mkV "затвара") (mkV "затвори")) ;
|
||||
die_V = dualV (mkV002 "умира") (mkV021 "умре") ;
|
||||
door_N = mkN008 "врата" ;
|
||||
factory_N = mkN008 "фабрика" ;
|
||||
fish_N = mkN "риба" ;
|
||||
good_A = mkA021 "добар" ;
|
||||
play_V = mkV001 "игра" ;
|
||||
man_N = mkN001 "маж" ;
|
||||
woman_N = mkN "жена" ;
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
18
src/macedonian/NamesMkd.gf
Normal file
18
src/macedonian/NamesMkd.gf
Normal file
@@ -0,0 +1,18 @@
|
||||
concrete NamesMkd of Names = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdjLN ap ln = {s = ap.s ! Indef ! GSg Masc ++ ln.s} ;
|
||||
lin FemaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin FullName gn sn = {s = \\r => gn.s ++ sn.s;
|
||||
vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P1}} ;
|
||||
lin GivenName gn = {s = \\r => gn.s; vocative = gn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin InLN ln = {s = ln.s} ;
|
||||
lin MaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin PlSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin PlainLN ln = {s = \\r => ln.s; vocative = ln.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin UseLN ln = {s = \\r => ln.s; vocative = ln.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdNum a c = {s = a.s ++ c.s} ;
|
||||
lin AdjCN ap cn = {
|
||||
s = case ap.isPre of {
|
||||
True => \\s,n => ap.s ! s
|
||||
@@ -21,27 +22,133 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
|
||||
} ++
|
||||
cn.vocative ! n;
|
||||
count_form = ap.s ! Indef ! GPl ++ cn.count_form; g = cn.g} ;
|
||||
lin AdjDAP d ap = {
|
||||
s = \\g => d.s ! g ++ ap.s ! Indef ! genNum g (nnum2num d.n) ;
|
||||
n = d.n ;
|
||||
sp = d.sp
|
||||
} ;
|
||||
lin AdvCN cn adv = {
|
||||
s = \\s,n => cn.s ! s ! n ++ adv.s;
|
||||
count_form = cn.count_form ++ adv.s;
|
||||
vocative = \\n => cn.vocative ! n ++ adv.s;
|
||||
g = cn.g
|
||||
} ;
|
||||
lin DefArt = {s = []; sp = Def Unspecified} ;
|
||||
lin AdvNP np a = {s = \\r => np.s ! r ++ a.s;
|
||||
vocative = np.vocative ++ a.s; a = np.a} ;
|
||||
lin ApposCN cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
|
||||
count_form = cn.count_form ++ np.s ! RSubj;
|
||||
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
|
||||
lin ComplN2 n2 np = {s = \\s,n => n2.s ! s ! n ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
count_form = n2.count_form ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
vocative = \\n => n2.vocative ! n ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
g = n2.g} ;
|
||||
lin ComplN3 n3 np = {s = \\s,n => n3.s ! s ! n ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
count_form = n3.count_form ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
vocative = \\n => n3.vocative ! n ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
rel = \\s,g => n3.s ! s ! genNum2num g ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
relType = AdvMod;
|
||||
g = n3.g;
|
||||
c2 = n3.c3} ;
|
||||
lin CountNP d np = {s = \\r => d.s ! Masc ++ np.s ! r;
|
||||
vocative = d.s ! Masc ++ np.vocative;
|
||||
a = np.a} ;
|
||||
lin DefArt = {s = \\_=>[]; sp = Def Unspecified} ;
|
||||
lin DetCN det cn = {
|
||||
s = \\r => det.s ++ cn.s ! det.sp ! det.n;
|
||||
vocative = det.s ++ cn.vocative ! det.n;
|
||||
g = case det.n of {
|
||||
Sg => GSg cn.g;
|
||||
Pl => GPl
|
||||
} ;
|
||||
p = P3;
|
||||
s = \\r => case det.n of {
|
||||
NNum n => det.s ! cn.g ++ cn.s ! det.sp ! n;
|
||||
NCountable => det.s ! cn.g ++ cn.count_form
|
||||
} ;
|
||||
vocative = det.s ! cn.g ++ cn.vocative ! nnum2num det.n ;
|
||||
a = {g = genNum cn.g (nnum2num det.n) ;
|
||||
p = P3};
|
||||
} ;
|
||||
lin DetQuant det num = {s = det.s ++ num.s; n = num.n;
|
||||
sp = det.sp} ;
|
||||
lin IndefArt = {s = []; sp = Indef} ;
|
||||
lin NumPl = {s = []; n = Pl} ;
|
||||
lin NumSg = {s = []; n = Sg} ;
|
||||
lin DetDAP d = d ;
|
||||
lin DetNP d = {s = \\r => d.s ! Masc; vocative = d.s ! Masc;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s;
|
||||
n = num.n;
|
||||
sp = q.sp} ;
|
||||
lin DetQuantOrd q n o = {
|
||||
s = \\g => q.s ! GSg Masc ++ n.s ++ o.s ! q.sp ! genNum g (nnum2num n.n);
|
||||
n = n.n;
|
||||
sp = Indef
|
||||
} ;
|
||||
lin ExtAdvNP np a = {
|
||||
s = \\r => np.s ! r ++ SOFT_BIND++"," ++ a.s;
|
||||
vocative = np.vocative ++ SOFT_BIND++"," ++ a.s;
|
||||
a = np.a
|
||||
} ;
|
||||
lin IndefArt = {s = \\_=>[]; sp = Indef} ;
|
||||
lin MassNP cn = {s = \\r => cn.s ! Indef ! Sg;
|
||||
vocative = cn.vocative ! Sg;
|
||||
a = {g = GSg cn.g; p = P3}} ;
|
||||
lin NumCard c = {s = c.s; n = NNum Sg} ;
|
||||
lin NumDecimal d = {s = d.s} ;
|
||||
lin NumDigits d = {s = d.s} ;
|
||||
lin NumNumeral n = {s = n.s} ;
|
||||
lin NumPl = {s = []; n = NNum Pl} ;
|
||||
lin NumSg = {s = []; n = NNum Sg} ;
|
||||
lin UseN s = s ;
|
||||
lin UsePron p = p ** {vocative=p.s ! RSubj} ;
|
||||
|
||||
lin RelNP np rs = {
|
||||
s = \\r => np.s ! r ++ rs.s ! np.a.g ;
|
||||
vocative = np.vocative ++ rs.s ! np.a.g ;
|
||||
a = np.a;
|
||||
} ;
|
||||
lin OrdDigits d = {s = \\s,gn => d.s} ;
|
||||
lin OrdNumeral n = {s = \\s,gn => n.s} ;
|
||||
lin OrdNumeralSuperl n a = {s = \\s,gn => n.s ++ "нај" ++ BIND ++ a.s ! s ! gn} ;
|
||||
lin OrdSuperl a = {s = \\s,gn => "нај" ++ BIND ++ a.s ! s ! gn} ;
|
||||
lin PPartNP np v2 = {s = \\r => np.s ! r
|
||||
++ v2.present ! Imperfective ! Sg ! np.a.p;
|
||||
vocative = np.vocative ++ v2.present ! Imperfective ! Sg ! np.a.p;
|
||||
a = {g = np.a.g; p = np.a.p}} ;
|
||||
lin PartNP cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
|
||||
count_form = cn.count_form ++ np.s ! RSubj;
|
||||
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
|
||||
lin PossNP cn np = {
|
||||
s = \\s,n => cn.s ! s ! n ++ "на" ++ np.s ! RObj Acc;
|
||||
count_form = cn.count_form ++ "на" ++ np.s ! RObj Acc;
|
||||
vocative = \\n => cn.vocative ! n ++ "на" ++ np.s ! RObj Acc;
|
||||
g = cn.g
|
||||
} ;
|
||||
lin PossPron p = {s = p.poss ! Def Unspecified; sp = Indef} ;
|
||||
lin PredetNP p np = {
|
||||
s = \\r => p.s ++ np.s ! r;
|
||||
vocative = p.s ++ np.vocative;
|
||||
a = np.a
|
||||
} ;
|
||||
lin QuantityNP d mu =
|
||||
let s = case mu.isPre of {
|
||||
True => mu.s ++ d.s ;
|
||||
False => d.s ++ mu.s
|
||||
}
|
||||
in { s = \\r => s;
|
||||
vocative = s;
|
||||
a = {g = GSg Masc; p = P3}
|
||||
} ;
|
||||
lin RelCN cn rs = {
|
||||
s = \\sp,n => cn.s ! sp ! n ++ rs.s ! genNum cn.g n ;
|
||||
count_form = cn.count_form ++ rs.s ! GPl ;
|
||||
vocative = \\n => cn.vocative ! n ++ rs.s ! genNum cn.g n ;
|
||||
g = cn.g;
|
||||
} ;
|
||||
lin SentCN cn sc = {s = \\s,n => cn.s ! s ! n ++ sc.s;
|
||||
count_form = cn.count_form ++ sc.s;
|
||||
vocative = \\n => cn.vocative ! n ++ sc.s; g = cn.g} ;
|
||||
lin Use2N3 n3 = {s = \\s,n => n3.s ! s ! n;
|
||||
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
|
||||
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
|
||||
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
|
||||
lin Use3N3 n3 = {s = \\s,n => n3.s ! s ! n;
|
||||
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
|
||||
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
|
||||
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
|
||||
lin UseN2 n2 = n2 ;
|
||||
lin UsePN pn = {
|
||||
s = \\r => pn.s;
|
||||
vocative = pn.s;
|
||||
a = {g = GSg Masc; p = P3}
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -1051,7 +1051,9 @@ mkV = overload {
|
||||
mkV : Str -> Str -> Str -> V = reg3V -- present;Sg;P3 participle;adverbial participle;adjectival
|
||||
} ;
|
||||
|
||||
reflV : V -> V = \v -> v ** {isRefl=True} ;
|
||||
accusative : Case = Acc ;
|
||||
dative : Case = Dat ;
|
||||
medialV : V -> Case -> V = \v,c -> v ** {vtype=VMedial c} ;
|
||||
|
||||
dualV : V -> V -> V = \impf,perf -> lin V
|
||||
{ present = table {
|
||||
@@ -1071,7 +1073,10 @@ dualV : V -> V -> V = \impf,perf -> lin V
|
||||
Imperfective => impf.participle.aorist ! Imperfective ;
|
||||
Perfective => perf.participle.aorist ! Perfective
|
||||
} ;
|
||||
imperfect = impf.participle.imperfect ;
|
||||
imperfect = table {
|
||||
Imperfective => impf.participle.imperfect ! Imperfective ;
|
||||
Perfective => perf.participle.imperfect ! Perfective
|
||||
} ;
|
||||
perfect = table {
|
||||
Imperfective => impf.participle.perfect ! Imperfective ;
|
||||
Perfective => perf.participle.perfect ! Perfective
|
||||
@@ -1083,7 +1088,7 @@ dualV : V -> V -> V = \impf,perf -> lin V
|
||||
adverbial = impf.participle.adverbial
|
||||
} ;
|
||||
noun_from_verb = impf.noun_from_verb ;
|
||||
isRefl = impf.isRefl
|
||||
vtype = impf.vtype
|
||||
} ;
|
||||
|
||||
compoundV = overload {
|
||||
@@ -1093,13 +1098,13 @@ compoundV = overload {
|
||||
imperfect = \\a,n,p => v.imperfect ! a ! n ! p ++ s ;
|
||||
imperative = \\a,n => v.imperative ! a ! n ++ s ;
|
||||
participle = { aorist = \\a,gn => v.participle.aorist ! a ! gn ++ s ;
|
||||
imperfect = \\gn => v.participle.imperfect ! gn ++ s ;
|
||||
imperfect = \\a,gn => v.participle.imperfect ! a ! gn ++ s ;
|
||||
perfect = \\a => v.participle.perfect ! a ++ s ;
|
||||
adjectival = \\a => v.participle.adjectival ! a ++ s ;
|
||||
adverbial = v.participle.adverbial
|
||||
} ;
|
||||
noun_from_verb = v.noun_from_verb ++ s ;
|
||||
isRefl = v.isRefl
|
||||
vtype = v.vtype
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -1119,13 +1124,13 @@ mkV2V = overload {
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S v ** {c2=noPrep} ;
|
||||
mkV2S : V -> Prep -> V2S = \v,p2 -> lin V2S v ** {c2=p2} ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2=noPrep} ;
|
||||
mkV2Q : V -> Prep -> V2Q = \v,p2 -> lin V2Q v ** {c2=p2} ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
@@ -1156,18 +1161,66 @@ mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
|
||||
noPrep : Prep = lin Prep {s=""} ;
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
noPrep : Prep = lin Prep {s=""; c=Acc} ;
|
||||
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||
mkIP : Str -> GenNum -> IP = \s,g -> lin IP {s=s; g=g} ;
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
|
||||
mkIQuant : Str -> Str -> Str -> Str -> IQuant = \m,f,n,pl ->
|
||||
lin IQuant {
|
||||
s=table {
|
||||
GSg Masc => m;
|
||||
GSg Fem => f;
|
||||
GSg Neuter => n;
|
||||
GPl => pl
|
||||
}
|
||||
} ;
|
||||
|
||||
mkIDet = overload {
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_=>s; n=Pl} ;
|
||||
mkIDet : Str -> Str -> Str -> IDet = \m,f,n ->
|
||||
lin IDet {
|
||||
s=table {
|
||||
Masc => m ;
|
||||
Fem => f ;
|
||||
Neuter => n
|
||||
} ;
|
||||
n=Sg;
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre = False} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s; n=Sg; sp=Indef} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
|
||||
mkQuant : Str -> Str -> Str -> Str -> Quant = \m,f,n,pl ->
|
||||
lin Quant {
|
||||
s=table {
|
||||
GSg Masc => m;
|
||||
GSg Fem => f;
|
||||
GSg Neuter => n;
|
||||
GPl => pl
|
||||
} ;
|
||||
sp=Indef
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : Str -> Det = \s -> lin Det {s=\\_=>s; n=NNum Pl; sp=Indef} ;
|
||||
mkDet : Str -> Str -> Str -> Det = \m,f,n ->
|
||||
lin Det {
|
||||
s=table {
|
||||
Masc => m ;
|
||||
Fem => f ;
|
||||
Neuter => n
|
||||
} ;
|
||||
n=NNum Sg;
|
||||
sp=Indef
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkConj : Str -> Number -> Conj =
|
||||
\s,n -> lin Conj {s = s; sep = 3; n = n} ;
|
||||
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = SOFT_BIND++"," ++ np.vocative} ;
|
||||
|
||||
lin NoPConj = {s : Str = []} ;
|
||||
lin NoVoc = {s : Str = []} ;
|
||||
lin PConjConj c = {s = c.s} ;
|
||||
lin PhrUtt pconj utt voc = {s : Str = pconj.s ++ utt.s ++ voc.s} ;
|
||||
lin UttAP ap = {s = ap.s ! Indef ! GSg Masc} ;
|
||||
lin UttAdv a = {s = a.s} ;
|
||||
lin UttCN cn = {s = cn.s ! Indef ! Sg} ;
|
||||
lin UttCard c = {s = c.s} ;
|
||||
lin UttIAdv i = {s = i.s} ;
|
||||
lin UttIP ip = {s = ip.s} ;
|
||||
lin UttImpPl p i = {s = p.s ++ i.s ! p.p ! GPl} ;
|
||||
lin UttImpPol p i = {s = p.s ++ i.s ! p.p ! GPl} ;
|
||||
lin UttImpSg p i = {s = p.s ++ i.s ! p.p ! GSg Masc} ;
|
||||
lin UttInterj i = i ;
|
||||
lin UttNP np = {s = np.s ! RSubj} ;
|
||||
lin UttQS s = s ;
|
||||
lin UttS s = s ;
|
||||
lin UttVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
|
||||
lin VocNP np = {s : Str = SOFT_BIND ++ "," ++ np.vocative} ;
|
||||
}
|
||||
|
||||
22
src/macedonian/QuestionMkd.gf
Normal file
22
src/macedonian/QuestionMkd.gf
Normal file
@@ -0,0 +1,22 @@
|
||||
concrete QuestionMkd of Question = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdvIAdv i a = {s = i.s ++ a.s} ;
|
||||
lin AdvIP ip a = {s = ip.s ++ a.s; g = ip.g} ;
|
||||
lin CompIAdv i = {s = i.s} ;
|
||||
lin CompIP ip = {s = ip.s} ;
|
||||
lin IdetCN idet cn = {
|
||||
s = idet.s ! cn.g ++ cn.s ! Indef ! idet.n;
|
||||
g = genNum cn.g idet.n
|
||||
} ;
|
||||
lin IdetIP idet = {s = idet.s ! Masc; g = genNum Masc idet.n} ;
|
||||
lin IdetQuant i n = {
|
||||
s = \\g => i.s ! GSg Masc ++ n.s;
|
||||
n = Sg
|
||||
} ;
|
||||
lin PrepIP p ip = {s : Str = p.s ++ ip.s} ;
|
||||
lincat QVP = {s : Str} ;
|
||||
lin QuestCl cl = {s = cl.s ! Quest} ;
|
||||
lin QuestIAdv i cl = {s = \\t,a,p => i.s ++ cl.s ! Main ! t ! a ! p} ;
|
||||
lin QuestIComp i np = {s = \\t,a,p => i.s ++ np.s ! RSubj} ;
|
||||
lin QuestSlash ip c = {s = \\t,a,p => ip.s ++ c.s} ;
|
||||
lin QuestVP ip vp = {s = mkClause ip.s {g=ip.g; p=P3} vp ! Main} ;
|
||||
}
|
||||
15
src/macedonian/RelativeMkd.gf
Normal file
15
src/macedonian/RelativeMkd.gf
Normal file
@@ -0,0 +1,15 @@
|
||||
concrete RelativeMkd of Relative = CatMkd ** open Prelude,ResMkd in {
|
||||
lin FunRP p np rp = {s = \\g => p.s ++ np.s ! RSubj ++ rp.s ! g} ;
|
||||
lin IdRP = {s = table {
|
||||
GSg Masc => "кој" ;
|
||||
GSg Fem => "која" ;
|
||||
GSg Neuter => "кое" ;
|
||||
GPl => "кои"
|
||||
}
|
||||
} ;
|
||||
lin RelCl cl = {s = \\g => cl.s ! Main} ;
|
||||
lin RelSlash rp c = {s = \\g,t,a,p => rp.s ! g ++ c.s} ;
|
||||
lin RelVP rp vp = {
|
||||
s = \\gn => mkClause (rp.s ! gn) {g=gn; p=P3} vp ! Main
|
||||
} ;
|
||||
}
|
||||
@@ -1,12 +1,16 @@
|
||||
resource ResMkd = ParamX [DTail,T1,T2,T3,inc] ** open Prelude in {
|
||||
resource ResMkd = ParamX - [Tense] ** open Prelude, Predef in {
|
||||
|
||||
oper Compl = {s : Str} ;
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
|
||||
param Species = Indef | Def Distance ;
|
||||
param Distance = Unspecified | Distal | Proximal ;
|
||||
param Number = Sg | Pl ;
|
||||
param NRelType = Pref | AdjMod | AdvMod ;
|
||||
NNumber =
|
||||
NNum Number
|
||||
| NCountable
|
||||
;
|
||||
param Gender = Masc | Fem | Neuter ;
|
||||
oper Agr = {g : GenNum; p : Person} ;
|
||||
oper Noun = {s: Species => Number => Str; count_form: Str; vocative: Number => Str; rel: Species => GenNum => Str; relType : NRelType; g: Gender} ; -- 24855
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,g ->
|
||||
@@ -40,9 +44,18 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
|
||||
|
||||
param Aspect = Imperfective | Perfective ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
param GenNum = GSg Gender | GPl ;
|
||||
oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; isRefl: Bool} ; -- 8174
|
||||
param VType = VNormal | VMedial Case ;
|
||||
Tense = VPresent
|
||||
| VPastSimple --# notpresent
|
||||
| VPastImperfect --# notpresent
|
||||
| VFut --# notpresent
|
||||
| VCond --# notpresent
|
||||
;
|
||||
|
||||
Order = Main | Quest ;
|
||||
|
||||
oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: Aspect => GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; vtype: VType} ; -- 8174
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32 ->
|
||||
{ present = \\_ =>
|
||||
@@ -95,7 +108,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ :
|
||||
GSg Neuter => f23 ;
|
||||
GPl => f24
|
||||
} ;
|
||||
imperfect = table {
|
||||
imperfect = \\_ =>
|
||||
table {
|
||||
GSg Masc => f25 ;
|
||||
GSg Fem => f26 ;
|
||||
GSg Neuter => f27 ;
|
||||
@@ -106,7 +120,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ :
|
||||
adverbial = f31
|
||||
} ;
|
||||
noun_from_verb = f32 ;
|
||||
isRefl = False
|
||||
vtype = VNormal
|
||||
} ;
|
||||
|
||||
|
||||
@@ -153,12 +167,175 @@ oper mkAdv : Str -> Adv =
|
||||
|
||||
param Case = Acc | Dat ;
|
||||
param Role = RSubj | RObj Case | RPrep ;
|
||||
oper Pron = {s : Role => Str; clitic : Case => Str; g : GenNum; p : Person} ;
|
||||
oper Pronoun = {
|
||||
s : Role => Str;
|
||||
clitic : Case => Str;
|
||||
poss : Species => GenNum => Str ;
|
||||
poss_clitic : Str ;
|
||||
a : {g : GenNum; p : Person}
|
||||
} ;
|
||||
|
||||
conjGenNum : GenNum -> GenNum -> GenNum = \a,b ->
|
||||
case <a,b> of {
|
||||
<GSg _,GSg g> => GSg g ;
|
||||
_ => GPl
|
||||
} ;
|
||||
|
||||
genNum : Gender -> Number -> GenNum = \g,n ->
|
||||
case n of {
|
||||
Sg => GSg g ;
|
||||
Pl => GPl
|
||||
} ;
|
||||
|
||||
nnum2num : NNumber -> Number = \n ->
|
||||
case n of {
|
||||
NNum n => n ;
|
||||
NCountable => Pl
|
||||
} ;
|
||||
|
||||
genNum2num : GenNum -> Number = \gn ->
|
||||
case gn of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
} ;
|
||||
|
||||
auxBe = {
|
||||
present : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "сум" ;
|
||||
P2 => "си" ;
|
||||
P3 => "е"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "сме" ;
|
||||
P2 => "сте" ;
|
||||
P3 => "се"
|
||||
}
|
||||
} ;
|
||||
imperfect : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "бев" ;
|
||||
P2 => "беше" ;
|
||||
P3 => "беше"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "бевме" ;
|
||||
P2 => "бевте" ;
|
||||
P3 => "беа"
|
||||
}
|
||||
} ;
|
||||
imperative : Number => Str =
|
||||
table {
|
||||
Sg => "биди" ;
|
||||
Pl => "бидете"
|
||||
} ;
|
||||
participle = {
|
||||
aorist : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "бил" ;
|
||||
GSg Fem => "била" ;
|
||||
GSg Neuter => "било" ;
|
||||
GPl => "биле"
|
||||
} ;
|
||||
imperfect : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "бидел" ;
|
||||
GSg Fem => "бидела" ;
|
||||
GSg Neuter => "бидело" ;
|
||||
GPl => "биделе"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
auxHave = {
|
||||
present : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "имам" ;
|
||||
P2 => "имаш" ;
|
||||
P3 => "има"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "имаме" ;
|
||||
P2 => "имате" ;
|
||||
P3 => "имаат"
|
||||
}
|
||||
} ;
|
||||
imperfect : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "имав" ;
|
||||
P2 => "имаше" ;
|
||||
P3 => "имаше"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "имавме" ;
|
||||
P2 => "имавте" ;
|
||||
P3 => "имаа"
|
||||
}
|
||||
} ;
|
||||
imperative : Number => Str =
|
||||
table {
|
||||
Sg => "имај" ;
|
||||
Pl => "имајте"
|
||||
} ;
|
||||
participle = {
|
||||
imperfect : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "имал" ;
|
||||
GSg Fem => "имала" ;
|
||||
GSg Neuter => "имало" ;
|
||||
GPl => "имале"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkClause : Str -> Agr -> Verb ** {compl : Agr => Str} -> Order => Tense => Anteriority => Polarity => Str
|
||||
= \subj,agr,vp ->
|
||||
let n = case agr.g of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
}
|
||||
in \\o,t,a,p =>
|
||||
case <t,a> of {
|
||||
<VPresent,Simul> => subj ++ neg ++ se ++ vp.present ! Imperfective ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPresent,Anter> => case o of {
|
||||
Main => subj ++ neg ++ auxBe.present ! n ! agr.p ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
Quest => subj ++ neg ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ li ++ auxBe.present ! n ! agr.p ++ vp.compl ! agr
|
||||
} ;
|
||||
<VPastSimple,Simul> => subj ++ neg ++ se ++ vp.aorist ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPastSimple,Anter> => subj ++ neg ++ se ++ auxBe.imperfect ! n ! agr.p ++ li ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VPastImperfect,Simul> => subj ++ neg ++ se ++ vp.imperfect ! Perfective ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPastImperfect,Anter> => subj ++ neg ++ se ++ auxBe.imperfect ! n ! agr.p ++ li ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VFut, Simul> => subj ++ fut.p1 ++ se ++ vp.present ! Perfective ! n ! agr.p ++ fut.p2 ++ vp.compl ! agr ;
|
||||
<VFut, Anter> => subj ++ fut.p1 ++ se ++ auxHave.present ! n ! agr.p ++ fut.p2 ++ vp.participle.perfect ! Perfective ++ vp.compl ! agr ;
|
||||
<VCond,Simul> => subj ++ neg ++ "би" ++ li ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VCond,Anter> => subj ++ neg ++ "би" ++ li ++ auxHave.participle.imperfect ! agr.g ++ se ++ vp.participle.perfect ! Perfective ++ vp.compl ! agr
|
||||
} where {
|
||||
neg = case p of {
|
||||
Pos => "" ;
|
||||
Neg => "не"
|
||||
} ;
|
||||
fut = case <p,o> of {
|
||||
<Pos,Main> => <"ке",[]> ;
|
||||
<Neg,Main> => <"нема да",[]> ;
|
||||
<Pos,Quest> => <"ке","ли"> ;
|
||||
<Neg,Quest> => <"нема ли да",[]>
|
||||
} ;
|
||||
li = case o of {
|
||||
Main => "" ;
|
||||
Quest => "ли"
|
||||
} ;
|
||||
se = case vp.vtype of {
|
||||
VNormal => "" ;
|
||||
VMedial Acc => "се" ;
|
||||
VMedial Dat => "си"
|
||||
}
|
||||
} ;
|
||||
|
||||
linCoord : Str -> Ints 4 => Str ;
|
||||
linCoord comma = table {0 => "и"; 1=>"или"; 2=>"ниту"; 3=>comma; 4=>[]} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin PredVP np vp =
|
||||
let n = case np.g of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
}
|
||||
in {present = \\a => np.s ! RSubj ++ vp.present ! a ! n ! np.p ;
|
||||
aorist = np.s ! RSubj ++ vp.aorist ! n ! np.p ;
|
||||
participle = {aorist = \\a => np.s ! RSubj ++ vp.participle.aorist ! a ! np.g;
|
||||
perfect = \\a => np.s ! RSubj ++ vp.participle.perfect ! a}} ;
|
||||
|
||||
lin AdvImp a i = {s = \\p,gn => a.s ++ i.s ! p ! gn} ;
|
||||
lin AdvS a s = {s = a.s ++ s.s} ;
|
||||
lin AdvSlash c a = {s = c.s ++ a.s} ;
|
||||
lin EmbedQS qs = {s = qs.s} ;
|
||||
lin EmbedS s = {s = s.s} ;
|
||||
lin EmbedVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
|
||||
lin ExtAdvS a s = {s = a.s ++ s.s} ;
|
||||
lin ImpVP vp = {
|
||||
s = \\p,gn=>case p of {
|
||||
Pos => vp.imperative ! Perfective ! genNum2num gn ;
|
||||
Neg => "не" ++ vp.imperative ! Imperfective ! genNum2num gn
|
||||
} ++
|
||||
vp.compl ! {g=gn; p=P2}
|
||||
} ;
|
||||
lin PredSCVP sc vp = {s = \\t,a,p,o => sc.s
|
||||
++ vp.present ! Imperfective ! Sg ! P1} ;
|
||||
lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ;
|
||||
lin RelS s rs = {s = s.s ++ rs.s ! GSg Masc} ;
|
||||
lin SSubjS s s2 s3 = {s = s.s ++ s2.s ++ s3.s} ;
|
||||
lin SlashPrep cl p = {s = cl.s ! Main ! VPresent ! Simul ! Pos
|
||||
++ p.s} ;
|
||||
lin SlashVP np v = {s = np.s ! RSubj
|
||||
++ v.present ! Imperfective ! Sg ! np.a.p} ;
|
||||
lin SlashVS np vs s = {s = np.s ! RSubj
|
||||
++ vs.present ! Imperfective ! Sg ! np.a.p ++ s.s} ;
|
||||
lin UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! Main ! t.t ! t.a ! p.p} ;
|
||||
lin UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||
lin UseRCl t p cl = {s = \\gn => t.s ++ p.s ++ cl.s ! gn ! t.t ! t.a ! p.p} ;
|
||||
lin UseSlash t p c = {s = t.s ++ p.s ++ c.s} ;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd in {
|
||||
concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd,ParadigmsMkd in {
|
||||
|
||||
lin i_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Masc) P1 ;
|
||||
lin youSg_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Masc) P2 ;
|
||||
lin he_Pron = mkPron "тој" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ;
|
||||
lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Masc) P3 ;
|
||||
lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ;
|
||||
lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Fem) P3 ;
|
||||
lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Neuter) P3 ;
|
||||
lin we_Pron = mkPron "ние" "нас" "нѐ" "нам" "ни" "нас" "наш" "нашиот" "наша" "нашата" "наше" "нашето" "наши" "нашите" "ни" GPl P1 ;
|
||||
lin youPl_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" GPl P2 ;
|
||||
lin youPol_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Masc) P2 ;
|
||||
lin they_Pron = mkPron "тие" "нив" "ги" "ним" "им" "нив" "нивен" "нивниот" "нивна" "нивната" "нивно" "нивното" "нивни" "нивните" "им" GPl P3 ;
|
||||
lin this_Quant = mkQuant "овој" "оваа" "ова" "овие" ;
|
||||
lin that_Quant = mkQuant "тој" "таа" "тоа" "тие" ;
|
||||
lin how_IAdv = mkIAdv "как" ;
|
||||
lin how8many_IDet = mkIDet "колку" ;
|
||||
lin how8much_IAdv = mkIAdv "колку" ;
|
||||
lin whatSg_IP = mkIP "што" (GSg Masc) ;
|
||||
lin whatPl_IP = mkIP "што" GPl ;
|
||||
lin when_IAdv = mkIAdv "кога" ;
|
||||
lin where_IAdv = mkIAdv "каде" ;
|
||||
lin which_IQuant = mkIQuant "кој" "која" "кое" "кои" ;
|
||||
lin whoSg_IP = mkIP "кој" (GSg Masc) ;
|
||||
lin whoPl_IP = mkIP "кои" GPl ;
|
||||
lin and_Conj = mkConj "и" Pl ;
|
||||
lin or_Conj = mkConj "или" Sg ;
|
||||
lin both7and_DConj = mkConj "и" Pl ** {sep=0} ;
|
||||
lin either7or_DConj = mkConj "или" Sg ** {sep=1} ;
|
||||
|
||||
}
|
||||
|
||||
10
src/macedonian/TenseMkd.gf
Normal file
10
src/macedonian/TenseMkd.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
concrete TenseMkd of Tense = CatMkd[Tense,Temp], TenseX - [Tense,Temp,TTAnt,TPres,TPast,TFut,TCond] ** open ResMkd in {
|
||||
|
||||
lin
|
||||
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
|
||||
TPres = {s = []} ** {t = VPresent} ;
|
||||
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
|
||||
TFut = {s = []} ** {t = VFut} ; --# notpresent
|
||||
TCond = {s = []} ** {t = VCond} ; --# notpresent
|
||||
|
||||
}
|
||||
7
src/macedonian/TextMkd.gf
Normal file
7
src/macedonian/TextMkd.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
concrete TextMkd of Text = open Prelude in {
|
||||
lin
|
||||
TEmpty = {s = []} ;
|
||||
TFullStop x xs = {s = x.s ++ SOFT_BIND ++ "." ++ xs.s} ;
|
||||
TQuestMark x xs = {s = x.s ++ SOFT_BIND ++ "?" ++ xs.s} ;
|
||||
TExclMark x xs = {s = x.s ++ SOFT_BIND ++ "!" ++ xs.s} ;
|
||||
}
|
||||
@@ -1,13 +1,132 @@
|
||||
concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin ComplSlash vps np = {present = \\a,n,p => vps.present ! a ! n
|
||||
! p
|
||||
++ np.s ! RObj Acc ;
|
||||
aorist = \\n,p => vps.aorist ! n ! p ++ np.s ! RObj Acc;
|
||||
imperfect = \\a,n,p => vps.imperfect ! a ! n ! p ++ np.s ! RObj Acc;
|
||||
imperative = \\a,n => vps.imperative ! a ! n ++ np.s ! RObj Acc;
|
||||
participle = {aorist = \\a,gn => vps.participle.aorist ! a ! gn ++ np.s ! RObj Acc;
|
||||
perfect = \\a => vps.participle.perfect ! a ++ np.s ! RObj Acc}} ;
|
||||
lin SlashV2a v = v ;
|
||||
lin AdVVP a vp = {present = \\a2,n,p => a.s
|
||||
++ vp.present ! a2 ! n ! p;
|
||||
aorist = \\n,p => a.s ++ vp.aorist ! n ! p;
|
||||
imperfect = \\a2,n,p => a.s ++ vp.imperfect ! a2 ! n ! p;
|
||||
imperative = \\a2,n => a.s ++ vp.imperative ! a2 ! n;
|
||||
participle = {aorist = \\a2,g => a.s
|
||||
++ vp.participle.aorist ! a2 ! g;
|
||||
imperfect = \\a2,g => a.s ++ vp.participle.imperfect ! a2 ! g;
|
||||
perfect = \\a2 => a.s ++ vp.participle.perfect ! a2;
|
||||
adjectival = \\a2 => a.s ++ vp.participle.adjectival ! a2;
|
||||
adverbial = a.s ++ vp.participle.adverbial};
|
||||
noun_from_verb = a.s ++ vp.noun_from_verb;
|
||||
vtype = vp.vtype;
|
||||
compl = vp.compl} ;
|
||||
lin AdVVPSlash a v = {present = \\a2,n,p => a.s
|
||||
++ v.present ! a2 ! n ! p;
|
||||
aorist = \\n,p => a.s ++ v.aorist ! n ! p;
|
||||
imperfect = \\a2,n,p => a.s ++ v.imperfect ! a2 ! n ! p;
|
||||
imperative = \\a2,n => a.s ++ v.imperative ! a2 ! n;
|
||||
participle = {aorist = \\a2,g => a.s
|
||||
++ v.participle.aorist ! a2 ! g;
|
||||
imperfect = \\a2,g => a.s ++ v.participle.imperfect ! a2 ! g;
|
||||
perfect = \\a2 => a.s ++ v.participle.perfect ! a2;
|
||||
adjectival = \\a2 => a.s ++ v.participle.adjectival ! a2;
|
||||
adverbial = a.s ++ v.participle.adverbial};
|
||||
noun_from_verb = a.s ++ v.noun_from_verb;
|
||||
vtype = v.vtype;
|
||||
compl = v.compl;
|
||||
c2 = v.c2} ;
|
||||
lin AdvVP vp adv = vp ** {compl = \\a => vp.compl ! a ++ adv.s} ;
|
||||
lin AdvVPSlash vps adv = vps ** {compl = \\a => vps.compl ! a ++ adv.s} ;
|
||||
lin CompAP ap = {s = \\gn => ap.s ! Indef ! gn} ;
|
||||
lin CompAdv a = {s = \\_ => a.s} ;
|
||||
lin CompCN cn = {s = \\_ => cn.s ! Indef ! Sg} ;
|
||||
lin CompNP np = {s = \\_ => np.s ! RSubj} ;
|
||||
lin ComplSlash vp np = vp ** {compl = \\a => vp.compl ! a ++ vp.c2.s ++ np.s ! RObj vp.c2.c} ;
|
||||
lin ComplVA va ap = va ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
|
||||
lin ComplVQ vq qs = vq ** {compl = \\_ => qs.s} ;
|
||||
lin ComplVS vs s = vs ** {compl = \\_ => s.s} ;
|
||||
lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr} ;
|
||||
lin ExtAdvVP vp a = vp ** {compl = \\agr => vp.compl ! agr ++ SOFT_BIND++"," ++ a.s} ;
|
||||
lin Slash2V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
|
||||
++ np.s ! RSubj;
|
||||
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
|
||||
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
|
||||
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
|
||||
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
imperfect = \\a,g => v3.participle.imperfect ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
|
||||
adjectival = \\a => v3.participle.adjectival ! a
|
||||
++ np.s ! RSubj;
|
||||
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
|
||||
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
|
||||
vtype = v3.vtype;
|
||||
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
|
||||
++ np.s ! RSubj;
|
||||
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
|
||||
lin Slash3V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
|
||||
++ np.s ! RSubj;
|
||||
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
|
||||
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
|
||||
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
|
||||
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
imperfect = \\a,g => v3.participle.imperfect ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
|
||||
adjectival = \\a => v3.participle.adjectival ! a
|
||||
++ np.s ! RSubj;
|
||||
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
|
||||
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
|
||||
vtype = v3.vtype;
|
||||
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
|
||||
++ np.s ! RSubj;
|
||||
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
|
||||
lin SlashV2A v ap = v ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
|
||||
lin SlashV2Q v qs = v ** {compl = \\_ => qs.s} ;
|
||||
lin SlashV2S v s = v ** {compl = \\_ => s.s} ;
|
||||
lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr};
|
||||
lin SlashV2a v = v ** {compl = \\_ => []} ;
|
||||
|
||||
lin UseComp comp = {
|
||||
present = \\_=>auxBe.present ;
|
||||
aorist = auxBe.imperfect ;
|
||||
imperfect = \\_=>auxBe.imperfect ;
|
||||
imperative = \\_=>auxBe.imperative ;
|
||||
participle = {aorist = \\_=>auxBe.participle.aorist ;
|
||||
imperfect = \\_=>auxBe.participle.imperfect ;
|
||||
perfect = \\_=>nonExist ;
|
||||
adjectival = \\_=>nonExist ;
|
||||
adverbial = nonExist} ;
|
||||
noun_from_verb = nonExist ;
|
||||
compl = \\agr=>comp.s ! agr.g ;
|
||||
vtype=VNormal
|
||||
} ;
|
||||
|
||||
lin UseCopula = {
|
||||
present = \\_=>auxBe.present ;
|
||||
aorist = auxBe.imperfect ;
|
||||
imperfect = \\_=>auxBe.imperfect ;
|
||||
imperative = \\_=>auxBe.imperative ;
|
||||
participle = {aorist = \\_=>auxBe.participle.aorist ;
|
||||
imperfect = \\_=>auxBe.participle.imperfect ;
|
||||
perfect = \\_=>nonExist ;
|
||||
adjectival = \\_=>nonExist ;
|
||||
adverbial = nonExist} ;
|
||||
noun_from_verb = nonExist ;
|
||||
compl = \\_=>[] ;
|
||||
vtype=VNormal
|
||||
} ;
|
||||
|
||||
lin UseV v = v ** {compl = \\_ => []} ;
|
||||
lin VPSlashPrep vp p = {present = \\a,n,p2 => vp.present ! a ! n
|
||||
! p2
|
||||
++ p.s;
|
||||
aorist = \\n,p2 => vp.aorist ! n ! p2 ++ p.s;
|
||||
imperfect = \\a,n,p2 => vp.imperfect ! a ! n ! p2 ++ p.s;
|
||||
imperative = \\a,n => vp.imperative ! a ! n ++ p.s;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g
|
||||
++ p.s;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g ++ p.s;
|
||||
perfect = \\a => vp.participle.perfect ! a ++ p.s;
|
||||
adjectival = \\a => vp.participle.adjectival ! a ++ p.s;
|
||||
adverbial = vp.participle.adverbial ++ p.s};
|
||||
noun_from_verb = vp.noun_from_verb ++ p.s; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1} ++ p.s;
|
||||
c2 = {s = vp.present ! Imperfective ! Sg ! P1 ++ p.s; c = p.c}} ;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ concrete AllMlt of AllMltAbs =
|
||||
LangMlt,
|
||||
DictMlt,
|
||||
IrregMlt,
|
||||
ExtraMlt
|
||||
** {
|
||||
ExtendMlt
|
||||
** open ExtraMlt in {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -10,5 +10,5 @@ abstract AllMltAbs =
|
||||
Lang,
|
||||
DictMltAbs,
|
||||
IrregMltAbs,
|
||||
ExtraMltAbs
|
||||
Extend
|
||||
** {} ;
|
||||
|
||||
17
src/maltese/ExtendMlt.gf
Normal file
17
src/maltese/ExtendMlt.gf
Normal file
@@ -0,0 +1,17 @@
|
||||
concrete ExtendMlt of Extend =
|
||||
CatMlt ** ExtendFunctor - [
|
||||
ComplDirectVS,
|
||||
ComplDirectVQ,
|
||||
iFem_Pron, youFem_Pron, weFem_Pron, youPlFem_Pron,
|
||||
theyFem_Pron, youPolFem_Pron
|
||||
]
|
||||
with (Grammar = GrammarMlt) ** open ParadigmsMlt, MorphoMlt, ResMlt in {
|
||||
|
||||
lin iFem_Pron = mkPron "jien" "i" singular P1 feminine ; --- also JIENA
|
||||
youFem_Pron = mkPron "int" "ek" singular P2 feminine ; --- also INTI
|
||||
weFem_Pron = mkPron "aħna" "na" plural P1 feminine ;
|
||||
youPlFem_Pron = mkPron "intom" "kom" plural P2 feminine ;
|
||||
theyFem_Pron = mkPron "huma" "hom" plural P3 feminine ;
|
||||
youPolFem_Pron = mkPron "int" "ek" singular P2 feminine ; --- also INTI
|
||||
|
||||
}
|
||||
@@ -310,6 +310,13 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
|
||||
isDefn = np.isDefn ;
|
||||
} ;
|
||||
|
||||
QuantityNP n m = { -- quessed
|
||||
s = \\c => preOrPost m.isPre m.s (n.s ! NumNom) ;
|
||||
a = agrP3 (numform2num n.n) Masc ;
|
||||
isPron = False ;
|
||||
isDefn = False ;
|
||||
} ;
|
||||
|
||||
oper
|
||||
-- Overwrite the s field in an NP
|
||||
overwriteNPs : NounPhrase -> (NPCase => Str) -> NounPhrase = \np,tbl -> {
|
||||
|
||||
@@ -742,10 +742,8 @@ met_CAdv = lin CAdv {s = " мэт" ; c2 = noPrep Nom} ;
|
||||
meterhueue_CAdv = lin CAdv {s = " мэтэрхүү" ; c2 = noPrep Nom} ;
|
||||
net_CAdv = lin CAdv {s = " нэт" ; c2 = noPrep Nom} ;
|
||||
shig_CAdv = lin CAdv {s = " шиг" ; c2 = noPrep Nom} ;
|
||||
shig_CAdv = lin CAdv {s = " шиг" ; c2 = noPrep Nom} ;
|
||||
atlaa_Conj = mkConj "атлаа" ;
|
||||
ba_Conj = mkConj "ба" ;
|
||||
ba_Conj = mkConj "ба" ;
|
||||
bas_Conj = mkConj "бас" ;
|
||||
boegoeoed_Conj = mkConj "бөгөөд" ;
|
||||
boegoeoetoel_Conj = mkConj "бөгөөтөл" ;
|
||||
|
||||
@@ -86,7 +86,6 @@ oper
|
||||
hlaar4 : Suffix = \\vt => "хл" + aa4!vt + "р" ;
|
||||
haar4 : Suffix = \\vt => "х" + aa4!vt + "р" ;
|
||||
tal4 : Suffix = \\vt => "т" + a4!vt + "л" ;
|
||||
saar4 : Suffix = \\vt => "с" + aa4!vt + "р" ;
|
||||
nguut2 : Suffix = table {MascA | MascO => "нгуут" ; FemE | FemOE => "нгүүт"} ;
|
||||
ngaa4 : Suffix = \\vt => "нг" + aa4!vt ;
|
||||
aad4 : Suffix = \\vt => aa4!vt + "д" ;
|
||||
|
||||
@@ -16,10 +16,8 @@ oper 'إِرْهابِي_N' = wmkN { g = masc ; sg = "إِرْهابِي" } ;
|
||||
oper 'عَاصِمَة_N' = wmkN { g = fem ; pl = "عَوَاصِم" ; root = "عصم" ; sg = "عَاصِمَة" } ;
|
||||
oper 'رِعايَة_N' = wmkN { g = fem ; root = "رعي" ; sg = "رِعايَة" } ;
|
||||
oper 'طِفْل_N' = wmkN { g = masc ; pl = "أَطْفَال" ; root = "طفل" ; sg = "طِفْل" } ;
|
||||
oper 'طِفْل_N' = wmkN { g = masc ; pl = "أَطْفَال" ; root = "طفل" ; sg = "طِفْل" } ;
|
||||
oper 'مَدِينَة_N' = wmkN { g = fem ; pl = "مُدُن" ; root = "مدن" ; sg = "مَدِينَة" } ;
|
||||
oper 'دَوْلَة_N' = wmkN { g = fem ; pl = "دُوَل" ; sg = "دَوْلَة" } ;
|
||||
oper 'دَوْلَة_N' = wmkN { g = fem ; pl = "دُوَل" ; sg = "دَوْلَة" } ;
|
||||
oper 'ثَقَافَة_N' = wmkN { g = fem ; pl = "ثَقَافَات" ; root = "ثقف" ; sg = "ثَقَافَة" } ;
|
||||
oper 'اِنْخِفَاض_N' = wmkN { g = masc ; pl = "اِنْخِفَاضَات" ; sg = "اِنْخِفَاض" } ;
|
||||
oper 'تَوْزِيع_N' = wmkN { g = masc ; sg = "تَوْزِيع" } ;
|
||||
@@ -65,15 +63,11 @@ oper 'فُنْدُق_N' = wmkN { g = masc ; pl = "فَنَادِق" ; sg = "فُ
|
||||
oper 'فِهْرِس_N' = wmkN { g = masc ; pl = "فَهَارِس" ; sg = "فِهْرِس" } ;
|
||||
oper 'تَضَخُّم_N' = wmkN { g = masc ; root = "ضخم" ; sg = "تَضَخُّم" } ;
|
||||
oper 'مَوْضِع_N' = wmkN { g = masc ; pl = "مَوَاضِع" ; root = "وضع" ; sg = "مَوْضِع" } ;
|
||||
oper 'رَئِيس_N' = wmkN { g = masc ; pl = "رُؤَسَاء" ; root = "رءس" ; sg = "رَئِيس" } ;
|
||||
oper 'رَئِيس_N' = wmkN { g = masc ; pl = "رُؤَسَاء" ; root = "رءس" ; sg = "رَئِيس" } ;
|
||||
oper 'مُنْتَج_N' = wmkN { g = masc ; pl = "مُنْتَجَات" ; sg = "مُنْتَج" } ;
|
||||
oper 'مَلِكَة_N' = wmkN { g = fem ; pl = "مَلِكَات" ; sg = "مَلِكَة" } ;
|
||||
oper 'مُعَدَّل_N' = wmkN { g = masc ; root = "عدل" ; sg = "مُعَدَّل" } ;
|
||||
oper 'مُعَدَّل_N' = wmkN { g = masc ; root = "عدل" ; sg = "مُعَدَّل" } ;
|
||||
oper 'مَاء_N' = wmkN { g = masc ; pl = "مِيَاه" ; root = "موه" ; sg = "مَاء" } ;
|
||||
oper 'عَالَم_N' = wmkN { g = masc ; pl = "عَالَمُون" ; sg = "عَالَم" } ;
|
||||
oper 'عَالَم_N' = wmkN { g = masc ; pl = "عَالَمُون" ; sg = "عَالَم" } ;
|
||||
oper 'مَنْطِقَة_N' = wmkN { g = fem ; pl = "مَنْطِقَات" ; root = "نطق" ; sg = "مَنْطِقَة" } ;
|
||||
oper 'كِتَاب_N' = wmkN { g = masc ; pl = "كُتُب" ; sg = "كِتَاب" } ;
|
||||
oper 'عُمْلَة_N' = wmkN { g = fem ; pl = "عُمْلَات" ; root = "عمل" ; sg = "عُمْلَة" } ;
|
||||
@@ -82,7 +76,6 @@ oper 'شَرْق_N' = wmkN { g = masc ; sg = "شَرْق" } ;
|
||||
oper 'رَأْس_N' = wmkN { g = masc ; pl = "رُؤُوس" ; sg = "رَأْس" } ;
|
||||
oper 'سُكّان_N' = wmkN { g = fem ; sg = "سُكّان" } ;
|
||||
oper 'مَلَكِيَّة_N' = wmkN { g = fem ; pl = "مَلَكِيَّات" ; root = "ملك" ; sg = "مَلَكِيَّة" } ;
|
||||
oper 'سُكّان_N' = wmkN { g = fem ; sg = "سُكّان" } ;
|
||||
oper 'جُمْهُورِيَّة_N' = wmkN { g = fem ; pl = "جُمْهُورِيَّات" ; sg = "جُمْهُورِيَّة" } ;
|
||||
oper 'رُوسِيَّة_N' = wmkN { g = fem ; pl = "رُوسِيَّات" ; sg = "رُوسِيَّة" } ;
|
||||
oper 'جَنُوب_N' = wmkN { g = masc ; root = "جنب" ; sg = "جَنُوب" } ;
|
||||
@@ -126,7 +119,6 @@ oper 'عَرَبِي_A' = wmkA { fem_pl = "عَرَبِيَّات" ; fem_sg = "
|
||||
oper 'حُر_A' = wmkA { fem_pl = "حُرَّات" ; fem_sg = "حُرَّة" ; masc_pl = "أَحْرَار" ; masc_sg = "حُر" ; root = "حرر" } ;
|
||||
oper 'هَجِين_A' = wmkA { fem_pl = "هَجَائِن" ; fem_sg = "هَجِين" ; masc_pl = "هِجَان" ; masc_sg = "هَجِين" ; root = "هجن" } ;
|
||||
oper 'رَسْمِي_A' = wmkA { fem_pl = "رَسْمِيَّات" ; fem_sg = "رَسْمِيَّة" ; masc_pl = "رَسْمِيُّون" ; masc_sg = "رَسْمِي" } ;
|
||||
oper 'رَسْمِي_A' = wmkA { fem_pl = "رَسْمِيَّات" ; fem_sg = "رَسْمِيَّة" ; masc_pl = "رَسْمِيُّون" ; masc_sg = "رَسْمِي" } ;
|
||||
oper 'أُرْثُوذُكْسِيَّة_A' = wmkA { fem_sg = "nan" ; masc_sg = "nan" } ;
|
||||
oper 'مُرَبَّع_A' = wmkA { fem_pl = "مُرَبَّعَات" ; fem_sg = "مُرَبَّعَة" ; masc_pl = "مُرَبَّعُون" ; masc_sg = "مُرَبَّع" } ;
|
||||
oper 'مُسْلِم_A' = wmkA { fem_pl = "مُسْلِمَات" ; fem_sg = "مُسْلِمَة" ; masc_pl = "مُسْلِمُون" ; masc_sg = "مُسْلِم" ; root = "سلم" } ;
|
||||
|
||||
@@ -107,8 +107,6 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX)
|
||||
VP = VerbPhrase;
|
||||
Comp = { s: GenNum => Str };
|
||||
|
||||
Ord = { s : AForm => Str };
|
||||
|
||||
A = Adj;
|
||||
A2 = Adj ** { c : Complement };
|
||||
|
||||
|
||||
@@ -30,8 +30,6 @@ lin
|
||||
}
|
||||
};
|
||||
UttImpPol = UttImpPl;
|
||||
--UttAdv : Adv -> Utt ; -- here
|
||||
UttAdv adv = {s= adv.s};
|
||||
|
||||
-- better but can be improved upon
|
||||
UttVP vp = case <vp.isCompApStem,vp.containsAdv, vp.containsAdV,vp.containsComp, vp.containsComp2> of {
|
||||
|
||||
@@ -393,8 +393,6 @@ oper
|
||||
= \word, g, anim, zi, rel, p -> lin N2 (mkFun (noMinorCases (Z.makeNoun word g anim rel AdjType (Z.parseIndex zi))) p) ;
|
||||
} ;
|
||||
|
||||
nullPrep : Prep = lin Prep {s=[] ; c=Gen ; neggen=False ; hasPrep=False} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> Prep -> Prep -> N3
|
||||
= \n, p2, p3 -> lin N3 (mkFun2 n p2 p3) ;
|
||||
|
||||
@@ -125,6 +125,7 @@ concrete CatSom of Cat = CommonX - [Adv,IAdv] ** open ResSom, Prelude in {
|
||||
|
||||
linref
|
||||
-- Cl = linCl ;
|
||||
V, VS, VQ, VA, VV, V2A, V2V, V2S, V2Q, V2, V3 = \v -> v.s ! VImp Sg Pos ;
|
||||
VP = infVP ;
|
||||
CN = linCN ;
|
||||
Prep = \prep -> prep.s ! ZeroObj ++ prep.sii ++ prep.dhex ++ prep.hoostiisa ! Sg3 Masc ;
|
||||
|
||||
154
src/somali/DocumentationSom.gf
Normal file
154
src/somali/DocumentationSom.gf
Normal file
@@ -0,0 +1,154 @@
|
||||
concrete DocumentationSom of Documentation = CatSom ** open ResSom,Prelude,HTML in {
|
||||
lincat Definition = {s : Str} ;
|
||||
lincat Document = {s : Str} ;
|
||||
lincat Inflection = {t : Str; s1 : Str; s2 : Str} ;
|
||||
lincat Tag = {s : Str} ;
|
||||
lin InflectionA, InflectionA2 = \adj -> {
|
||||
t = "a";
|
||||
s1 = heading1 "Adjective";
|
||||
s2 = frameTable (tr (td "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (adj.s ! AF Sg Nom) ++ td (adj.s ! AF Pl Nom)) ++
|
||||
tr (th "Abs" ++ td (adj.s ! AF Sg Abs) ++ td (adj.s ! AF Pl Abs)))
|
||||
} ;
|
||||
lin InflectionAdA, InflectionAdN, InflectionAdV = \adv -> {
|
||||
t = "adv";
|
||||
s1 = heading1 "Adverb";
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
lin InflectionAdv adv = {t = "adv"; s1 = heading1 "Adverb";
|
||||
s2 = frameTable (tr (th "sii" ++ td adv.sii)
|
||||
++ tr (th "dhex" ++ td adv.dhex)
|
||||
++ tr (th "berri" ++ td adv.berri)
|
||||
++ tr (th "miscAdv" ++ td adv.miscAdv)
|
||||
++ tr (th "np" ++ td adv.np.s))} ;
|
||||
lin InflectionGN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionLN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionN,InflectionN2,InflectionN3 = \noun -> {
|
||||
t = "n";
|
||||
s1 = heading1 "Noun";
|
||||
s2 = frameTable (tr (td "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Def" ++ td (noun.s ! Def Sg) ++ td (noun.s ! Def Pl)) ++
|
||||
tr (th "Indef" ++ td (noun.s ! Indef Sg) ++ td (noun.s ! Indef Pl)) ++
|
||||
tr (th "Nom" ++ td (noun.s ! NomSg) ++ td []) ++
|
||||
tr (th "Numerative" ++ intagAttr "td" "colspan=2" (noun.s ! Numerative)))
|
||||
} ;
|
||||
lin InflectionPN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionPrep prep = {t = "prep"; s1 = heading1 "Preposition";
|
||||
s2 = frameTable (tr (th "Sg1Obj" ++ td (prep.s ! Sg1Obj))
|
||||
++ tr (th "Sg2Obj" ++ td (prep.s ! Sg2Obj))
|
||||
++ tr (th "(Pl1Obj Excl)"
|
||||
++ td (prep.s ! Pl1Obj Excl))
|
||||
++ tr (th "(Pl1Obj Incl)"
|
||||
++ td (prep.s ! Pl1Obj Incl))
|
||||
++ tr (th "Pl2Obj"
|
||||
++ td (prep.s ! Pl2Obj))
|
||||
++ tr (th "ReflexiveObj"
|
||||
++ td (prep.s
|
||||
! ReflexiveObj))
|
||||
++ tr (th "ZeroObj"
|
||||
++ td (prep.s
|
||||
! ZeroObj))
|
||||
++ tr (th "berri"
|
||||
++ td prep.berri)
|
||||
++ tr (th "sii"
|
||||
++ td prep.sii)
|
||||
++ tr (th "dhex"
|
||||
++ td prep.dhex)
|
||||
++ tr (th "hoostiisa Sg1"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg1))
|
||||
++ tr (th "hoostiisa Sg2"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg2))
|
||||
++ tr (th "hoostiisa (Sg3 Masc)"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg3 Masc))
|
||||
++ tr (th "hoostiisa (Sg3 Fem)"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg3 Fem))
|
||||
++ tr (th "hoostiisa (Pl1 Excl)"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl1 Excl))
|
||||
++ tr (th "hoostiisa (Pl1 Incl)"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl1 Incl))
|
||||
++ tr (th "hoostiisa Pl2"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl2))
|
||||
++ tr (th "hoostiisa Pl3"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl3))
|
||||
++ tr (th "hoostiisa Impers"
|
||||
++ td (prep.hoostiisa
|
||||
! Impers)))} ;
|
||||
lin InflectionSN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionV v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2 v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2A v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2Q v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2S v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2V v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV3 v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVA v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVQ v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVS v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVV v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin MkDefinition t d = {s = "<p><b>Definition:</b>"
|
||||
++ t.s ++ d.s ++ "</p>"} ;
|
||||
lin MkDefinitionEx t d e = {s = "<p><b>Definition:</b>"
|
||||
++ t.s ++ d.s ++ "<p><b>Example:</b>" ++ t.s ++ "</p>"} ;
|
||||
lin MkDocument d i e = {s = i.s1 ++ i.s2} ;
|
||||
lin MkTag i = {s = i.t} ;
|
||||
lin NoDefinition t = t ;
|
||||
|
||||
oper inflectV : Verb -> Str = \v ->
|
||||
heading2 "Infinitive" ++
|
||||
paragraph (v.s ! VInf) ++
|
||||
heading2 "Present" ++
|
||||
heading3 "Simple" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPres Simple Sg1_Sg3Masc Pos) ++ td (v.s ! VPres Simple Sg1_Sg3Masc Neg)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPres Simple Sg2_Sg3Fem Pos) ++ td (v.s ! VPres Simple Sg2_Sg3Fem Neg)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPres Simple Pl1_ Pos) ++ td (v.s ! VPres Simple Pl1_ Neg)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPres Simple Pl2_ Pos) ++ td (v.s ! VPres Simple Pl2_ Neg)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPres Simple Pl3_ Pos) ++ td (v.s ! VPres Simple Pl3_ Neg))) ++
|
||||
heading3 "Progressive" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPres Progressive Sg1_Sg3Masc Pos) ++ td (v.s ! VPres Progressive Sg1_Sg3Masc Neg)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPres Progressive Sg2_Sg3Fem Pos) ++ td (v.s ! VPres Progressive Sg2_Sg3Fem Neg)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPres Progressive Pl1_ Pos) ++ td (v.s ! VPres Progressive Pl1_ Neg)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPres Progressive Pl2_ Pos) ++ td (v.s ! VPres Progressive Pl2_ Neg)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPres Progressive Pl3_ Pos) ++ td (v.s ! VPres Progressive Pl3_ Neg))) ++
|
||||
heading2 "Past" ++
|
||||
heading3 "Simple" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPast Simple Sg1_Sg3Masc) ++ intagAttr "td" "rowspan=5" (v.s ! VNegPast Simple)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPast Simple Sg2_Sg3Fem)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPast Simple Pl1_)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPast Simple Pl2_)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPast Simple Pl3_))) ++
|
||||
heading3 "Progressive" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPast Progressive Sg1_Sg3Masc) ++ intagAttr "td" "rowspan=5" (v.s ! VNegPast Progressive)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPast Progressive Sg2_Sg3Fem)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPast Progressive Pl1_)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPast Progressive Pl2_)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPast Progressive Pl3_))) ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg" ++ td (v.s ! VImp Sg Pos) ++ td (v.s ! VImp Sg Neg)) ++
|
||||
tr (th "Pl" ++ td (v.s ! VImp Pl Pos) ++ td (v.s ! VImp Pl Neg))) ++
|
||||
heading2 "Relative" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "SgMasc" ++ td (v.s ! VRel SgMasc) ++ intagAttr "td" "rowspan=3" (v.s ! VRelNeg)) ++
|
||||
tr (th "SgFem" ++ td (v.s ! VRel SgFem)) ++
|
||||
tr (th "PlInv" ++ td (v.s ! VRel PlInv))) ++
|
||||
heading2 "Negative Conditional" ++
|
||||
frameTable (tr (th "SgMasc" ++ td (v.s ! VNegCond SgMasc)) ++
|
||||
tr (th "SgFem" ++ td (v.s ! VNegCond SgFem)) ++
|
||||
tr (th "PlInv" ++ td (v.s ! VNegCond PlInv))) ;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
concrete LangSom of Lang =
|
||||
GrammarSom,
|
||||
LexiconSom,
|
||||
ConstructionSom ;
|
||||
ConstructionSom,
|
||||
DocumentationSom ;
|
||||
|
||||
@@ -64,7 +64,10 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
} ;
|
||||
|
||||
-- : Pron -> NP ;
|
||||
UsePron pron = pron ** {st = Definite} ;
|
||||
UsePron pron = pron ** {
|
||||
s = pron.sp ;
|
||||
st = Definite
|
||||
} ;
|
||||
|
||||
-- : Predet -> NP -> NP ; -- only the man
|
||||
PredetNP predet np =
|
||||
@@ -250,7 +253,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
mod = \\st,n,c =>
|
||||
cn.mod ! st ! n ! Abs -- If there was something before, it is now in Abs
|
||||
++ andConj st cn.modtype -- If the sentence is already modified, any new modifier needs to be introduced with conjunction
|
||||
++ ap.s ! AF n c ;
|
||||
++ ap.s ! AF n c ++ " " ++ ap.compar ;
|
||||
modtype = AMod
|
||||
} ;
|
||||
|
||||
|
||||
@@ -23,6 +23,18 @@ Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQ
|
||||
LangSom: bisad BIND daasi bisad BIND dan waa ka weyn tahay
|
||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompAP (ComparA big_A (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)))))))) NoVoc
|
||||
|
||||
-- LangEng: house bigger than car
|
||||
LangSom: guri ka weyn baabuur
|
||||
Lang: PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (MassNP (UseN car_N))) (UseN house_N))) NoVoc
|
||||
|
||||
-- LangEng: house bigger than he
|
||||
Lang> l PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (UsePron he_Pron)) (UseN house_N))) NoVoc
|
||||
guri ka weyn isaga
|
||||
|
||||
-- LangEng: house bigger than I
|
||||
Lang> l PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (UsePron i_Pron)) (UseN house_N))) NoVoc
|
||||
guri ka weyn aniga
|
||||
|
||||
-- LangEng: that cat is biggest
|
||||
LangSom: bisad BIND daasi waa ugu weyn tahay
|
||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompAP (AdjOrd (OrdSuperl big_A))))))) NoVoc
|
||||
|
||||
@@ -125,10 +125,4 @@ oper
|
||||
comp = \\a => vps.comp ! a ++ (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ agent ;
|
||||
} ;
|
||||
|
||||
lin ExistsNP np =
|
||||
mkClause [] True False np.a
|
||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||
(predV (mkV "existir"))) ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
concrete AdjectiveTok of Adjective = CatTok ** open ResTok, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
-- : AP -> Adv -> AP ; -- warm by nature
|
||||
AdvAP ap adv = ap ** {
|
||||
s = ap.s ++ adv.s ;
|
||||
} ;
|
||||
|
||||
-- : A -> AP ;
|
||||
PositA a = a ;
|
||||
|
||||
-- : A -> NP -> AP ;
|
||||
ComparA a np = a ; -- Not straightforward for Toki Pona.
|
||||
|
||||
-- : A2 -> NP -> AP ; -- married to her
|
||||
-- ComplA2 a2 np = a2 ** { } ;
|
||||
|
||||
-- : A2 -> AP ; -- married to itself
|
||||
-- ReflA2 a2 = a2 ** { } ;
|
||||
|
||||
-- : A2 -> AP ; -- married
|
||||
UseA2 = PositA ;
|
||||
|
||||
-- : A -> AP ; -- warmer
|
||||
-- UseComparA a = a ** {
|
||||
-- s = \\af => "???" ++ a.s ! af ;
|
||||
-- compar = []
|
||||
-- } ;
|
||||
|
||||
|
||||
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||
-- CAdvAP adv ap np = ap ** { } ;
|
||||
|
||||
-- The superlative use is covered in $Ord$.
|
||||
|
||||
-- : Ord -> AP ; -- warmest
|
||||
-- AdjOrd ord = ord ** {
|
||||
-- compar = []
|
||||
-- } ;
|
||||
-- AdjOrd : Ord -> AP =
|
||||
AdjOrd ord = ord ;
|
||||
|
||||
-- Sentence and question complements defined for all adjectival
|
||||
-- phrases, although the semantics is only clear for some adjectives.
|
||||
|
||||
-- : AP -> SC -> AP ; -- good that she is here
|
||||
-- SentAP ap sc = ap ** {
|
||||
-- s = \\af => ap.s ! af ++ sc.s
|
||||
-- } ;
|
||||
|
||||
-- An adjectival phrase can be modified by an *adadjective*, such as "very".
|
||||
|
||||
-- : AdA -> AP -> AP ;
|
||||
-- AdAP ada ap = ap ** { } ;
|
||||
|
||||
|
||||
-- It can also be postmodified by an adverb, typically a prepositional phrase.
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
concrete AdverbTok of Adverb = CatTok ** open ResTok, ParadigmsTok, Prelude in {
|
||||
lin
|
||||
|
||||
-- : A -> Adv ;
|
||||
PositAdvAdj adj = {s=adj.s;} ;
|
||||
|
||||
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
||||
-- ComparAdvAdj cadv a np =
|
||||
|
||||
-- : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||
-- ComparAdvAdjS cadv a s =
|
||||
|
||||
-- : Prep -> NP -> Adv ;
|
||||
PrepNP prep np = {
|
||||
s = prep.s ++ np.s ;
|
||||
} ;
|
||||
|
||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||
|
||||
-- : AdA -> Adv -> Adv ; -- very quickly
|
||||
-- AdAdv ada adv = adv **
|
||||
|
||||
-- Like adverbs, adadjectives can be produced by adjectives.
|
||||
|
||||
-- : A -> AdA ; -- extremely
|
||||
-- PositAdAAdj a =
|
||||
|
||||
-- Subordinate clauses can function as adverbs.
|
||||
|
||||
-- : Subj -> S -> Adv ;
|
||||
-- SubjS subj s = {s = subj.s ++ s.s} ;
|
||||
|
||||
-- Comparison adverbs also work as numeral adverbs.
|
||||
|
||||
-- : CAdv -> AdN ; -- less (than five)
|
||||
-- AdnCAdv cadv = ;
|
||||
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
|
||||
concrete AllTok of AllTokAbs =
|
||||
LangTok,
|
||||
ExtendTok
|
||||
;
|
||||
@@ -1,5 +0,0 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllTokAbs =
|
||||
Lang,
|
||||
Extend ;
|
||||
@@ -1,120 +0,0 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
concrete CatTok of Cat = CommonX ** open ResTok, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lincat
|
||||
|
||||
--2 Sentences and clauses
|
||||
-- Constructed in SentenceTok, and also in IdiomTok
|
||||
S = SS ;
|
||||
QS = SS ;
|
||||
RS = SS ;
|
||||
-- relative sentence. Tense and polarity fixed,
|
||||
-- but agreement may depend on the CN/NP it modifies.
|
||||
|
||||
Cl = ResTok.LinCl ;
|
||||
ClSlash = SS ;
|
||||
SSlash = SS ; -- sentence missing NP; e.g. "she has looked at"
|
||||
Imp = SS ; -- imperative e.g. "look at this"
|
||||
|
||||
--2 Questions and interrogatives
|
||||
|
||||
-- Constructed in QuestionTok.
|
||||
QCl = SS ;
|
||||
IComp = SS ; -- interrogative complement of copula e.g. "where"
|
||||
IDet = SS ; -- interrogative determiner e.g. "how many"
|
||||
IQuant = SS ; -- interrogative quantifier e.g. "which"
|
||||
IP = SS ; -- interrogative pronoun e.g. "who"
|
||||
|
||||
--2 Subord clauses and pronouns
|
||||
|
||||
RCl = SS ;
|
||||
RP = SS ;
|
||||
|
||||
--2 Verb phrases
|
||||
|
||||
-- Constructed in VerbTok.
|
||||
VP,VPSlash = ResTok.LinVP ;
|
||||
Comp = SS ;
|
||||
|
||||
--2 Adjectival phrases
|
||||
|
||||
-- Constructed in AdjectiveTok.
|
||||
AP = SS ;
|
||||
|
||||
--2 Nouns and noun phrases
|
||||
|
||||
-- Constructed in NounTok.
|
||||
-- Many atomic noun phrases e.g. "everybody"
|
||||
-- are constructed in StructuralTok.
|
||||
|
||||
CN = ResTok.LinCN ;
|
||||
NP = ResTok.LinNP ;
|
||||
-- NB. Pronouns need enough info to become NP or Quant.
|
||||
Pron = ResTok.LinPron ;
|
||||
Det = ResTok.LinDet ; -- s : Str , n : Number
|
||||
Predet = SS ;
|
||||
Quant = ResTok.LinQuant ; -- s : Number => Str
|
||||
Num = ResTok.LinDet ;
|
||||
Card = ResTok.LinDet ;
|
||||
ACard = SS ;
|
||||
Ord = SS ;
|
||||
DAP = SS ;
|
||||
|
||||
|
||||
--2 Numerals
|
||||
|
||||
-- Constructed in NumeralTok.
|
||||
|
||||
Numeral = ResTok.LinNumeral ;
|
||||
Digits = ResTok.LinNumeral ;
|
||||
Decimal = SS ;
|
||||
|
||||
--2 Structural words
|
||||
|
||||
-- Constructed in StructuralTok.
|
||||
Conj = Coordination.ConjunctionDistr ;
|
||||
Subj = SS ;
|
||||
Prep = SS ;
|
||||
|
||||
|
||||
|
||||
--2 Words of open classes
|
||||
|
||||
-- These are constructed in LexiconTok and in
|
||||
-- additional lexicon modules.
|
||||
|
||||
-- TODO: eventually different lincats
|
||||
VS, -- sentence-complement verb e.g. "claim"
|
||||
VQ, -- question-complement verb e.g. "wonder"
|
||||
VA, -- adjective-complement verb e.g. "look"
|
||||
V = ResTok.LinV ;
|
||||
|
||||
VV -- verb-phrase-complement verb e.g. "want"
|
||||
= ResTok.Preverb ;
|
||||
|
||||
V2A, -- verb with NP and AP complement e.g. "paint"
|
||||
V2V, -- verb with NP and V complement e.g. "cause"
|
||||
V2S, -- verb with NP and S complement e.g. "tell"
|
||||
V2Q, -- verb with NP and Q complement e.g. "ask"
|
||||
V2 = SS ;
|
||||
V3 = SS ;
|
||||
|
||||
A = SS ;
|
||||
A2 = SS ;
|
||||
|
||||
N = ResTok.LinN ;
|
||||
N2 = ResTok.LinN ;
|
||||
N3 = ResTok.LinN ;
|
||||
PN = ResTok.LinPN ;
|
||||
|
||||
-- From the Names module, not in the official API as of 2023-08
|
||||
GN = SS ; -- Given name, e.g. "George"
|
||||
SN = SS ; -- Second name, e.g. "Washington"
|
||||
LN = SS ; -- Location name, e.g. "Sweden"
|
||||
|
||||
-- linref
|
||||
-- Cl = linCl ;
|
||||
|
||||
}
|
||||
@@ -1,147 +0,0 @@
|
||||
concrete ConjunctionTok of Conjunction =
|
||||
CatTok ** open ResTok, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
{- Conjunction for category X needs four things:
|
||||
lincat [X]
|
||||
lin BaseX
|
||||
lin ConsX
|
||||
lin ConjX
|
||||
|
||||
For example, if X is defined as
|
||||
|
||||
lincat X = {s : Number => Str ; g : Gender} ;
|
||||
|
||||
then [X] will split its s field into two, and retain its other fields as is:
|
||||
|
||||
lincat [X] = {s1,s2 : Number => Str ; g : Gender} ;
|
||||
|
||||
Let us look at a simple case: Adv is of type {s : Str}
|
||||
Then [Adv] is {s1,s2 : Str}.
|
||||
BaseAdv, ConsAdv and ConjAdv can all use functions defined in prelude/Coordination:
|
||||
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS comma ;
|
||||
ConjAdv = conjunctSS ;
|
||||
|
||||
--}
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Adverb and other simple {s : Str} types.
|
||||
lincat
|
||||
[Adv],[AdV],[IAdv] = {s1,s2 : Str} ;
|
||||
|
||||
lin
|
||||
BaseAdv, BaseAdV, BaseIAdv = twoSS ;
|
||||
ConsAdv, ConsAdV, ConsIAdv = consrSS comma ;
|
||||
ConjAdv, ConjAdV, ConjIAdv = conjunctDistrSS ;
|
||||
|
||||
{-
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- S is sometimes already {s : Str}, sometimes open for mood or word order.
|
||||
-- Simply take the lincat of S, and split the s field into s1 and s2.
|
||||
-- Then make sure that all of the other fields are retained.
|
||||
|
||||
lincat
|
||||
[S] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : S -> S -> ListS ; -- John walks, Mary runs
|
||||
BaseS x y =
|
||||
|
||||
-- : S -> ListS -> ListS ; -- John walks, Mary runs, Bill swims
|
||||
ConsS x xs =
|
||||
|
||||
-- : Conj -> ListS -> S ; -- he walks and she runs
|
||||
ConjS conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- RS is variable on … and has inherent …
|
||||
-- RS can modify CNs, which are open for …, and have inherent …
|
||||
|
||||
lincat
|
||||
[RS] = {s1,s2 : … => Str} ;
|
||||
|
||||
lin
|
||||
|
||||
-- : RS -> RS -> ListRS ; -- who walks, whom I know
|
||||
BaseRS x y =
|
||||
|
||||
-- : RS -> ListRS -> ListRS ; -- who wals, whom I know, who is here
|
||||
ConsRS x xs =
|
||||
|
||||
-- : Conj -> ListRS -> RS ; -- who walks and whose mother runs
|
||||
ConjRS conj xs =
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- NP is variable on … and has inherent …
|
||||
|
||||
lincat
|
||||
[NP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : NP -> NP -> ListNP ; -- John, Mary
|
||||
BaseNP x y =
|
||||
|
||||
-- : NP -> ListNP -> ListNP ; -- John, Mary, Bill
|
||||
ConsNP x xs =
|
||||
|
||||
-- : Conj -> ListNP -> NP ; -- she or we
|
||||
ConjNP conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- AP is variable on … and has an inherent …
|
||||
|
||||
lincat
|
||||
[AP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : AP -> AP -> ListAP ; -- red, white
|
||||
BaseAP x y =
|
||||
|
||||
-- : AP -> ListAP -> ListAP ; -- red, white, blue
|
||||
ConsAP x xs =
|
||||
|
||||
-- : Conj -> ListAP -> AP ; -- cold and warm
|
||||
ConjAP conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- CN is variable on …
|
||||
-- CN conjunction is not in the API, so this can be lower prio
|
||||
|
||||
lincat
|
||||
[CN] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : CN -> CN -> ListCN ; -- man, woman
|
||||
BaseCN x y =
|
||||
|
||||
-- : CN -> ListCN -> ListCN ; -- man, woman, child
|
||||
ConsCN x xs =
|
||||
|
||||
-- : Conj -> ListCN -> CN ; -- man and woman
|
||||
ConjCN conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Det and DAP
|
||||
-- Note that there is no [Det], the way to coordinate Dets is to make them
|
||||
-- into DAP first, using Noun.DetDAP : Det -> DAP ;
|
||||
-- DAP ("three small") isn't used in any API functions, so lower prio.
|
||||
|
||||
lincat
|
||||
[DAP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : DAP -> DAP -> ListDAP ;
|
||||
BaseDAP x y =
|
||||
|
||||
-- : DAP -> ListDAP -> ListDAP ;
|
||||
ConsDAP xs x =
|
||||
|
||||
-- : Conj -> ListDAP -> Det ; -- his or her
|
||||
ConjDet conj xs =
|
||||
-}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
concrete ConstructionTok of Construction = CatTok ** open ParadigmsTok in {
|
||||
|
||||
lincat
|
||||
Timeunit = N ;
|
||||
Weekday = N ;
|
||||
Monthday = NP ;
|
||||
Month = N ;
|
||||
Year = NP ;
|
||||
{-
|
||||
lin
|
||||
|
||||
timeunitAdv n time =
|
||||
let n_card : Card = n ;
|
||||
n_hours_NP : NP = mkNP n_card time ;
|
||||
in SyntaxTok.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ;
|
||||
|
||||
weekdayPunctualAdv w = ; -- on Sunday
|
||||
weekdayHabitualAdv w = ; -- on Sundays
|
||||
weekdayNextAdv w = -- next Sunday
|
||||
weekdayLastAdv w = -- last Sunday
|
||||
|
||||
monthAdv m = mkAdv in_Prep (mkNP m) ;
|
||||
yearAdv y = mkAdv in_Prep y ;
|
||||
dayMonthAdv d m = ; -- on 17 Tok
|
||||
monthYearAdv m y = ; -- in Tok 2012
|
||||
dayMonthYearAdv d m y = ; -- on 17 Tok 2013
|
||||
|
||||
intYear = symb ;
|
||||
intMonthday = symb ;
|
||||
|
||||
lincat Language = N ;
|
||||
|
||||
lin InLanguage l = mkAdv ???_Prep (mkNP l) ;
|
||||
|
||||
lin
|
||||
weekdayN w = w ;
|
||||
monthN m = m ;
|
||||
|
||||
weekdayPN w = mkPN w ;
|
||||
monthPN m = mkPN m ;
|
||||
|
||||
languageCN l = mkCN l ;
|
||||
languageNP l = mkNP l ;
|
||||
|
||||
|
||||
oper mkLanguage : Str -> N = \s -> mkN s ;
|
||||
|
||||
----------------------------------------------
|
||||
---- lexicon of special names
|
||||
|
||||
lin second_Timeunit = mkN "second" ;
|
||||
lin minute_Timeunit = mkN "minute" ;
|
||||
lin hour_Timeunit = mkN "hour" ;
|
||||
lin day_Timeunit = mkN "day" ;
|
||||
lin week_Timeunit = mkN "week" ;
|
||||
lin month_Timeunit = mkN "month" ;
|
||||
lin year_Timeunit = mkN "year" ;
|
||||
|
||||
lin monday_Weekday = mkN "Monday" ;
|
||||
lin tuesday_Weekday = mkN "Tuesday" ;
|
||||
lin wednesday_Weekday = mkN "Wednesday" ;
|
||||
lin thursday_Weekday = mkN "Thursday" ;
|
||||
lin friday_Weekday = mkN "Friday" ;
|
||||
lin saturday_Weekday = mkN "Saturday" ;
|
||||
lin sunday_Weekday = mkN "Sunday" ;
|
||||
|
||||
lin january_Month = mkN "January" ;
|
||||
lin february_Month = mkN "February" ;
|
||||
lin march_Month = mkN "March" ;
|
||||
lin april_Month = mkN "April" ;
|
||||
lin may_Month = mkN "May" ;
|
||||
lin june_Month = mkN "June" ;
|
||||
lin july_Month = mkN "July" ;
|
||||
lin august_Month = mkN "August" ;
|
||||
lin september_Month = mkN "September" ;
|
||||
lin october_Month = mkN "October" ;
|
||||
lin november_Month = mkN "November" ;
|
||||
lin december_Month = mkN "December" ;
|
||||
|
||||
lin afrikaans_Language = mkLanguage "Afrikaans" ;
|
||||
lin amharic_Language = mkLanguage "Amharic" ;
|
||||
lin arabic_Language = mkLanguage "Arabic" ;
|
||||
lin bulgarian_Language = mkLanguage "Bulgarian" ;
|
||||
lin catalan_Language = mkLanguage "Catalan" ;
|
||||
lin chinese_Language = mkLanguage "Chinese" ;
|
||||
lin danish_Language = mkLanguage "Danish" ;
|
||||
lin dutch_Language = mkLanguage "Dutch" ;
|
||||
lin english_Language = mkLanguage "Euslish" ;
|
||||
lin estonian_Language = mkLanguage "Estonian" ;
|
||||
lin finnish_Language = mkLanguage "Finnish" ;
|
||||
lin french_Language = mkLanguage "French" ;
|
||||
lin german_Language = mkLanguage "German" ;
|
||||
lin greek_Language = mkLanguage "Greek" ;
|
||||
lin hebrew_Language = mkLanguage "Hebrew" ;
|
||||
lin hindi_Language = mkLanguage "Hindi" ;
|
||||
lin japanese_Language = mkLanguage "Japanese" ;
|
||||
lin italian_Language = mkLanguage "Italian" ;
|
||||
lin latin_Language = mkLanguage "Latin" ;
|
||||
lin latvian_Language = mkLanguage "Latvian" ;
|
||||
lin maltese_Language = mkLanguage "Maltese" ;
|
||||
lin nepali_Language = mkLanguage "Nepali" ;
|
||||
lin norwegian_Language = mkLanguage "Norwegian" ;
|
||||
lin persian_Language = mkLanguage "Persian" ;
|
||||
lin polish_Language = mkLanguage "Polish" ;
|
||||
lin punjabi_Language = mkLanguage "Punjabi" ;
|
||||
lin romanian_Language = mkLanguage "Romanian" ;
|
||||
lin russian_Language = mkLanguage "Russian" ;
|
||||
lin sindhi_Language = mkLanguage "Sindhi" ;
|
||||
lin spanish_Language = mkLanguage "Spanish" ;
|
||||
lin swahili_Language = mkLanguage "Swahili" ;
|
||||
lin swedish_Language = mkLanguage "Swedish" ;
|
||||
lin thai_Language = mkLanguage "Thai" ;
|
||||
lin turkish_Language = mkLanguage "Turkish" ;
|
||||
lin urdu_Language = mkLanguage "Urdu" ;
|
||||
|
||||
-}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
concrete ExtendTok of Extend = CatTok
|
||||
** ExtendFunctor - [
|
||||
VPS -- finite VP's with tense and polarity
|
||||
, ListVPS
|
||||
, VPI
|
||||
, ListVPI -- infinitive VP's (TODO: with anteriority and polarity)
|
||||
, MkVPS
|
||||
, PredVPS
|
||||
|
||||
-- excluded because RGL funs needed for them not implemented yet
|
||||
, SlashBareV2S
|
||||
, PredAPVP
|
||||
, ComplBareVS
|
||||
, AdvIsNP, AdvIsNPAP
|
||||
, CompBareCN
|
||||
, CompIQuant
|
||||
, ComplSlashPartLast
|
||||
, ComplDirectVQ
|
||||
, ComplDirectVS
|
||||
, DetNPFem, DetNPMasc
|
||||
, ExistCN, ExistMassCN, ExistPluralCN, ExistsNP
|
||||
, ExistIPQS, ExistNPQS, ExistS
|
||||
, PredIAdvVP
|
||||
, PrepCN
|
||||
, ReflPossPron
|
||||
, UttVP, UttVPShort, UttAccNP, UttDatNP, UttAccIP, UttDatIP
|
||||
, EmptyRelSlash, StrandQuestSlash, StrandRelSlash
|
||||
, SubjRelNP
|
||||
, UseComp_ser, UseComp_estar
|
||||
, iFem_Pron, weFem_Pron, youFem_Pron, youPlFem_Pron, youPolFem_Pron, youPolPlFem_Pron, youPolPl_Pron, theyFem_Pron, theyNeutr_Pron
|
||||
, GenModNP
|
||||
|
||||
] with (Grammar=GrammarTok) ;
|
||||
@@ -1,17 +0,0 @@
|
||||
concrete GrammarTok of Grammar =
|
||||
NounTok
|
||||
, VerbTok
|
||||
, AdjectiveTok
|
||||
, AdverbTok
|
||||
, NumeralTok
|
||||
, SentenceTok
|
||||
, QuestionTok
|
||||
, RelativeTok
|
||||
, ConjunctionTok
|
||||
, PhraseTok
|
||||
, TextX
|
||||
, StructuralTok
|
||||
, IdiomTok
|
||||
, TenseX
|
||||
, NamesTok -- Not part of original Grammar, here to trigger compilation
|
||||
;
|
||||
@@ -1,56 +0,0 @@
|
||||
|
||||
--1 Idiom: Idiomatic Expressions
|
||||
|
||||
concrete IdiomTok of Idiom = CatTok ** open Prelude, ResTok, VerbTok, QuestionTok, NounTok, StructuralTok in {
|
||||
|
||||
-- This module defines constructions that are formed in fixed ways,
|
||||
-- often different even in closely related languages.
|
||||
|
||||
{-
|
||||
lin
|
||||
|
||||
|
||||
-- ImpersCl : VP -> Cl ; -- it is hot
|
||||
ImpersCl vp = {
|
||||
} ;
|
||||
|
||||
-- : NP -> Cl ; -- there is a house
|
||||
ExistNP np =
|
||||
|
||||
-- ExistIP : IP -> QCl ; -- which houses are there
|
||||
ExistIP ip =
|
||||
|
||||
-- GenericCl : VP -> Cl ; -- one sleeps
|
||||
GenericCl vp =
|
||||
|
||||
CleftNP : NP -> RS -> Cl ; -- it is I who did it
|
||||
CleftAdv : Adv -> S -> Cl ; -- it is here she slept
|
||||
|
||||
-- : NP -> Cl ; -- there is a house
|
||||
ExistNP np =
|
||||
|
||||
ExistIP : IP -> QCl ; -- which houses are there
|
||||
|
||||
-- 7/12/2012 generalizations of these
|
||||
|
||||
ExistNPAdv : NP -> Adv -> Cl ; -- there is a house in Paris
|
||||
ExistIPAdv : IP -> Adv -> QCl ; -- which houses are there in Paris
|
||||
|
||||
-- : VP -> VP ;
|
||||
ProgrVP vp = vp ** {
|
||||
} ;
|
||||
|
||||
|
||||
-- : VP -> Utt ; -- let's go
|
||||
ImpPl1 vp = { } ;
|
||||
|
||||
ImpP3 : NP -> VP -> Utt ; -- let John walk
|
||||
|
||||
-- 3/12/2013 non-reflexive uses of "self"
|
||||
|
||||
SelfAdvVP : VP -> VP ; -- is at home himself
|
||||
SelfAdVVP : VP -> VP ; -- is himself at home
|
||||
SelfNP : NP -> NP ; -- the president himself (is at home)
|
||||
-}
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
--# -path=.:../abstract:../common:../prelude:../api
|
||||
concrete LangTok of Lang =
|
||||
GrammarTok,
|
||||
LexiconTok,
|
||||
ConstructionTok ;
|
||||
@@ -1,420 +0,0 @@
|
||||
concrete LexiconTok of Lexicon = CatTok **
|
||||
open ParadigmsTok, ResTok in {
|
||||
|
||||
----
|
||||
-- A
|
||||
|
||||
-- lin add_V3 = mkV3 (mkV "") ;
|
||||
-- lin airplane_N = mkN "" ;
|
||||
-- lin alas_Interj = mkInterj "" ;
|
||||
-- lin already_Adv = mkA "" ;
|
||||
lin animal_N = mkN "soweli" ;
|
||||
-- lin answer_V2S = mkV2S (mkV "") ;
|
||||
lin apartment_N = mkN "tomo" ;
|
||||
lin apple_N = mkN "kili" ;
|
||||
-- lin art_N = mkN "" ;
|
||||
-- lin ashes_N = mkN "" ;
|
||||
-- lin ask_V2Q = mkV2Q (mkV "") ;
|
||||
|
||||
----
|
||||
-- B
|
||||
|
||||
-- lin baby_N = mkN "" ;
|
||||
-- lin back_N = mkN "" ;
|
||||
-- lin bad_A = mkA "" ;
|
||||
lin bank_N = mkN "tomo mani" ;
|
||||
-- lin bark_N = mkN "" ;
|
||||
-- lin beautiful_A = mkA "" ;
|
||||
-- lin become_VA = mkVA (mkV "") ;
|
||||
lin beer_N = mkN "telo nasa" ;
|
||||
-- lin beg_V2V = mkV2V (mkV "") ;
|
||||
-- lin belly_N = mkN "" ;
|
||||
lin big_A = mkA "suli" ;
|
||||
-- lin bike_N = mkN "" ;
|
||||
|
||||
lin bird_N = mkN "waso" ;
|
||||
-- lin bite_V2 = mkV2 "" ;
|
||||
-- lin black_A = mkA "" ;
|
||||
-- lin blood_N = mkN "blood" ;
|
||||
-- lin blow_V = mkV "" ;
|
||||
-- lin blue_A = mkA "" ;
|
||||
-- lin boat_N = mkN "" ;
|
||||
-- lin bone_N = mkN "" ;
|
||||
-- lin boot_N = mkN "" ;
|
||||
-- lin boss_N = mkN "" ;
|
||||
lin book_N = mkN "lipu" ;
|
||||
lin boy_N = mkN "mije" ;
|
||||
-- lin bread_N = mkN "" ;
|
||||
lin break_V2 = mkV2 "pakala" ;
|
||||
-- lin breast_N = mkN "" ;
|
||||
-- lin breathe_V = mkV "" ;
|
||||
-- lin broad_A = mkA "" ;
|
||||
-- lin brother_N2 = mkN "" ;
|
||||
-- lin brown_A = mkA "" ;
|
||||
lin burn_V = mkV "seli" ;
|
||||
-- lin butter_N = mkN "" ;
|
||||
lin buy_V2 = mkV2 "esun" ;
|
||||
|
||||
----
|
||||
-- C
|
||||
|
||||
-- lin camera_N = mkN "" ;
|
||||
-- lin cap_N = mkN "" ;
|
||||
-- lin car_N = mkN "" ;
|
||||
-- lin carpet_N = mkN "" ;
|
||||
-- lin cat_N = mkN "" ;
|
||||
-- lin ceiling_N = mkN "" ;
|
||||
-- lin chair_N = mkN "" ;
|
||||
-- lin cheese_N = mkN "" ;
|
||||
-- lin child_N = mkN "" ;
|
||||
-- lin church_N = mkN "" ;
|
||||
-- lin city_N = mkN "" ;
|
||||
-- lin clean_A = mkA "" ;
|
||||
-- lin clever_A = mkA "" ;
|
||||
-- lin close_V2 = mkV2 "" ;
|
||||
-- lin cloud_N = mkN "" ;
|
||||
-- lin coat_N = mkN "" ;
|
||||
-- lin cold_A = mkA "" ;
|
||||
lin come_V = mkV "kama" ;
|
||||
-- lin computer_N = mkN "" ;
|
||||
-- lin correct_A = mkA "" ;
|
||||
-- lin count_V2 = mkV2 "" ;
|
||||
-- lin country_N = mkN "" ;
|
||||
-- lin cousin_N = mkN "" ;
|
||||
-- lin cow_N = mkN "" ;
|
||||
-- lin cut_V2 = mkV2 "" ;
|
||||
|
||||
----
|
||||
-- D
|
||||
|
||||
-- lin day_N = mkN "" ;
|
||||
lin die_V = mkV "moli" ;
|
||||
-- lin dig_V = mkV "" ;
|
||||
-- lin dirty_A = mkA "" ;
|
||||
-- lin distance_N3 = mkN3 (mkN "") ;
|
||||
-- lin do_V2 = mkV2 "" ;
|
||||
-- lin doctor_N = mkN "" ;
|
||||
lin dog_N = mkN "soweli" ;
|
||||
-- lin door_N = mkN "" ;
|
||||
-- lin drink_V2 = mkV2 "" ;
|
||||
-- lin dry_A = mkA "" ;
|
||||
-- lin dull_A = mkA "" ;
|
||||
-- lin dust_N = mkN "" ;
|
||||
|
||||
----
|
||||
-- E
|
||||
|
||||
lin ear_N = mkN "kute" ;
|
||||
lin earth_N = mkN "ma" ;
|
||||
lin eat_V2 = mkV "moku" ;
|
||||
-- lin egg_N = mkN "" ;
|
||||
-- lin empty_A = mkA "" ;
|
||||
-- lin enemy_N = mkN "" ;
|
||||
lin eye_N = mkN "lukin" ;
|
||||
|
||||
----
|
||||
-- F
|
||||
|
||||
-- lin factory_N = mkN "" ;
|
||||
-- lin fall_V = mkV "" ;
|
||||
-- lin far_Adv = mkA "" ;
|
||||
-- lin fat_N = mkN "" ;
|
||||
-- lin father_N2 = mkN2 (mkN "") ;
|
||||
-- lin fear_V2 = mkV2 "" ;
|
||||
-- lin fear_VS = mkVS (mkV "") ;
|
||||
-- lin feather_N = mkN "" ;
|
||||
-- lin fight_V2 = mkV2 "" ;
|
||||
-- lin find_V2 = mkV2 "" ;
|
||||
-- lin fingernail_N = mkN "" ;
|
||||
-- lin fire_N = mkN "" ;
|
||||
lin fish_N = mkN "kala" ;
|
||||
-- lin float_V = mkV "" ;
|
||||
-- lin floor_N = mkN "" ;
|
||||
-- lin flow_V = mkV "" ;
|
||||
-- lin flower_N = mkN "" ;
|
||||
-- lin fly_V = mkV "" ;
|
||||
-- lin fog_N = mkN "" ;
|
||||
-- lin foot_N = mkN "" ;
|
||||
-- lin forest_N = mkN "" ;
|
||||
-- lin forget_V2 = mkV2 "" ;
|
||||
-- lin freeze_V = mkV "" ;
|
||||
-- lin fridge_N = mkN "" ;
|
||||
lin friend_N = mkN "jan pona" ;
|
||||
lin fruit_N = mkN "kili" ;
|
||||
-- lin full_A = mkA "" ;
|
||||
-- --lin fun_AV
|
||||
|
||||
----
|
||||
-- G
|
||||
|
||||
-- lin garden_N = mkN "" ;
|
||||
-- lin girl_N = mkN "" ;
|
||||
-- lin give_V3 = mkV3 (mkV "") ;
|
||||
-- lin glove_N = mkN "" ;
|
||||
lin go_V = mkV "tawa" ;
|
||||
-- lin gold_N = mkN "" ;
|
||||
lin good_A = mkA "pona" ;
|
||||
-- lin grammar_N = mkN "" ;
|
||||
-- lin grass_N = mkN "" ;
|
||||
-- lin green_A = mkA "" ;
|
||||
|
||||
----
|
||||
-- H
|
||||
|
||||
-- lin hair_N = mkN "" ;
|
||||
lin hand_N = mkN "luka" ;
|
||||
-- lin harbour_N = mkN "" ;
|
||||
lin hat_N = mkN "len lawa" ;
|
||||
-- lin hate_V2 = mkV2 "" ;
|
||||
lin head_N = mkN "lawa" ;
|
||||
-- lin hear_V2 = mkV2 "" ;
|
||||
-- lin heart_N = mkN "" ;
|
||||
-- lin heavy_A = mkA "" ;
|
||||
-- lin hill_N = mkN "" ;
|
||||
-- lin hit_V2 = mkV2 "" ;
|
||||
-- lin hold_V2 = mkV2 "" ;
|
||||
-- lin hope_VS = mkV "" ;
|
||||
-- lin horn_N = mkN "" ;
|
||||
-- lin horse_N = mkN "" ;
|
||||
-- lin hot_A = mkA "" ;
|
||||
lin house_N = mkN "tomo" ;
|
||||
-- lin hunt_V2 = mkV2 "" ;
|
||||
-- lin husband_N = mkN "" ;
|
||||
|
||||
--------
|
||||
-- I - K
|
||||
|
||||
-- lin ice_N = mkN "" ;
|
||||
-- lin industry_N = mkN "" ;
|
||||
-- lin iron_N = mkN "" ;
|
||||
lin john_PN = mkPN "jan" "Jon" ;
|
||||
-- lin jump_V = mkV "" ;
|
||||
-- lin kill_V2 = mkV2 "" ;
|
||||
-- lin king_N = mkN "" ;
|
||||
-- lin knee_N = mkN "" ;
|
||||
lin know_V2 = mkV2 "sona" ;
|
||||
-- lin know_VQ = mkVQ (mkV "") ;
|
||||
-- lin know_VS = mkV "" ;
|
||||
|
||||
|
||||
----
|
||||
-- L
|
||||
|
||||
-- lin lake_N = mkN "" ;
|
||||
-- lin lamp_N = mkN "" ;
|
||||
lin language_N = mkN "toki" ;
|
||||
-- lin laugh_V = mkV "" ;
|
||||
-- lin leaf_N = mkN "" ;
|
||||
-- lin learn_V2 = mkV2 "" ;
|
||||
-- lin leather_N = mkN "" ;
|
||||
-- lin leave_V2 = mkV2 "" ;
|
||||
-- lin leg_N = mkN "" ;
|
||||
-- lin lie_V = mkV "" ;
|
||||
-- lin like_V2 = mkV2 "" ;
|
||||
-- lin listen_V2 = mkV2 "" ;
|
||||
-- lin live_V = mkV "";
|
||||
-- lin liver_N = mkN "" ;
|
||||
-- lin long_A = mkA "" ;
|
||||
-- lin lose_V2 = mkV2 "" ;
|
||||
-- lin louse_N = mkN "" ;
|
||||
lin love_N = mkN "olin" ;
|
||||
lin love_V2 = mkV2 "olin" ;
|
||||
|
||||
----
|
||||
-- M
|
||||
|
||||
-- lin man_N = mkN "" ;
|
||||
-- lin married_A2 = mkA2 (mkA "") ;
|
||||
-- lin meat_N = mkN "" ;
|
||||
-- lin milk_N = mkN "" ;
|
||||
lin moon_N = mkN "mun" ;
|
||||
-- lin mother_N2 = mkN2 (mkN "") ;
|
||||
-- lin mountain_N = mkN "" ;
|
||||
-- lin mouth_N = mkN "" ;
|
||||
-- lin music_N = mkN "" ;
|
||||
|
||||
----
|
||||
-- N
|
||||
|
||||
lin name_N = mkN "nimi" ;
|
||||
-- lin narrow_A = mkA "" ;
|
||||
-- lin near_A = mkA "" ;
|
||||
-- lin neck_N = mkN "" ;
|
||||
-- lin new_A = mkA "" ;
|
||||
-- lin newspaper_N = mkN "" ;
|
||||
-- lin night_N = mkN "" ;
|
||||
-- lin nose_N = mkN "" ;
|
||||
-- lin now_Adv = mkAdv "" ;
|
||||
-- lin number_N = mkN "" ;
|
||||
|
||||
--------
|
||||
-- O - P
|
||||
|
||||
|
||||
-- lin oil_N = mkN "" ;
|
||||
-- lin old_A = mkA "" ;
|
||||
-- lin open_V2 = mkV2 "" ;
|
||||
-- lin paint_V2A = mkV2A (mkV "") ;
|
||||
-- lin paper_N = mkN "" ;
|
||||
lin paris_PN = mkPN "ma tomo" "Paki" ;
|
||||
-- lin peace_N = mkN "" ;
|
||||
-- lin pen_N = mkN "" ;
|
||||
lin person_N = mkN "jan" ;
|
||||
-- lin planet_N = mkN "" ;
|
||||
-- lin plastic_N = mkN "" ;
|
||||
lin play_V = mkV "musi" ;
|
||||
-- lin policeman_N = mkN "" ;
|
||||
-- lin priest_N = mkN "" ;
|
||||
-- lin pull_V2 = mkV2 "" ;
|
||||
-- lin push_V2 = mkV2 "" ;
|
||||
-- lin put_V2 = mkV2 "" ;
|
||||
|
||||
--------
|
||||
-- Q - R
|
||||
|
||||
|
||||
-- lin queen_N = mkN "" ;
|
||||
-- lin question_N = mkN "" ;
|
||||
-- lin radio_N = mkN "" ;
|
||||
-- lin rain_N = mkN "" ;
|
||||
-- lin rain_V0 = mkV "" ;
|
||||
-- lin read_V2 = mkV2 "" ;
|
||||
-- lin ready_A = mkA "" ;
|
||||
-- lin reason_N = mkN "" ;
|
||||
lin red_A = mkA "loje" ;
|
||||
-- lin religion_N = mkN "" ;
|
||||
-- lin restaurant_N = mkN "" ;
|
||||
-- lin river_N = mkN "" ;
|
||||
-- lin road_N = mkN "" ;
|
||||
-- lin rock_N = mkN "" ;
|
||||
-- lin roof_N = mkN "" ;
|
||||
-- lin root_N = mkN "" ;
|
||||
-- lin rope_N = mkN "" ;
|
||||
-- lin rotten_A = mkA "" ;
|
||||
-- lin round_A = mkA "" ;
|
||||
-- lin rub_V2 = mkV2 "" ;
|
||||
-- lin rubber_N = mkN "" ;
|
||||
-- lin rule_N = mkN "" ;
|
||||
-- lin run_V = mkV "" ;
|
||||
|
||||
----
|
||||
-- S
|
||||
|
||||
-- lin salt_N = mkN "" ;
|
||||
-- lin sand_N = mkN "" ;
|
||||
-- lin say_VS = mkVS (mkV "") ;
|
||||
-- lin school_N = mkN "" ;
|
||||
-- lin science_N = mkN "" ;
|
||||
-- lin scratch_V2 = mkV2 "" ;
|
||||
-- lin sea_N = mkN "" ;
|
||||
-- lin see_V2 = mkV2 "" ;
|
||||
-- lin seed_N = mkN "" ;
|
||||
-- lin seek_V2 = mkV2 "" ;
|
||||
-- lin sell_V3 = mkV3 (mkV "" Meng) emptyPrep emptyPrep ; -- TODO
|
||||
-- lin send_V3 = mkV3 (mkV "") ;
|
||||
-- lin sew_V = mkV "" ;
|
||||
-- lin sharp_A = mkA "" ;
|
||||
-- lin sheep_N = mkN "" fem ;
|
||||
-- lin ship_N = mkN "" ;
|
||||
-- lin shirt_N = mkN "" ;
|
||||
-- lin shoe_N = mkN "" ;
|
||||
-- lin shop_N = mkN "" ;
|
||||
-- lin short_A = mkA "" ;
|
||||
-- lin silver_N = mkN "" ;
|
||||
-- lin sing_V = mkV "" ;
|
||||
-- lin sister_N = mkN "" ;
|
||||
-- lin sit_V = mkV "" ;
|
||||
-- lin skin_N = mkN "" ;
|
||||
-- lin sky_N = mkN "" ;
|
||||
lin sleep_V = mkV "lape" ;
|
||||
lin small_A = mkA "lili" ;
|
||||
-- lin smell_V = mkV "" ;
|
||||
-- lin smoke_N = mkN "" ;
|
||||
-- lin smooth_A = mkA "" ;
|
||||
-- lin snake_N = mkN "" ;
|
||||
-- lin snow_N = mkN "" ;
|
||||
-- lin sock_N = mkN "" ;
|
||||
-- lin song_N = mkN "" ;
|
||||
-- lin speak_V2 = mkV2 "toki" ;
|
||||
-- lin spit_V = mkV "" ;
|
||||
-- lin split_V2 = mkV2 "" ;
|
||||
-- lin squeeze_V2 = mkV2 "" ;
|
||||
-- lin stab_V2 = mkV2 "" ;
|
||||
-- lin stand_V = mkV "" ;
|
||||
-- lin star_N = mkN "" ;
|
||||
-- lin steel_N = mkN "" ;
|
||||
-- lin stick_N = mkN "" ;
|
||||
-- lin stone_N = mkN "" ;
|
||||
lin stop_V = mkV "pini" ;
|
||||
-- lin stove_N = mkN "" ;
|
||||
-- lin straight_A = mkA "" ;
|
||||
-- lin student_N = mkN "" ;
|
||||
-- lin stupid_A = mkA "" ;
|
||||
-- lin suck_V2 = mkV2 "" ;
|
||||
-- lin sun_N = mkN "" ;
|
||||
-- lin swell_V = mkV "" ;
|
||||
-- lin swim_V = mkV "" ;
|
||||
|
||||
----
|
||||
-- T
|
||||
|
||||
|
||||
-- lin table_N = mkN "" ;
|
||||
-- lin tail_N = mkN "" ;
|
||||
-- lin talk_V3 = mkV3 (mkV "" Ber) (mkPrep "") (mkPrep "") ;
|
||||
-- lin teach_V2 = mkV2 "" ;
|
||||
-- lin teacher_N = mkN "" ;
|
||||
-- lin television_N = mkN "" ;
|
||||
-- lin thick_A = mkA "" ;
|
||||
-- lin thin_A = mkA "" ;
|
||||
-- lin think_V = mkV "" ;
|
||||
-- lin throw_V2 = mkV2 "" ;
|
||||
-- lin tie_V2 = mkV2 "" ;
|
||||
-- lin today_Adv = mkA "" ;
|
||||
-- lin tongue_N = mkN "" ;
|
||||
-- lin tooth_N = mkN "" ;
|
||||
-- lin train_N = mkN "" ;
|
||||
-- lin travel_V = mkV "" ;
|
||||
-- lin tree_N = mkN "" ;
|
||||
-- lin turn_V = mkV "" ;
|
||||
|
||||
--------
|
||||
-- U - V
|
||||
|
||||
-- lin ugly_A = mkA "" ;
|
||||
-- lin uncertain_A = mkA "" ;
|
||||
-- lin understand_V2 = mkV2 "" ;
|
||||
-- lin university_N = mkN "" ;
|
||||
-- lin village_N = mkN "" ;
|
||||
-- lin vomit_V = mkV2 "" ;
|
||||
|
||||
--------
|
||||
-- W - Y
|
||||
|
||||
-- lin wait_V2 = mkV2 "" ;
|
||||
-- lin walk_V = mkV "" ;
|
||||
-- lin war_N = mkN "" ;
|
||||
-- lin warm_A = mkA "" ;
|
||||
-- lin wash_V2 = mkV2 "" ;
|
||||
-- lin watch_V2 = mkV2 "" ;
|
||||
lin water_N = mkN "telo" ;
|
||||
-- lin wet_A = mkA "" ;
|
||||
-- lin white_A = mkA "" ;
|
||||
-- lin wide_A = mkA "" ;
|
||||
-- lin wife_N = mkN "" ;
|
||||
-- lin win_V2 = mkV2 "" ;
|
||||
-- lin wind_N = mkN "" ;
|
||||
-- lin window_N = mkN "" ;
|
||||
-- lin wine_N = mkN "" ;
|
||||
-- lin wing_N = mkN "" ;
|
||||
-- lin wipe_V2 = mkV2 "" ;
|
||||
-- lin woman_N = mkN "" ;
|
||||
-- lin wonder_VQ = mkVQ (mkV "") ;
|
||||
-- lin wood_N = mkN "" ;
|
||||
-- lin worm_N = mkN "" ;
|
||||
-- lin write_V2 = mkV2 "" ;
|
||||
-- lin year_N = mkN "" ;
|
||||
-- lin yellow_A = mkA "" ;
|
||||
-- lin young_A = mkA "" ;
|
||||
|
||||
}
|
||||
@@ -1,313 +0,0 @@
|
||||
resource MissingTok = open GrammarTok, Prelude in {
|
||||
-- temporary definitions to enable the compilation of RGL API
|
||||
oper AdAP : AdA -> AP -> AP = notYet "AdAP" ;
|
||||
oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
|
||||
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||
oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
|
||||
oper AdVVPSlash : AdV -> VPSlash -> VPSlash = notYet "AdVVPSlash" ;
|
||||
oper AddAdvQVP : QVP -> IAdv -> QVP = notYet "AddAdvQVP" ;
|
||||
oper AdjCN : AP -> CN -> CN = notYet "AdjCN" ;
|
||||
oper AdjDAP : DAP -> AP -> DAP = notYet "AdjDAP" ;
|
||||
oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
|
||||
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
||||
oper AdvAP : AP -> Adv -> AP = notYet "AdvAP" ;
|
||||
oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
|
||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||
oper AdvImp : Adv -> Imp -> Imp = notYet "AdvImp" ;
|
||||
oper AdvNP : NP -> Adv -> NP = notYet "AdvNP" ;
|
||||
oper AdvQVP : VP -> IAdv -> QVP = notYet "AdvQVP" ;
|
||||
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
|
||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||
oper AdvVP : VP -> Adv -> VP = notYet "AdvVP" ;
|
||||
oper AdvVPSlash : VPSlash -> Adv -> VPSlash = notYet "AdvVPSlash" ;
|
||||
oper ApposCN : CN -> NP -> CN = notYet "ApposCN" ;
|
||||
oper BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
|
||||
oper BaseAdV : AdV -> AdV -> ListAdV = notYet "BaseAdV" ;
|
||||
oper BaseAdv : Adv -> Adv -> ListAdv = notYet "BaseAdv" ;
|
||||
oper BaseCN : CN -> CN -> ListCN = notYet "BaseCN" ;
|
||||
oper BaseIAdv : IAdv -> IAdv -> ListIAdv = notYet "BaseIAdv" ;
|
||||
oper BaseNP : NP -> NP -> ListNP = notYet "BaseNP" ;
|
||||
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||
oper CompAP : AP -> Comp = notYet "CompAP" ;
|
||||
oper CompAdv : Adv -> Comp = notYet "CompAdv" ;
|
||||
oper CompCN : CN -> Comp = notYet "CompCN" ;
|
||||
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||
oper CompNP : NP -> Comp = notYet "CompNP" ;
|
||||
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
|
||||
oper ComparAdvAdj : CAdv -> A -> NP -> Adv = notYet "ComparAdvAdj" ;
|
||||
oper ComparAdvAdjS : CAdv -> A -> S -> Adv = notYet "ComparAdvAdjS" ;
|
||||
oper ComplA2 : A2 -> NP -> AP = notYet "ComplA2" ;
|
||||
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
|
||||
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||
oper ComplSlash : VPSlash -> NP -> VP = notYet "ComplSlash" ;
|
||||
oper ComplSlashIP : VPSlash -> IP -> QVP = notYet "ComplSlashIP" ;
|
||||
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 ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
|
||||
oper ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
|
||||
oper ConjAdv : Conj -> ListAdv -> Adv = notYet "ConjAdv" ;
|
||||
oper ConjCN : Conj -> ListCN -> CN = notYet "ConjCN" ;
|
||||
oper ConjDet : Conj -> ListDAP -> Det = notYet "ConjDet" ;
|
||||
oper ConjIAdv : Conj -> ListIAdv -> IAdv = notYet "ConjIAdv" ;
|
||||
oper ConjNP : Conj -> ListNP -> NP = notYet "ConjNP" ;
|
||||
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||
oper ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
|
||||
oper ConsAdV : AdV -> ListAdV -> ListAdV = notYet "ConsAdV" ;
|
||||
oper ConsAdv : Adv -> ListAdv -> ListAdv = notYet "ConsAdv" ;
|
||||
oper ConsCN : CN -> ListCN -> ListCN = notYet "ConsCN" ;
|
||||
oper ConsIAdv : IAdv -> ListIAdv -> ListIAdv = notYet "ConsIAdv" ;
|
||||
oper ConsNP : NP -> ListNP -> ListNP = notYet "ConsNP" ;
|
||||
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||
oper CountNP : Det -> NP -> NP = notYet "CountNP" ;
|
||||
oper DetCN : Det -> CN -> NP = notYet "DetCN" ;
|
||||
oper DetDAP : Det -> DAP = notYet "DetDAP" ;
|
||||
oper DetNP : Det -> NP = notYet "DetNP" ;
|
||||
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 ExistIPAdv : IP -> Adv -> QCl = notYet "ExistIPAdv" ;
|
||||
oper ExistNP : NP -> Cl = notYet "ExistNP" ;
|
||||
oper ExistNPAdv : NP -> Adv -> Cl = notYet "ExistNPAdv" ;
|
||||
oper ExtAdvS : Adv -> S -> S = notYet "ExtAdvS" ;
|
||||
oper ExtAdvVP : VP -> Adv -> VP = notYet "ExtAdvVP" ;
|
||||
oper FunRP : Prep -> NP -> RP -> RP = notYet "FunRP" ;
|
||||
oper GenericCl : VP -> Cl = notYet "GenericCl" ;
|
||||
oper IdRP : RP = notYet "IdRP" ;
|
||||
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||
oper ImpP3 : NP -> VP -> Utt = notYet "ImpP3" ;
|
||||
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
|
||||
oper MassNP : CN -> NP = notYet "MassNP" ;
|
||||
oper NumCard : Card -> Num = notYet "NumCard" ;
|
||||
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
|
||||
oper NumNumeral : Numeral -> Card = notYet "NumNumeral" ;
|
||||
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
|
||||
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
|
||||
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||
oper PConjConj : Conj -> PConj = notYet "PConjConj" ;
|
||||
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||
oper PartNP : CN -> NP -> CN = notYet "PartNP" ;
|
||||
oper PassV2 : V2 -> VP = notYet "PassV2" ;
|
||||
oper PhrUtt : PConj -> Utt -> Voc -> Phr = notYet "PhrUtt" ;
|
||||
oper PositA : A -> AP = notYet "PositA" ;
|
||||
oper PositAdAAdj : A -> AdA = notYet "PositAdAAdj" ;
|
||||
oper PositAdvAdj : A -> Adv = notYet "PositAdvAdj" ;
|
||||
oper PossNP : CN -> NP -> CN = notYet "PossNP" ;
|
||||
oper PossPron : Pron -> Quant = notYet "PossPron" ;
|
||||
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||
oper PredVP : NP -> VP -> Cl = notYet "PredVP" ;
|
||||
oper PredetNP : Predet -> NP -> NP = notYet "PredetNP" ;
|
||||
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||
oper PrepNP : Prep -> NP -> Adv = notYet "PrepNP" ;
|
||||
oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
|
||||
oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||
oper QuestQVP : IP -> QVP -> QCl = notYet "QuestQVP" ;
|
||||
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 RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||
oper RelCl : Cl -> RCl = notYet "RelCl" ;
|
||||
oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
|
||||
oper RelS : S -> RS -> S = notYet "RelS" ;
|
||||
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||
oper RelVP : RP -> VP -> RCl = notYet "RelVP" ;
|
||||
oper SSubjS : S -> Subj -> S -> S = notYet "SSubjS" ;
|
||||
oper SelfAdVVP : VP -> VP = notYet "SelfAdVVP" ;
|
||||
oper SelfAdvVP : VP -> VP = notYet "SelfAdvVP" ;
|
||||
oper SelfNP : NP -> NP = notYet "SelfNP" ;
|
||||
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 SlashV2a : V2 -> VPSlash = notYet "SlashV2a" ;
|
||||
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 TFullStop : Phr -> Text -> Text = notYet "TFullStop" ;
|
||||
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||
oper Use3N3 : N3 -> N2 = notYet "Use3N3" ;
|
||||
oper UseA2 : A2 -> AP = notYet "UseA2" ;
|
||||
oper UseCl : Temp -> Pol -> Cl -> S = notYet "UseCl" ;
|
||||
oper UseComp : Comp -> VP = notYet "UseComp" ;
|
||||
oper UseComparA : A -> AP = notYet "UseComparA" ;
|
||||
oper UseCopula : VP = notYet "UseCopula" ;
|
||||
oper UseN : N -> CN = notYet "UseN" ;
|
||||
oper UseN2 : N2 -> CN = notYet "UseN2" ;
|
||||
oper UsePN : PN -> NP = notYet "UsePN" ;
|
||||
oper UsePron : Pron -> NP = notYet "UsePron" ;
|
||||
oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||
oper UseRCl : Temp -> Pol -> RCl -> RS = notYet "UseRCl" ;
|
||||
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||
oper UseV : V -> VP = notYet "UseV" ;
|
||||
oper UttAP : AP -> Utt = notYet "UttAP" ;
|
||||
oper UttAdv : Adv -> Utt = notYet "UttAdv" ;
|
||||
oper UttCN : CN -> Utt = notYet "UttCN" ;
|
||||
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 UttInterj : Interj -> Utt = notYet "UttInterj" ;
|
||||
oper UttNP : NP -> Utt = notYet "UttNP" ;
|
||||
oper UttQS : QS -> Utt = notYet "UttQS" ;
|
||||
oper UttS : S -> Utt = notYet "UttS" ;
|
||||
oper UttVP : VP -> Utt = notYet "UttVP" ;
|
||||
oper VPSlashPrep : VP -> Prep -> VPSlash = notYet "VPSlashPrep" ;
|
||||
oper VocNP : NP -> Voc = notYet "VocNP" ;
|
||||
oper above_Prep : Prep = notYet "above_Prep" ;
|
||||
oper active2passive : Cl -> Cl = notYet "active2passive" ;
|
||||
oper after_Prep : Prep = notYet "after_Prep" ;
|
||||
oper alas_Interj : Interj = notYet "alas_Interj" ;
|
||||
oper all_Predet : Predet = notYet "all_Predet" ;
|
||||
oper almost_AdA : AdA = notYet "almost_AdA" ;
|
||||
oper almost_AdN : AdN = notYet "almost_AdN" ;
|
||||
oper already_Adv : Adv = notYet "already_Adv" ;
|
||||
oper although_Subj : Subj = notYet "although_Subj" ;
|
||||
oper always_AdV : AdV = notYet "always_AdV" ;
|
||||
oper as_CAdv : CAdv = notYet "as_CAdv" ;
|
||||
oper at_least_AdN : AdN = notYet "at_least_AdN" ;
|
||||
oper at_most_AdN : AdN = notYet "at_most_AdN" ;
|
||||
oper because_Subj : Subj = notYet "because_Subj" ;
|
||||
oper before_Prep : Prep = notYet "before_Prep" ;
|
||||
oper behind_Prep : Prep = notYet "behind_Prep" ;
|
||||
oper between_Prep : Prep = notYet "between_Prep" ;
|
||||
oper both7and_DConj : Conj = notYet "both7and_DConj" ;
|
||||
oper but_PConj : PConj = notYet "but_PConj" ;
|
||||
oper by8agent_Prep : Prep = notYet "by8agent_Prep" ;
|
||||
oper by8means_Prep : Prep = notYet "by8means_Prep" ;
|
||||
oper dconcat : Digits -> Digits -> Digits = notYet "dconcat" ;
|
||||
oper digits2num : Digits -> Numeral = notYet "digits2num" ;
|
||||
oper digits2numeral : Card -> Card = notYet "digits2numeral" ;
|
||||
oper dn : Dig -> Digit = notYet "dn" ;
|
||||
oper dn10 : Dig -> Sub10 = notYet "dn10" ;
|
||||
oper dn100 : Dig -> Dig -> Sub100 = notYet "dn100" ;
|
||||
oper dn1000 : Dig -> Dig -> Dig -> Sub1000 = notYet "dn1000" ;
|
||||
oper dn1000000a : Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000a" ;
|
||||
oper dn1000000b : Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000b" ;
|
||||
oper dn1000000c : Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000c" ;
|
||||
oper during_Prep : Prep = notYet "during_Prep" ;
|
||||
oper either7or_DConj : Conj = notYet "either7or_DConj" ;
|
||||
oper every_Det : Det = notYet "every_Det" ;
|
||||
oper everybody_NP : NP = notYet "everybody_NP" ;
|
||||
oper everything_NP : NP = notYet "everything_NP" ;
|
||||
oper everywhere_Adv : Adv = notYet "everywhere_Adv" ;
|
||||
oper except_Prep : Prep = notYet "except_Prep" ;
|
||||
oper few_Det : Det = notYet "few_Det" ;
|
||||
oper for_Prep : Prep = notYet "for_Prep" ;
|
||||
oper from_Prep : Prep = notYet "from_Prep" ;
|
||||
oper he_Pron : Pron = notYet "he_Pron" ;
|
||||
oper here7from_Adv : Adv = notYet "here7from_Adv" ;
|
||||
oper here7to_Adv : Adv = notYet "here7to_Adv" ;
|
||||
oper here_Adv : Adv = notYet "here_Adv" ;
|
||||
oper how8many_IDet : IDet = notYet "how8many_IDet" ;
|
||||
oper how8much_IAdv : IAdv = notYet "how8much_IAdv" ;
|
||||
oper how_IAdv : IAdv = notYet "how_IAdv" ;
|
||||
oper i_Pron : Pron = notYet "i_Pron" ;
|
||||
oper if_Subj : Subj = notYet "if_Subj" ;
|
||||
oper if_then_Conj : Conj = notYet "if_then_Conj" ;
|
||||
oper in8front_Prep : Prep = notYet "in8front_Prep" ;
|
||||
oper in_Prep : Prep = notYet "in_Prep" ;
|
||||
oper it_Pron : Pron = notYet "it_Pron" ;
|
||||
oper john_PN : PN = notYet "john_PN" ;
|
||||
oper language_title_Utt : Utt = notYet "language_title_Utt" ;
|
||||
oper left_Ord : Ord = notYet "left_Ord" ;
|
||||
oper less_CAdv : CAdv = notYet "less_CAdv" ;
|
||||
oper many_Det : Det = notYet "many_Det" ;
|
||||
oper more_CAdv : CAdv = notYet "more_CAdv" ;
|
||||
oper most_Predet : Predet = notYet "most_Predet" ;
|
||||
oper much_Det : Det = notYet "much_Det" ;
|
||||
oper nd : Digit -> Dig = notYet "nd" ;
|
||||
oper nd10 : Sub10 -> Digits = notYet "nd10" ;
|
||||
oper nd100 : Sub100 -> Digits = notYet "nd100" ;
|
||||
oper nd1000 : Sub1000 -> Digits = notYet "nd1000" ;
|
||||
oper nd1000000 : Sub1000000 -> Digits = notYet "nd1000000" ;
|
||||
oper no_Quant : Quant = notYet "no_Quant" ;
|
||||
oper no_Utt : Utt = notYet "no_Utt" ;
|
||||
oper nobody_NP : NP = notYet "nobody_NP" ;
|
||||
oper not_Predet : Predet = notYet "not_Predet" ;
|
||||
oper nothing_NP : NP = notYet "nothing_NP" ;
|
||||
oper num : Sub1000000 -> Numeral = notYet "num" ;
|
||||
oper num2digits : Numeral -> Digits = notYet "num2digits" ;
|
||||
oper on_Prep : Prep = notYet "on_Prep" ;
|
||||
oper only_Predet : Predet = notYet "only_Predet" ;
|
||||
oper or_Conj : Conj = notYet "or_Conj" ;
|
||||
oper otherwise_PConj : PConj = notYet "otherwise_PConj" ;
|
||||
oper part_Prep : Prep = notYet "part_Prep" ;
|
||||
oper please_Voc : Voc = notYet "please_Voc" ;
|
||||
oper possess_Prep : Prep = notYet "possess_Prep" ;
|
||||
oper pot01 : Sub10 = notYet "pot01" ;
|
||||
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
|
||||
oper pot110 : Sub100 = notYet "pot110" ;
|
||||
oper pot111 : Sub100 = notYet "pot111" ;
|
||||
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
|
||||
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
|
||||
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
|
||||
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
|
||||
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
|
||||
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
|
||||
oper quite_Adv : AdA = notYet "quite_Adv" ;
|
||||
oper right_Ord : Ord = notYet "right_Ord" ;
|
||||
oper she_Pron : Pron = notYet "she_Pron" ;
|
||||
oper so_AdA : AdA = notYet "so_AdA" ;
|
||||
oper somePl_Det : Det = notYet "somePl_Det" ;
|
||||
oper someSg_Det : Det = notYet "someSg_Det" ;
|
||||
oper somebody_NP : NP = notYet "somebody_NP" ;
|
||||
oper something_NP : NP = notYet "something_NP" ;
|
||||
oper somewhere_Adv : Adv = notYet "somewhere_Adv" ;
|
||||
oper that_Quant : Quant = notYet "that_Quant" ;
|
||||
oper that_Subj : Subj = notYet "that_Subj" ;
|
||||
oper there7from_Adv : Adv = notYet "there7from_Adv" ;
|
||||
oper there7to_Adv : Adv = notYet "there7to_Adv" ;
|
||||
oper there_Adv : Adv = notYet "there_Adv" ;
|
||||
oper therefore_PConj : PConj = notYet "therefore_PConj" ;
|
||||
oper they_Pron : Pron = notYet "they_Pron" ;
|
||||
oper this_Quant : Quant = notYet "this_Quant" ;
|
||||
oper through_Prep : Prep = notYet "through_Prep" ;
|
||||
oper to_Prep : Prep = notYet "to_Prep" ;
|
||||
oper too_AdA : AdA = notYet "too_AdA" ;
|
||||
oper under_Prep : Prep = notYet "under_Prep" ;
|
||||
oper very_AdA : AdA = notYet "very_AdA" ;
|
||||
oper we_Pron : Pron = notYet "we_Pron" ;
|
||||
oper whatPl_IP : IP = notYet "whatPl_IP" ;
|
||||
oper whatSg_IP : IP = notYet "whatSg_IP" ;
|
||||
oper when_IAdv : IAdv = notYet "when_IAdv" ;
|
||||
oper when_Subj : Subj = notYet "when_Subj" ;
|
||||
oper where_IAdv : IAdv = notYet "where_IAdv" ;
|
||||
oper which_IQuant : IQuant = notYet "which_IQuant" ;
|
||||
oper whoPl_IP : IP = notYet "whoPl_IP" ;
|
||||
oper whoSg_IP : IP = notYet "whoSg_IP" ;
|
||||
oper why_IAdv : IAdv = notYet "why_IAdv" ;
|
||||
oper with_Prep : Prep = notYet "with_Prep" ;
|
||||
oper without_Prep : Prep = notYet "without_Prep" ;
|
||||
oper yes_Utt : Utt = notYet "yes_Utt" ;
|
||||
oper youPl_Pron : Pron = notYet "youPl_Pron" ;
|
||||
oper youPol_Pron : Pron = notYet "youPol_Pron" ;
|
||||
oper youSg_Pron : Pron = notYet "youSg_Pron" ;
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
concrete NamesTok of Names = CatTok ** open Prelude in {
|
||||
|
||||
-- An API layer to deal with names
|
||||
-- Not part of the RGL API, but used in the AW project
|
||||
-- So depends on your goals whether this is high or low priority to implement.
|
||||
{-
|
||||
lin
|
||||
-- : GN -> NP ;
|
||||
GivenName gn =
|
||||
|
||||
-- : SN -> NP ;
|
||||
MaleSurname sn =
|
||||
|
||||
-- : SN -> NP ;
|
||||
FemaleSurname sn =
|
||||
|
||||
-- : SN -> NP ;
|
||||
PlSurname sn =
|
||||
|
||||
-- : GN -> SN -> NP ;
|
||||
FullName gn sn =
|
||||
|
||||
lin
|
||||
-- : LN -> NP ;
|
||||
UseLN ln =
|
||||
|
||||
-- : LN -> NP ;
|
||||
PlainLN ln =
|
||||
|
||||
-- : LN -> Adv ;
|
||||
InLN ln =
|
||||
|
||||
-- : AP -> LN -> LN ;
|
||||
AdjLN ap ln =
|
||||
-}
|
||||
}
|
||||
@@ -1,211 +0,0 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
concrete NounTok of Noun = CatTok ** open ResTok, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
--2 Noun phrases
|
||||
|
||||
-- : Det -> CN -> NP
|
||||
DetCN det cn = emptyNP ** {
|
||||
s = cn.s ++ det.s
|
||||
} ;
|
||||
|
||||
-- : PN -> NP ;
|
||||
-- Assuming that lincat PN = lincat NP
|
||||
UsePN pn = {
|
||||
s = pn.head ++ pn.tail ;
|
||||
p = P3 ;
|
||||
li = NotMiSina ;
|
||||
} ;
|
||||
|
||||
-- : Pron -> NP ;
|
||||
-- Assuming that lincat Pron = lincat NP
|
||||
UsePron pron = pron ;
|
||||
|
||||
-- : Predet -> NP -> NP ; -- only the man
|
||||
-- PredetNP predet np =
|
||||
|
||||
-- A noun phrase can also be postmodified by the past participle of a
|
||||
-- verb, by an adverb, or by a relative clause
|
||||
|
||||
-- low prio
|
||||
-- : NP -> V2 -> NP ; -- the man seen
|
||||
-- PPartNP np v2 = np ** {
|
||||
-- s =
|
||||
-- } ;
|
||||
|
||||
-- : NP -> Adv -> NP ; -- Paris today
|
||||
-- AdvNP np adv = np ** {
|
||||
-- s = np.s ++ "," ++ adv.s
|
||||
-- } ;
|
||||
|
||||
-- : NP -> Adv -> NP ; -- boys, such as ..
|
||||
-- ExtAdvNP np adv = AdvNP np {s = "," ++ adv.s} ;
|
||||
|
||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||
-- RelNP np rs = np ** {
|
||||
|
||||
-- } ;
|
||||
|
||||
-- Determiners can form noun phrases directly.
|
||||
|
||||
|
||||
-- : Det -> NP ;
|
||||
DetNP det = emptyNP ** {
|
||||
s = det.s
|
||||
} ;
|
||||
-- MassNP : CN -> NP ;
|
||||
MassNP cn = emptyNP ** {
|
||||
s = linCN cn
|
||||
} ;
|
||||
|
||||
|
||||
--2 Determiners
|
||||
|
||||
-- The determiner has a fine-grained structure, in which a 'nucleus'
|
||||
-- quantifier and an optional numeral can be discerned.
|
||||
|
||||
-- : Quant -> Num -> Det ;
|
||||
DetQuant quant num = quant ** {
|
||||
s = quant.s ++ num.s
|
||||
} ;
|
||||
|
||||
-- : Quant -> Num -> Ord -> Det ;
|
||||
-- DetQuantOrd quant num ord = quant ** {
|
||||
|
||||
-- } ;
|
||||
|
||||
NumSg,NumPl = ss [] ;
|
||||
|
||||
-- Whether the resulting determiner is singular or plural depends on the
|
||||
-- cardinal.
|
||||
|
||||
-- All parts of the determiner can be empty, except $Quant$, which is
|
||||
-- the "kernel" of a determiner. It is, however, the $Num$ that determines
|
||||
-- the inherent number.
|
||||
|
||||
-- : Card -> Num ; -- two
|
||||
NumCard card = card ;
|
||||
|
||||
{-
|
||||
-- : Digits -> Card ;
|
||||
NumDigits dig = -- probably like OrdDigits, but choose the NCard form
|
||||
|
||||
-- : Numeral -> Card ;
|
||||
NumNumeral num = {
|
||||
s = num.s ! NCard ;
|
||||
n = num.n -- inherits grammatical number (Sg, Pl, …) from the Numeral
|
||||
} ;
|
||||
|
||||
-- : AdN -> Card -> Card ;
|
||||
AdNum adn card = card ** { s = adn.s ++ card.s } ;
|
||||
|
||||
-- : Digits -> Ord ;
|
||||
OrdDigits digs = digs ** { s = digs.s ! NOrd } ;
|
||||
|
||||
-- : Numeral -> Ord ;
|
||||
OrdNumeral num = {
|
||||
s = num.s ! NOrd
|
||||
} ;
|
||||
|
||||
-- : A -> Ord ;
|
||||
OrdSuperl a = {
|
||||
s = "most" ++ a.s ! Superl
|
||||
} ;
|
||||
|
||||
-- One can combine a numeral and a superlative.
|
||||
|
||||
-- : Numeral -> A -> Ord ; -- third largest
|
||||
OrdNumeralSuperl num a = {
|
||||
s = num.s ! NOrd ++ a.s ! Superl
|
||||
} ;
|
||||
-}
|
||||
|
||||
-- : Quant
|
||||
DefArt = mkQuant [] ;
|
||||
|
||||
-- : Quant
|
||||
IndefArt = mkQuant [] ;
|
||||
|
||||
-- : Pron -> Quant -- my
|
||||
PossPron pron = mkQuant pron.s ;
|
||||
|
||||
--2 Common nouns
|
||||
|
||||
-- : N -> CN
|
||||
UseN n = n ;
|
||||
|
||||
{-
|
||||
-- : N2 -> CN ;
|
||||
UseN2 n2 =
|
||||
|
||||
-- : N2 -> NP -> CN ;
|
||||
ComplN2 n2 np =
|
||||
|
||||
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||
ComplN3 n3 np =
|
||||
|
||||
-- : N3 -> N2 ; -- distance (from this city)
|
||||
Use2N3 n3 = lin N2 n3 ** { c2 = n3.c3 } ;
|
||||
|
||||
-- : N3 -> N2 ; -- distance (to Paris)
|
||||
Use3N3 n3 = lin N2 n3 ;
|
||||
|
||||
-- : AP -> CN -> CN
|
||||
AdjCN ap cn =
|
||||
|
||||
-- : CN -> RS -> CN ;
|
||||
RelCN cn rs =
|
||||
|
||||
|
||||
-- : CN -> Adv -> CN ;
|
||||
AdvCN cn adv =
|
||||
|
||||
-- Nouns can also be modified by embedded sentences and questions.
|
||||
-- For some nouns this makes little sense, but we leave this for applications
|
||||
-- to decide. Sentential complements are defined in VerbTok.
|
||||
|
||||
-- : CN -> SC -> CN ; -- question where she sleeps
|
||||
SentCN cn sc =
|
||||
|
||||
--2 Apposition
|
||||
|
||||
-- This is certainly overgenerating.
|
||||
|
||||
-- : CN -> NP -> CN ; -- city Paris (, numbers x and y)
|
||||
ApposCN cn np = cn ** {
|
||||
s =
|
||||
} ;
|
||||
|
||||
--2 Possessive and partitive constructs
|
||||
-- NB. Below this, the functions are not in the API, so lower prio to implement
|
||||
|
||||
-- : PossNP : CN -> NP -> CN ;
|
||||
-- in English: book of someone; point is that we can add a determiner to the CN,
|
||||
-- so it can become "a book of someone" or "the book of someone"
|
||||
PossNP cn np =
|
||||
|
||||
|
||||
-- : Det -> NP -> NP ; -- three of them, some of the boys
|
||||
CountNP det np = -- Nonsense for DefArt or IndefArt, but don't worry about that! RGL can contain weird sentences, as long as it contains the non-weird stuff we want
|
||||
|
||||
|
||||
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||
PartNP cn np =
|
||||
|
||||
--3 Conjoinable determiners and ones with adjectives
|
||||
|
||||
-- : DAP -> AP -> DAP ; -- the large (one)
|
||||
AdjDAP dap ap = dap ** {
|
||||
|
||||
} ;
|
||||
|
||||
-- : Det -> DAP ; -- this (or that)
|
||||
DetDAP det = det ;
|
||||
-}
|
||||
|
||||
-- : AP -> CN -> CN
|
||||
AdjCN = \ap,cn -> { s = cn.s ++ ap.s ;};
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
concrete NumeralTok of Numeral = CatTok [Numeral,Digits] **
|
||||
open Prelude, ResTok in {
|
||||
|
||||
lincat
|
||||
Digit = LinNumeral ; -- 2..9
|
||||
Sub10, -- 1..9
|
||||
Sub100, -- 1..99
|
||||
Sub1000, -- 1..999
|
||||
Sub1000000, -- 1..999999
|
||||
Sub1000000000, -- 1..999999999
|
||||
Sub1000000000000 -- 1..999999999999
|
||||
= LinNumeral ;
|
||||
|
||||
-- param CardOrd defined in ResTok
|
||||
-- type LinNumeral -""-
|
||||
|
||||
|
||||
lin
|
||||
-- : Sub1000000 -> Numeral ; -- 123456 [coercion to top category]
|
||||
num x = x ;
|
||||
|
||||
-- : Digit ;
|
||||
n2 = mkNumeral "two" ;
|
||||
n3 = mkNumeral "three" ;
|
||||
n4 = mkNumeral "four" ;
|
||||
n5 = mkNumeral "five" ;
|
||||
n6 = mkNumeral "six" ;
|
||||
n7 = mkNumeral "seven" ;
|
||||
n8 = mkNumeral "eight" ;
|
||||
n9 = mkNumeral "nine" ;
|
||||
|
||||
-- : Sub10 ; -- 1
|
||||
-- pot01 =
|
||||
|
||||
-- : Digit -> Sub10 ; -- d * 1
|
||||
pot0 d = d ;
|
||||
|
||||
-- : Sub100 ; -- 10
|
||||
-- pot110 = mkNum "ten" ;
|
||||
|
||||
-- : Sub100 ; -- 11
|
||||
-- pot111 = mkNum "eleven" ;
|
||||
|
||||
-- : Digit -> Sub100 ; -- 10 + d
|
||||
-- pot1to19 d =
|
||||
|
||||
-- : Sub10 -> Sub100 ; -- coercion of 1..9
|
||||
pot0as1 n = n ;
|
||||
|
||||
-- : Digit -> Sub100 ; -- d * 10
|
||||
-- pot1 d =
|
||||
|
||||
-- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
|
||||
-- pot1plus d e =
|
||||
|
||||
-- : Sub100 -> Sub1000 ; -- coercion of 1..99
|
||||
pot1as2 n = n ;
|
||||
|
||||
-- : Sub10 -> Sub1000 ; -- m * 100
|
||||
-- pot2 d =
|
||||
|
||||
-- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
|
||||
-- pot2plus d e =
|
||||
|
||||
-- : Sub1000 -> Sub1000000 ; -- coercion of 1..999
|
||||
pot2as3 n = n ;
|
||||
|
||||
-- : Sub1000 -> Sub1000000 ; -- m * 1000
|
||||
-- pot3 d =
|
||||
|
||||
-- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
||||
-- pot3plus d e =
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Numerals as sequences of digits have a separate, simpler grammar
|
||||
--
|
||||
|
||||
lincat
|
||||
Dig = LinDig ; -- single digit 0..9
|
||||
|
||||
lin
|
||||
-- : Dig -> Digits ; -- 8
|
||||
IDig d = d ;
|
||||
|
||||
-- : Dig -> Digits -> Digits ; -- 876
|
||||
IIDig d e = {
|
||||
s = table {
|
||||
NCard => glue (d.s ! NCard) (e.s ! NCard) ;
|
||||
NOrd => glue (d.s ! NCard) (e.s ! NOrd)
|
||||
} ;
|
||||
} ;
|
||||
|
||||
-- : Dig ;
|
||||
D_0 = mkDig "0" ;
|
||||
D_1 = mkDig "1" ;
|
||||
D_2 = mkDig "2" ;
|
||||
D_3 = mkDig "3" ;
|
||||
D_4 = mkDig "4" ;
|
||||
D_5 = mkDig "5" ;
|
||||
D_6 = mkDig "6" ;
|
||||
D_7 = mkDig "7" ;
|
||||
D_8 = mkDig "8" ;
|
||||
D_9 = mkDig "9" ;
|
||||
|
||||
oper
|
||||
LinDig : Type = {s : CardOrd => Str } ;
|
||||
mkDig : Str -> LinDig = \s -> {
|
||||
s = table {
|
||||
NCard => s ;
|
||||
NOrd => s + "th"
|
||||
} ;
|
||||
} ;
|
||||
}
|
||||
@@ -1,213 +0,0 @@
|
||||
resource ParadigmsTok = open CatTok, ResTok, NounTok, Prelude in {
|
||||
|
||||
oper
|
||||
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over number, valency and (some) case names,
|
||||
-- we define the following identifiers. The application programmer
|
||||
-- should always use these constants instead of the constructors
|
||||
-- defined in $ResSom$.
|
||||
|
||||
Prep : Type ;
|
||||
noPrep : Prep ;
|
||||
|
||||
-- Add more overload instances if needed for all categories!
|
||||
|
||||
--2 Nouns
|
||||
|
||||
mkN : overload {
|
||||
mkN : Str -> N ; -- Predictable nouns
|
||||
} ;
|
||||
|
||||
mkPN : overload {
|
||||
mkPN : Str -> Str -> PN ; -- Proper nouns
|
||||
} ;
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
mkA : overload {
|
||||
mkA : Str -> A ; -- Predictable adjective
|
||||
} ;
|
||||
|
||||
mkA2 : overload {
|
||||
mkA2 : Str -> A2 ; -- Predictable A2, no preposition
|
||||
mkA2 : A -> Prep -> A2 ; -- A2 made from A and Prep
|
||||
} ;
|
||||
|
||||
--2 Verbs
|
||||
|
||||
-- Verbs
|
||||
mkV : overload {
|
||||
mkV : Str -> V ; -- Predictable verb
|
||||
} ;
|
||||
|
||||
|
||||
mkV2 : overload {
|
||||
mkV2 : Str -> V2 ; -- Predictable transitive verb
|
||||
mkV2 : V -> Prep -> V2 ; -- V2 made from V and Prep
|
||||
} ;
|
||||
|
||||
mkV3 : overload {
|
||||
mkV3 : V -> V3 ; -- No prepositions
|
||||
mkV3 : V -> Prep -> Prep -> V3 ; -- Prepositions for direct and indirect objects given
|
||||
} ;
|
||||
|
||||
mkVV : overload {
|
||||
mkVV : V -> VV ;
|
||||
} ;
|
||||
|
||||
mkVA : overload {
|
||||
mkVA : V -> VA ;
|
||||
} ;
|
||||
|
||||
mkVQ : overload {
|
||||
mkVQ : V -> VQ ;
|
||||
} ;
|
||||
|
||||
mkVS : overload {
|
||||
mkV : V -> VS ;
|
||||
} ;
|
||||
|
||||
-- Etc. do the same for other V subcats (V2A, V2V, V2S, …)
|
||||
|
||||
|
||||
-----
|
||||
|
||||
--2 Structural categories
|
||||
|
||||
-- If prepositions take case, add that as argument to mkPrep
|
||||
mkPrep : overload {
|
||||
mkPrep : Str -> Prep ;
|
||||
} ;
|
||||
|
||||
mkConj : overload {
|
||||
mkConj : (and : Str) -> Conj ; -- (coffee) and (tea)
|
||||
mkConj : (either : Str) -> (or : Str) -> Conj ; -- either (coffee) or (tea)
|
||||
} ;
|
||||
|
||||
mkSubj : overload {
|
||||
mkSubj : Str -> Subj ;
|
||||
} ;
|
||||
|
||||
mkAdv : overload {
|
||||
mkAdv : Str -> Adv ;
|
||||
} ;
|
||||
|
||||
mkAdV : overload {
|
||||
mkAdV : Str -> AdV ;
|
||||
} ;
|
||||
|
||||
mkAdA : overload {
|
||||
mkAdA : Str -> AdA ;
|
||||
} ;
|
||||
|
||||
|
||||
--.
|
||||
-------------------------------------------------------------------------------
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
|
||||
Prep = CatTok.Prep ;
|
||||
noPrep = mkPrep [] ;
|
||||
|
||||
-- Add more overload instances if needed for all categories!
|
||||
|
||||
-- For explanation of `lin N`, see
|
||||
-- https://inariksit.github.io/gf/2018/05/25/subtyping-gf.html#lock-fields
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = \s -> lin N (ResTok.mkNoun s) ;
|
||||
-- TODO: more overload instances
|
||||
} ;
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> Str -> PN = \head,tail -> lin PN {
|
||||
head = head; tail = tail
|
||||
}
|
||||
} ;
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = \s -> ss s
|
||||
} ;
|
||||
{-
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : Str -> A2 = \s -> …
|
||||
mkA2 : A -> Prep -> A2 = \s -> …
|
||||
} ;
|
||||
|
||||
--2 Verbs
|
||||
-}
|
||||
-- Verbs
|
||||
mkV = overload {
|
||||
mkV : Str -> V = \s -> lin V (mkVerb s) ;
|
||||
} ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : Str -> V2 = \s -> ss s
|
||||
-- mkV2 : V -> Prep -> V2 = \s -> …
|
||||
} ;
|
||||
|
||||
{-
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \s -> …
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \s -> …
|
||||
} ;
|
||||
|
||||
mkVV = overload {
|
||||
mkVV : V -> VV = \s -> …
|
||||
} ;
|
||||
|
||||
mkVA = overload {
|
||||
mkVA : V -> VA = \s -> …
|
||||
} ;
|
||||
|
||||
mkVQ = overload {
|
||||
mkVQ : V -> VQ = \s -> …
|
||||
} ;
|
||||
|
||||
|
||||
mkVS = overload {
|
||||
mkV : V -> VS = \s -> …
|
||||
} ;
|
||||
|
||||
-- Etc. do the same for other V subcats (V2A, V2V, V2S, …)
|
||||
|
||||
|
||||
-----
|
||||
-}
|
||||
|
||||
-- If prepositions take case, add that as argument to mkPrep
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s = s} ;
|
||||
} ;
|
||||
{-
|
||||
mkConj = overload {
|
||||
mkConj : (and : Str) -> Conj = \s -> …
|
||||
mkConj : (either : Str) -> (or : Str) -> Conj = \s -> …
|
||||
} ;
|
||||
|
||||
mkSubj = overload {
|
||||
mkSubj : Str -> Subj = \s -> …
|
||||
} ;
|
||||
|
||||
mkAdv = overload {
|
||||
mkAdv : Str -> Adv = \s -> …
|
||||
} ;
|
||||
|
||||
mkAdV = overload {
|
||||
mkAdV : Str -> AdV = \s -> …
|
||||
} ;
|
||||
|
||||
mkAdA = overload {
|
||||
mkAdA : Str -> AdA = \s -> …
|
||||
} ;
|
||||
|
||||
-}
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
concrete PhraseTok of Phrase = CatTok ** open Prelude, ResTok in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
{-
|
||||
UttQS qs = qs ;
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np =
|
||||
UttIP ip =
|
||||
UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ;
|
||||
UttImpPl pol imp =
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ;
|
||||
UttVP vp = {s = linVP vp} ;
|
||||
UttAP ap = { s = ap.s } ;
|
||||
UttAdv adv = {s = } ;
|
||||
UttCN n = {s = } ;
|
||||
UttCard n = {s = } ;
|
||||
UttInterj i = i ; -}
|
||||
NoPConj = {s = []} ;
|
||||
-- PConjConj conj = {s = conj.s1 ++ conj.s2 ! …} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
-- VocNP np = { s = "," ++ np.s ! … } ;
|
||||
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
concrete QuestionTok of Question = CatTok ** open
|
||||
Prelude, ResTok, ParadigmsTok, (V=VerbTok), (Noun=NounTok), (S=StructuralTok) in {
|
||||
|
||||
-- A question can be formed from a clause ('yes-no question') or
|
||||
-- with an interrogative.
|
||||
-- Interrogative pronouns can be formed with interrogative
|
||||
-- determiners, with or without a noun.
|
||||
|
||||
{-
|
||||
lin
|
||||
-- : IDet -> CN -> IP ; -- which five songs
|
||||
IdetCN idet cn = Noun.DetCN idet cn ** {
|
||||
} ;
|
||||
|
||||
-- : IDet -> IP ; -- which five
|
||||
IdetIP idet = Noun.DetNP idet ** {sp = idet.sp};
|
||||
|
||||
-- : IQuant -> Num -> IDet ; -- which (five)
|
||||
IdetQuant iquant num = iquant ** {
|
||||
} ;
|
||||
|
||||
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
||||
QuestSlash ip cls = cls ** {
|
||||
|
||||
} ;
|
||||
|
||||
-- : Cl -> QCl ;
|
||||
QuestCl cl = cl ** {
|
||||
};
|
||||
|
||||
|
||||
-- : IP -> VP -> QCl ;
|
||||
QuestVP ip cl = cl ** {
|
||||
} ;
|
||||
|
||||
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
||||
QuestIAdv iadv cls = {
|
||||
} ;
|
||||
|
||||
-- : IP -> IComp ;
|
||||
CompIP ip = {s = ip.s ! } ; -- who (is it)
|
||||
|
||||
-- : IComp -> NP -> QCl ; -- where is John?
|
||||
QuestIComp icomp np = {
|
||||
} ;
|
||||
|
||||
|
||||
-- Interrogative pronouns can be formed with interrogative
|
||||
-- determiners, with or without a noun.
|
||||
|
||||
-- : IDet -> CN -> IP ; -- which five songs
|
||||
IdetCN idet cn =
|
||||
|
||||
-- : IDet -> IP ; -- which five
|
||||
IdetIP idet =
|
||||
|
||||
-- They can be modified with adverbs.
|
||||
|
||||
-- : IP -> Adv -> IP ; -- who in Paris
|
||||
AdvIP = Noun.AdvNP ;
|
||||
|
||||
-- Interrogative quantifiers have number forms and can take number modifiers.
|
||||
|
||||
-- : IQuant -> Num -> IDet ; -- which (five)
|
||||
IdetQuant = Noun.DetQuant ;
|
||||
|
||||
-- Interrogative adverbs can be formed prepositionally.
|
||||
-- : Prep -> IP -> IAdv ; -- with whom
|
||||
PrepIP prep ip =
|
||||
|
||||
-- They can be modified with other adverbs.
|
||||
|
||||
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
||||
AdvIAdv iadv adv =
|
||||
|
||||
-- Interrogative complements to copulas can be both adverbs and
|
||||
-- pronouns.
|
||||
|
||||
-- : IAdv -> IComp ;
|
||||
CompIAdv iadv = iadv ; -- where (is it)
|
||||
|
||||
|
||||
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
||||
|
||||
-- Wh questions with two or more question words require a new, special category.
|
||||
|
||||
lincat
|
||||
-- buy what where
|
||||
QVP =
|
||||
lin
|
||||
-- : VPSlash -> IP -> QVP ; -- buys what
|
||||
ComplSlashIP vps ip =
|
||||
|
||||
-- : VP -> IAdv -> QVP ; -- lives where
|
||||
AdvQVP vp iadv =
|
||||
|
||||
-- : QVP -> IAdv -> QVP ; -- buys what where
|
||||
AddAdvQVP qvp iadv =
|
||||
|
||||
-- : IP -> QVP -> QCl ; -- who buys what where
|
||||
QuestQVP ip qvp =
|
||||
-}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
concrete RelativeTok of Relative = CatTok ** open
|
||||
ResTok, Prelude in {
|
||||
|
||||
{-
|
||||
lin
|
||||
-- : Cl -> RCl ; -- such that John loves her
|
||||
RelCl cl = cl ** {
|
||||
} ;
|
||||
|
||||
-- : RP -> VP -> RCl ;
|
||||
RelVP rp vp = {
|
||||
} ;
|
||||
|
||||
-- : RP -> ClSlash -> RCl ; -- who I went with
|
||||
RelSlash rp cls = {
|
||||
} ;
|
||||
|
||||
-- : RP ;
|
||||
IdRP = {s = "that"} ;
|
||||
|
||||
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||
FunRP prep np rp =
|
||||
-}
|
||||
}
|
||||
@@ -1,262 +0,0 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
resource ResTok = open Prelude, Predef, ParamX in {
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- General notes
|
||||
|
||||
-- ** Naming **
|
||||
{-
|
||||
I'm using the naming scheme for lincats and opers as explained here:
|
||||
https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#my-naming-scheme-for-lincats-and-opers
|
||||
-}
|
||||
|
||||
-- ** File structure **
|
||||
-- The rest of this module is organised as follows:
|
||||
|
||||
-----------------------------
|
||||
-- Grammatical categor(y|ies)
|
||||
|
||||
{-
|
||||
General comments on the cat(s)
|
||||
|
||||
params related to the cat(s)
|
||||
|
||||
opers related to the cat(s)
|
||||
-}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Nouns
|
||||
|
||||
{-The param Number comes from common/ParamX, and has the values Sg and Pl.
|
||||
* If your language doesn't have number, remove Number from all records.
|
||||
* If your language has number with more than 2 values, define your own number in this module
|
||||
(e.g. uncomment line 56) and use that Number instead of Number.
|
||||
|
||||
The param Gender is defined here, and has the values Gender1 and Gender2.
|
||||
Currently it's only as a suggestion to be an inherent field in LinN.
|
||||
* If your language doesn't have gender, remove Gender from all records.
|
||||
* If your language has genders/noun classes, replace the placeholder Gender1 and Gender1
|
||||
with the actual values of your language (there can be more than 2!), and uncomment
|
||||
the g : Gender field from the definition of LinN.
|
||||
|
||||
If your nouns inflect in more things, like case, you can do one of the following
|
||||
* Replace the placeholder cases on line 53 and make the table 2-dimensional, like this:
|
||||
oper LinN : Type = {s : Number => Case => Str ; …} ;
|
||||
* Make your own parameter that combines all the relevant features, like this:
|
||||
param NForm = Whatever | You | Need | For | Noun | Inflection ;
|
||||
oper LinN : Type = {s : NForm => Str ; …} ;
|
||||
This can be a good idea, if your inflection table has some gaps, i.e. not all combinations are in use
|
||||
See https://gist.github.com/inariksit/708ab9df2498e88bc63aedf5fc7be2f3#file-tables-gf-L48-L122 for explanation
|
||||
-}
|
||||
|
||||
param
|
||||
Person = P1 | P2 | P3 ;
|
||||
|
||||
LiSubject = MiSina | NotMiSina ;
|
||||
|
||||
oper
|
||||
LinN : Type = {s : Str ;} ;
|
||||
|
||||
-- Most often, the lincat for CN is the same as N, with possibly some additional fields.
|
||||
-- However, sometimes you need more fields than just the s field, e.g. to keep word order flexible, or to add clitics and make sure they attach to the head, not modifiers.
|
||||
-- If you don't know what the previous line means, you can get started with just a single s field.
|
||||
-- You'll notice later whether you need such a field or not.
|
||||
LinCN : Type = LinN
|
||||
-- ** {postmod/premod/… : Str} -- if needed
|
||||
;
|
||||
|
||||
LinPN : Type = {
|
||||
head : Str ;
|
||||
tail : Str
|
||||
} ;
|
||||
|
||||
-- For inflection paradigms, see http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html#toc56
|
||||
mkNoun : Str -> LinN = \s -> {s = s ;} ;
|
||||
|
||||
linCN : LinCN -> Str = \cn -> cn.s ;
|
||||
|
||||
---------------------------------------------
|
||||
-- Numeral
|
||||
|
||||
-- Used in NumeralTok
|
||||
param
|
||||
CardOrd = NCard | NOrd ;
|
||||
|
||||
oper
|
||||
LinNumeral : Type = {s : CardOrd => Str } ;
|
||||
|
||||
mkNumeral : Str -> LinNumeral = \s -> {
|
||||
s = table {
|
||||
NCard => s ;
|
||||
NOrd => s + "th"
|
||||
} ;
|
||||
} ;
|
||||
|
||||
---------------------------------------------
|
||||
-- Pronoun
|
||||
|
||||
{-The param Person comes from common/ParamX, and has the values P1, P2 and P3.
|
||||
* If your language doesn't inflect in person, you may be able to remove Person from all records.
|
||||
- However, consider if it's really never present? How about e.g. reflexive ("myself", "yourself" etc?)
|
||||
* If your language is more fine-grained than {P1,P2,P3} x {Sg,Pl} (for instance gender and familiarity),
|
||||
you can define your own param. We provide an example called Agr to take inspiration from—remove if
|
||||
not needed, or use and refine if needed.
|
||||
-}
|
||||
|
||||
param
|
||||
-- These params are just for inspiration, not used anywhere currently.
|
||||
Agr = SgP1 -- I
|
||||
| SgP2 Politeness -- e.g. tū, tum, āp (Hindi) — note that the verb really inflects differently for all three!
|
||||
| SgP3 -- e.g. he, she (verb inflects the same, but distinction in reflexive: himself / herself)
|
||||
| FillInTheRestYourself ;
|
||||
Politeness = Intimate | Familiar | Polite ;
|
||||
|
||||
oper
|
||||
LinPron : Type = {
|
||||
s : Str ;
|
||||
p : Person ;
|
||||
li : LiSubject ;
|
||||
-- Alternative to the `n` and `p` fields:
|
||||
-- a : Agr -- sketched above, lines 97-103
|
||||
} ;
|
||||
|
||||
mkPron : (_ : Str) -> Person -> LinPron = \str,per -> {
|
||||
s = str ;
|
||||
p = per ;
|
||||
li = case str of {
|
||||
"mi"|"sina" => MiSina ;
|
||||
_ => NotMiSina
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mi_Pron : LinPron = mkPron "mi" P1 ;
|
||||
sina_Pron : LinPron = mkPron "sina" P2 ;
|
||||
ona_Pron : LinPron = mkPron "ona" P3 ;
|
||||
|
||||
---------------------------------------------
|
||||
-- NP
|
||||
|
||||
{-
|
||||
In the RGL, a NP may come from a common noun, proper noun or pronoun.
|
||||
Pronouns are the only ones that have an inherent person (nouns are almost always 3rd person! please give me counterexamples if you can think of any.)
|
||||
So we can often say that NP's lincat is the same as Prons.
|
||||
|
||||
NB. for later, when you want to make Pron into possessives, you may need more fields in LinPron than in LinNP.
|
||||
That's why I'm copying over the definition below, instead of the neater `LinNP : Type = LinPron`.
|
||||
-}
|
||||
|
||||
LinNP : Type = {
|
||||
s : Str ;
|
||||
p : Person ;
|
||||
li : LiSubject ;
|
||||
|
||||
-- Alternative to the `n` and `p` fields:
|
||||
-- a : Agr -- sketched on lines 97-101
|
||||
} ;
|
||||
|
||||
linNP : LinNP -> Str = \np -> np.s ; -- Change when you change LinNP
|
||||
|
||||
emptyNP : LinNP = { -- Change when you change LinNP
|
||||
s = [] ;
|
||||
p = P3 ;
|
||||
li = NotMiSina
|
||||
} ;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Det, Quant, Card, Ord
|
||||
|
||||
LinQuant : Type = {
|
||||
s : Str -- quantifier in a context, e.g. 'this (cat) (is nice)'
|
||||
-- sp -- quantifier as standalone, e.g. 'this (is nice)'
|
||||
-- : Str ;
|
||||
} ;
|
||||
|
||||
LinDet : Type = {
|
||||
s : Str ;
|
||||
} ;
|
||||
|
||||
-- Can you reuse your mkNoun? Do nouns and quantifiers inflect the same way?
|
||||
mkQuant : Str -> LinQuant = \s -> {s=s;};
|
||||
|
||||
mkDet : Str -> LinDet = \str -> {
|
||||
s = str
|
||||
} ;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Adpositions
|
||||
|
||||
{- The main use of Prep is in the fun
|
||||
|
||||
PrepNP : Prep -> NP -> Adv
|
||||
|
||||
Despite the name of the RGL category, a 'Prep' can be a preposition, postposition,
|
||||
or just an instruction to choose a particular case from the NP.
|
||||
A language may use one, two or all these strategies.
|
||||
|
||||
-}
|
||||
|
||||
oper
|
||||
LinPrep : Type = {
|
||||
s : Str ;
|
||||
} ;
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Adjectives
|
||||
|
||||
LinA : Type = SS ;
|
||||
LinA2 : Type = LinA ;
|
||||
|
||||
mkAdj : Str -> LinA = \str -> {s = str} ;
|
||||
|
||||
AdjPhrase : Type = LinA ; -- ** {compar : Str} ;
|
||||
--------------------------------------------------------------------------------
|
||||
-- Verbs
|
||||
|
||||
oper
|
||||
LinV : Type = {
|
||||
s : Str
|
||||
} ;
|
||||
|
||||
LinV2 : Type = LinV ** {
|
||||
c2 : LinPrep ;
|
||||
} ;
|
||||
|
||||
mkVerb : Str -> LinV = \s -> {s = s} ;
|
||||
|
||||
copula : LinV = {s = "TODO: copula"} ; -- often useful
|
||||
|
||||
------------------
|
||||
-- VP
|
||||
|
||||
LinVP : Type = {
|
||||
s : Polarity => Str ;
|
||||
} ;
|
||||
|
||||
LinVPSlash : Type = LinVP ** {
|
||||
c2 : LinPrep ;
|
||||
} ;
|
||||
|
||||
-- linVP : LinVP -> Str = \vp -> vp.s ;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Cl, S
|
||||
|
||||
-- Operations for clauses, sentences
|
||||
LinCl : Type = {
|
||||
subj : Str ;
|
||||
pred : Polarity => Str ; -- TODO: depend on Temp and Pol
|
||||
} ;
|
||||
|
||||
-- linCl : LinCl -> Str = \cl -> case cl.subj of {
|
||||
-- "mi"|"sina" => cl.subj ++ cl.pred ;
|
||||
-- _ => cl.subj ++ "li" ++ cl.pred
|
||||
-- } ;
|
||||
|
||||
-- linCl : LinCl -> Str = \cl -> cl.subj ++ cl.pred ;
|
||||
|
||||
|
||||
-- Preverb, VV
|
||||
|
||||
Preverb = SS ;
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
|
||||
concrete SentenceTok of Sentence = CatTok ** open
|
||||
TenseX, ResTok, (AM=AdverbTok), Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
--2 Clauses
|
||||
|
||||
-- : NP -> VP -> Cl
|
||||
PredVP np vp = {
|
||||
subj = np.s ; -- ! Nom, if there are cases
|
||||
pred = \\pol => case np.li of {
|
||||
MiSina => vp.s ! pol ;
|
||||
NotMiSina => "li" ++ vp.s ! pol
|
||||
} ;
|
||||
} ;
|
||||
|
||||
-- : SC -> VP -> Cl ; -- that she goes is good
|
||||
-- PredSCVP sc vp = ;
|
||||
|
||||
--2 Clauses missing object noun phrases
|
||||
-- : NP -> VPSlash -> ClSlash ;
|
||||
-- SlashVP = \np,vps -> ss ()
|
||||
|
||||
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||
-- AdvSlash cls adv =
|
||||
|
||||
-- : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
||||
-- SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||
|
||||
-- Imperatives
|
||||
-- : VP -> Imp ;
|
||||
-- ImpVP vp =
|
||||
|
||||
--2 Embedded sentences
|
||||
|
||||
-- : S -> SC ;
|
||||
-- EmbedS s =
|
||||
|
||||
-- : QS -> SC ;
|
||||
-- EmbedQS qs =
|
||||
|
||||
-- : VP -> SC ;
|
||||
-- EmbedVP vp =
|
||||
|
||||
--2 Sentences
|
||||
|
||||
-- : Temp -> Pol -> Cl -> S ;
|
||||
UseCl t p cl = {
|
||||
s = cl.subj ++ t.s ++ p.s ++ cl.pred ! p.p
|
||||
} ;
|
||||
|
||||
-- : Temp -> Pol -> QCl -> QS ;
|
||||
-- UseQCl t p cl =
|
||||
|
||||
-- : Temp -> Pol -> RCl -> RS ;
|
||||
-- UseRCl t p cl =
|
||||
|
||||
-- AdvS : Adv -> S -> S ; -- then I will go home
|
||||
-- AdvS adv s =
|
||||
|
||||
-- ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
||||
-- ExtAdvS adv s =
|
||||
|
||||
-- : S -> Subj -> S -> S ;
|
||||
-- SSubjS s1 subj s2 =
|
||||
|
||||
-- : S -> RS -> S ; -- she sleeps, which is good
|
||||
-- RelS sent rs =
|
||||
}
|
||||
@@ -1,171 +0,0 @@
|
||||
concrete StructuralTok of Structural = CatTok **
|
||||
open Prelude, ResTok, (Noun=NounTok), ParadigmsTok in {
|
||||
|
||||
-------
|
||||
-- Ad*
|
||||
|
||||
-- lin almost_AdA =
|
||||
-- lin almost_AdN =
|
||||
-- lin at_least_AdN =
|
||||
-- lin at_most_AdN =
|
||||
-- lin so_AdA =
|
||||
-- lin too_AdA =
|
||||
-- lin very_AdA =
|
||||
|
||||
-- lin as_CAdv =
|
||||
-- lin less_CAdv =
|
||||
-- lin more_CAdv =
|
||||
|
||||
-- lin how8much_IAdv =
|
||||
-- lin when_IAdv =
|
||||
|
||||
-- lin how_IAdv =
|
||||
-- lin where_IAdv =
|
||||
-- lin why_IAdv =
|
||||
|
||||
-- lin always_AdV = ss "" ;
|
||||
|
||||
-- lin everywhere_Adv = ss "" ;
|
||||
-- lin here7from_Adv = ss "" ;
|
||||
-- lin here7to_Adv = ss "" ;
|
||||
-- lin here_Adv = ss "" ;
|
||||
-- lin quite_Adv = ss "" ;
|
||||
-- lin somewhere_Adv = ss "" ;
|
||||
-- lin there7from_Adv = ss "" ;
|
||||
-- lin there7to_Adv = ss "" ;
|
||||
-- lin there_Adv = ss "" ;
|
||||
|
||||
|
||||
-------
|
||||
-- Conj
|
||||
|
||||
-- The lincat of Conj is Coordination.ConjunctionDistr ** {n:Number}
|
||||
-- which means that there are two fields for the strings, and
|
||||
-- n:Number which specifies the number of the resulting NP.
|
||||
|
||||
-- lin and_Conj = {s1 = [] ; s2 = "and" } ;
|
||||
-- lin or_Conj =
|
||||
-- lin if_then_Conj =
|
||||
-- lin both7and_DConj = {s1 = "both" ; s2 = "and" } ;
|
||||
-- lin either7or_DConj =
|
||||
|
||||
-- lin but_PConj =
|
||||
-- lin otherwise_PConj =
|
||||
-- lin therefore_PConj =
|
||||
|
||||
|
||||
-----------------
|
||||
-- *Det and Quant
|
||||
|
||||
-- lin how8many_IDet =
|
||||
-- lin every_Det =
|
||||
|
||||
-- lin all_Predet = {s = ""} ;
|
||||
-- lin not_Predet = { s = "" } ;
|
||||
-- lin only_Predet = { s = "" } ;
|
||||
-- lin most_Predet = {s = ""} ;
|
||||
|
||||
-- lin few_Det = R.indefDet "" pl ;
|
||||
lin many_Det = ss "mute" ;
|
||||
lin much_Det = ss "mute" ;
|
||||
|
||||
-- lin somePl_Det =
|
||||
-- lin someSg_Det =
|
||||
|
||||
lin no_Quant = mkQuant "ala" ;
|
||||
-- lin that_Quant = mkQuant "" ;
|
||||
lin this_Quant = mkQuant "ni" ;
|
||||
-- lin which_IQuant = mkQuant "seme" ;
|
||||
|
||||
-----
|
||||
-- NP
|
||||
|
||||
-- lin somebody_NP =
|
||||
|
||||
|
||||
-- lin everybody_NP =
|
||||
-- lin everything_NP =
|
||||
-- lin nobody_NP =
|
||||
-- lin nothing_NP =
|
||||
-- lin somebody_NP =
|
||||
-- lin something_NP =
|
||||
|
||||
-------
|
||||
-- Prep
|
||||
|
||||
-- lin above_Prep = mkPrep "" ;
|
||||
-- lin after_Prep = mkPrep "" ;
|
||||
-- lin before_Prep = mkPrep "" ;
|
||||
-- lin behind_Prep = mkPrep "" ;
|
||||
-- lin between_Prep = = mkPrep "" ;
|
||||
-- lin by8agent_Prep = mkPrep "" ;
|
||||
-- lin by8means_Prep = mkPrep "" ;
|
||||
-- lin during_Prep = mkPrep "" ;
|
||||
-- lin except_Prep = mkPrep "" ;
|
||||
lin for_Prep = mkPrep "tawa" ;
|
||||
lin from_Prep = mkPrep "tan" ;
|
||||
-- lin in8front_Prep = mkPrep "" ;
|
||||
lin in_Prep = mkPrep "lon" ;
|
||||
-- lin on_Prep = mkPrep "" ;
|
||||
-- lin part_Prep = mkPrep ;
|
||||
-- lin possess_Prep = mkPrep "" ;
|
||||
-- lin through_Prep = mkPrep "" ;
|
||||
lin to_Prep = mkPrep "tawa" ;
|
||||
-- lin under_Prep = mkPrep "" ;
|
||||
-- lin with_Prep = mkPrep "" ;
|
||||
-- lin without_Prep = mkPrep "" ;
|
||||
|
||||
-------
|
||||
-- Pron
|
||||
|
||||
-- Pronouns are closed class, no constructor in ParadigmsTok.
|
||||
lin it_Pron = ona_Pron ;
|
||||
lin i_Pron = mi_Pron ;
|
||||
lin youPol_Pron = sina_Pron ;
|
||||
lin youSg_Pron = sina_Pron ;
|
||||
lin he_Pron = ona_Pron ;
|
||||
lin she_Pron = ona_Pron ;
|
||||
lin we_Pron = ona_Pron ;
|
||||
lin youPl_Pron = sina_Pron ;
|
||||
lin they_Pron = ona_Pron ;
|
||||
|
||||
-- lin whatPl_IP =
|
||||
-- lin whatSg_IP =
|
||||
-- lin whoPl_IP =
|
||||
-- lin whoSg_IP =
|
||||
|
||||
-------
|
||||
-- Subj
|
||||
|
||||
-- lin although_Subj =
|
||||
-- lin because_Subj =
|
||||
-- lin if_Subj =
|
||||
-- lin that_Subj =
|
||||
-- lin when_Subj =
|
||||
|
||||
|
||||
------
|
||||
-- Utt
|
||||
|
||||
lin language_title_Utt = ss "toki pona" ;
|
||||
-- lin no_Utt = ss "" ;
|
||||
-- lin yes_Utt = ss "" ;
|
||||
|
||||
|
||||
-------
|
||||
-- Verb
|
||||
|
||||
lin have_V2 = mkV "jo" ;
|
||||
|
||||
lin can8know_VV = ss "ken" ;
|
||||
lin can_VV = ss "ken" ;
|
||||
-- lin must_VV =
|
||||
lin want_VV = ss "wile" ;
|
||||
|
||||
------
|
||||
-- Voc
|
||||
|
||||
-- lin please_Voc = ss "" ;
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user