Files
gf-rgl/src/arabic/SymbolAra.gf
Inari Listenmaa 4141375976 (Ara) Add a distinction in CN and NP whether it's heavy
This makes a difference in word order; default is VSO, but if the
subject NP is complex, e.g. coming from RelNP or SentCN,
the more natural word order is SVO.

Example that triggered the change comes from an application grammar:

Gold standard by informant: مَا تَوَصْلّنَا إلَيهِ يَبْدُو مَنْطِقِيَّاً
Grammar before change: يَشْعُرُ مَاً نَتَوَصَّلُ إِلَىهُ مَنْطِقِيّاً
Grammar after change:  مَاً نَتَوَصَّلُ إِلَىهُ يَشْعُرُ مَنْطِقِيّاً
2019-01-04 13:01:03 +02:00

49 lines
1.3 KiB
Plaintext

--# -path=.:../abstract:../common
concrete SymbolAra of Symbol = CatAra ** open Prelude, ResAra in {
lin
SymbPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL
IntPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL
FloatPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL
NumPN i = {s = \\c => uttNum i ! Masc ; g = Masc ; h = NoHum } ; --IL
-- CNIntNP cn i = {
-- s = \\c => cn2str cn Sg Def c ++ uttNum i ! cn.g ;
-- a = dummyAgrP3 Sg ;
-- } ;
--IL TODO: check out some opers regarding state in ResAra. These are just dummy values.
CNSymbNP det cn xs =
let g = cn.g ; n = sizeToNumber det.n in emptyNP ** {
s = \\c => det.s ! NoHum ! g ! c ++ cn2str cn n Def c ++ xs.s; ----IL word order?? Seems to be nontrivial according to ResAra comments.
a = dummyAgrP3 n
} ;
CNNumNP cn i = emptyNP ** {
s = \\c => cn2str cn Sg Def c ++ uttNum i ! cn.g ;
a = dummyAgrP3 Sg
} ;
SymbS sy = {s = \\_ => sy.s} ;
SymbOrd n = {s = \\_,_,_ => n.s ; n = One ; isNum = False } ;
SymbNum n = SymbOrd n ** { n = ThreeTen ; isNum = True } ; ----IL
lincat
Symb, [Symb] = SS ;
lin
MkSymb s = s ;
BaseSymb = infixSS "und" ; ----
ConsSymb = infixSS "," ;
oper
dummyAgrP3 : Number -> Agr = \n ->
{ pgn = Per3 Masc n ; isPron = False } ;
}