GF 中用于生成西班牙语句子的正确语法树是什么:
a) 包含虚拟语气。
b) 主语也是句子。
一个例子:
me gusta que mi jefe no trabaje hoy
让我们一块一块地构建这个。
bossDoesntWork_S : S = mkS negativePol (mkCl (mkNP i_Pron boss_N) work_V) ;
查看表格,我们看到指示性和虚拟语气都被保留了。
> cc -table bossDoesntWork_S
s . CommonRomance.Indic => mi jefe no trabaja
s . CommonRomance.Conjunct => mi jefe no trabaje
所以现在我们需要把它作为一个参数给一些 VS,它会强制使用虚拟语气。让我们构造一个——ParadigmsSpa 中有一个现成的构造函数,名为subjVS : V -> VS
.
likeThat_VS : VS = subjVS like_V ;
现在让我们测试一下:
> cc -one mkS ( mkCl (mkNP i_Pron) likeThat_VS bossDoesntWork_S)
yo gusto que mi jefe no trabaje
虚拟语气是正确的,但不幸的是,与格协议无法正常工作。这是一个已知问题,我已尝试修复它,但将其添加到顶部以使一切正常,使整个语法变得非常缓慢。(我想知道如果西班牙语不使用 Romance 函子是否更可行,但这不是我愿意尝试的。:-P)
所以,这个虚拟语气部分很容易。这里有一个语法供你尝试。
resource Subjunctive = open SyntaxSpa, LexiconSpa, ParadigmsSpa in {
oper
likeThat_VS : VS = subjVS like_V ;
bossDoesntWork_S : S = mkS negativePol (mkCl (mkNP i_Pron boss_N) work_V) ;
-- lexicon
like_V : V = <like_V2 : V> ; --treat LexiconSpa.like_V2 as V
work_V : V = mkV "trabajar" ;
}
那么如何处理与格动词呢?对于 V2,您只需翻转主语和宾语即可。但是对于 VS,它更棘手,并且需要 ~ugly~creative hacks。
现在,我建议进行后处理,如this answer。与格动词作为 a 的好处VS
是动词总是以第三人称单数变化,所以你没有像“me gusta s tu”与“me gusta n ustedes”这样的情况。您可以安全地后处理"yo gusto que"
为"me gusta que"
.
如果 RGL 已修复以包括对与格动词的正确处理,我将更新此答案。