forked from GitHub/gf-rgl
(Ara) Small cleanup and adding comments
This commit is contained in:
@@ -5,26 +5,28 @@ flags optimize=noexpand ;
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
DetCN det cn = let {
|
DetCN det cn = let {
|
||||||
|
cas : Case -> Case = if_then_else Case det.is1sg Bare ;
|
||||||
number = sizeToNumber det.n ;
|
number = sizeToNumber det.n ;
|
||||||
state = possState det.d;
|
|
||||||
determiner : Case -> Str = \c ->
|
determiner : Case -> Str = \c ->
|
||||||
det.s ! cn.h ! (detGender cn.g det.n) ! c ;
|
det.s ! cn.h ! (detGender cn.g det.n) ! c ;
|
||||||
noun : Case -> NTable -> Str = \c,nt ->
|
noun : Case -> Str = \c ->
|
||||||
let cas = if_then_else Case det.is1sg Bare c -- no case vowel with 1sg poss. suff.
|
cn.s ! number
|
||||||
in nt ! number
|
|
||||||
! nounState det.d number
|
! nounState det.d number
|
||||||
! nounCase cas det.n det.d
|
! nounCase c det.n det.d ;
|
||||||
|
adj : Case -> Str = \c ->
|
||||||
|
cn.adj ! number
|
||||||
|
! (definite ! det.d) -- Indef remains Indef, rest become Def
|
||||||
|
! c
|
||||||
} in {
|
} in {
|
||||||
s = \\c =>
|
s = \\c =>
|
||||||
case cnB4det det.isPron det.isNum det.n det.d of {
|
case cnB4det det.isPron det.isNum det.n det.d of {
|
||||||
False => determiner c
|
False => determiner c
|
||||||
++ noun c cn.s -- deal with poss. suffix
|
++ noun c
|
||||||
++ cn.adj ! number ! state ! c -- normal case+state
|
++ adj c
|
||||||
++ cn.np ! c ;
|
++ cn.np ! c ;
|
||||||
True => noun c cn.s -- deal with poss. suffix
|
True => noun (cas c) -- deal with possessive suffix
|
||||||
-- ++ determiner c -- or this?
|
++ determiner c
|
||||||
++ det.s ! cn.h ! cn.g ! c
|
++ adj c
|
||||||
++ cn.adj ! number ! state ! c -- normal case+state
|
|
||||||
++ cn.np ! c
|
++ cn.np ! c
|
||||||
};
|
};
|
||||||
a = { pgn = agrP3 cn.h cn.g number;
|
a = { pgn = agrP3 cn.h cn.g number;
|
||||||
@@ -45,23 +47,20 @@ lin
|
|||||||
};
|
};
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
--should compile.. not working :( wierd error message.. bug?
|
|
||||||
PPartNP np v2 =
|
PPartNP np v2 =
|
||||||
let x = case np.a.pgn of {
|
let x = case np.a.pgn of {
|
||||||
Per3 g n => ( positAdj (v2.s ! VPPart) ) ! g ! n ! Indef ;
|
Per3 g n => positAdj (v2.s ! VPPart) ) ! g ! n ! Indef ; -- doesn't work because trying to glue runtime tokens
|
||||||
_ => \\_ => [] -- not occuring anyway
|
Per2 g n => \\_ => [] ;
|
||||||
} in {
|
_ => \\_ => []
|
||||||
s = \\c => np.s ! c ++ x ! c ;
|
} in np ** {
|
||||||
a = np.a
|
s = \\c => np.s ! c ++ v2.s ! VPPart ---- TODO: agreement
|
||||||
};
|
};
|
||||||
-}
|
-}
|
||||||
|
|
||||||
-- FIXME try parsing something like "this house now" and you'll get
|
AdvNP np adv = np ** {
|
||||||
-- an internal compiler error, but it still works.. wierd..
|
s = \\c => np.s ! c ++ adv.s
|
||||||
AdvNP np adv = {
|
|
||||||
s = \\c => np.s ! c ++ adv.s;
|
|
||||||
a = np.a
|
|
||||||
};
|
};
|
||||||
{-
|
{-
|
||||||
DetSg quant ord = {
|
DetSg quant ord = {
|
||||||
@@ -104,7 +103,7 @@ lin
|
|||||||
PossPron p = {
|
PossPron p = {
|
||||||
s = \\_,_,_,_ => p.s ! Gen;
|
s = \\_,_,_,_ => p.s ! Gen;
|
||||||
d = Poss;
|
d = Poss;
|
||||||
is1sg = case p.a.pgn of { Per1 _ => True ; _ => False } ;
|
is1sg = case p.a.pgn of { Per1 Sing => True ; _ => False } ;
|
||||||
isPron = True;
|
isPron = True;
|
||||||
isNum = False } ;
|
isNum = False } ;
|
||||||
|
|
||||||
|
|||||||
@@ -48,8 +48,6 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
--for roots with 2 consonants (works also for assimilated strs, like fc~,
|
--for roots with 2 consonants (works also for assimilated strs, like fc~,
|
||||||
--because the function discards anything after the first two characters
|
--because the function discards anything after the first two characters
|
||||||
mkRoot2 : Str -> Root2 = \fcl ->
|
mkRoot2 : Str -> Root2 = \fcl ->
|
||||||
-- let { cl = drop 2 fcl} in --drop 1 fcl
|
|
||||||
-- {f = take 2 fcl; c = take 2 cl}; --take 1
|
|
||||||
case fcl of {
|
case fcl of {
|
||||||
f@? + c@? + _ => { f = f ; c = c } ;
|
f@? + c@? + _ => { f = f ; c = c } ;
|
||||||
_ => error ("mkRoot2: too short root" ++ fcl)
|
_ => error ("mkRoot2: too short root" ++ fcl)
|
||||||
@@ -138,7 +136,7 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
VPerf Voice PerGenNum
|
VPerf Voice PerGenNum
|
||||||
| VImpf Mood Voice PerGenNum
|
| VImpf Mood Voice PerGenNum
|
||||||
| VImp Gender Number
|
| VImp Gender Number
|
||||||
| VPPart ;
|
| VPPart ; -- TODO: add gender and number (or check if easy to use BIND)
|
||||||
|
|
||||||
PerGenNum =
|
PerGenNum =
|
||||||
Per3 Gender Number
|
Per3 Gender Number
|
||||||
@@ -1045,9 +1043,6 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
|
|||||||
_ => Def --Lkitaabu
|
_ => Def --Lkitaabu
|
||||||
};
|
};
|
||||||
|
|
||||||
possState : State -> State = \s ->
|
|
||||||
case s of { Poss => Def ;
|
|
||||||
x => x } ;
|
|
||||||
--FIXME needs testing
|
--FIXME needs testing
|
||||||
nounCase : Case -> Size -> State -> Case =
|
nounCase : Case -> Size -> State -> Case =
|
||||||
\c,size,s ->
|
\c,size,s ->
|
||||||
|
|||||||
Reference in New Issue
Block a user