如何定义新的翻译域?

下面是一个具体的例子,说明它是如何进行的。假设你想为算术命题构建一个翻译器。然后首先构建一个抽象语法定义了自然数集、“偶数”和“奇数”属性以及“大于”关系等基本概念;属性和关系是从表达式到命题的函数。这是GF中抽象语法的样子:



Nat:设置
偶数:Exp->Prop
奇数:Exp->Prop
Gt:支出->支出->道具
总和:Exp->Exp



第一个具体的语法可能是英语。你通过给予来定义它示例每个新概念中,提供类似于以下内容的信息(在文本文件中,通过GUI,或通过带有每个概念插槽的web表单):



Nat=“数字”
偶数x=“x为偶数”
奇数x=“x是奇数”
Gt x y=“x大于y”
总和x=“x的总和”


第二组示例给出了德语的具体语法:



Nat=“扎尔”
偶数x=“x is gerade”
奇数x=“x为未接地”
Gt x y=“x ist gröer als y”
总和x=“die Summe von x”



通过使用英语和德语资源语法,每个示例都被概括为在所有上下文和组合中使用这些概念所需的一组规则。例如,生成的系统支持每个大于0的偶数都是两个奇数之和作为jede gerade Zahl,die gröer als 0 ist,is die Summe von zwei ungraden Zahlen(杰德·杰拉德·扎尔)