Parsing Prolog-Or语句中的定句语法
用两种方法中的任何一种来定义一个可以描述副词的短语,最好的方法是什么 你能说:Parsing Prolog-Or语句中的定句语法,parsing,prolog,dcg,Parsing,Prolog,Dcg,用两种方法中的任何一种来定义一个可以描述副词的短语,最好的方法是什么 你能说: 副词短语(N,adv(N,adv))->方式一 副词短语(N,adv(N,adv))-->way2. 我尝试过这样做,但我在输出中得到了变量(如\u G12345),这看起来不正确。是的,您所展示的绝对是一种有效的方式来陈述CGS中的替代方案 还有其他选择。以下是一些: 1.你的版本 这是您的版本,仅扩展到更完整的示例: adverb_phrase(N, adv(N,Adv)) --> adv1(Adv). adve
副词短语(N,adv(N,adv))-->way2.
我尝试过这样做,但我在输出中得到了变量(如
\u G12345
),这看起来不正确。是的,您所展示的绝对是一种有效的方式来陈述CGS中的替代方案
还有其他选择。以下是一些:
1.你的版本
这是您的版本,仅扩展到更完整的示例:
adverb_phrase(N, adv(N,Adv)) --> adv1(Adv).
adverb_phrase(N, adv(N,Adv)) --> adv2(Adv).
adv1(likely) --> [].
adv2(happily) --> [].
在本例中,我只是简单地使用了相同的非终结符来表示替代项
3.使用(“|”)//2
请注意,还有其他方法表示备选方案。一种优雅的方法是使用(“|”)//2
,类似于在其他形式主义中通常表示备选方案的方式
例如,您可以将初始示例编写为:
adverb_phrase(N, adv(N,Adv)) --> adv1(Adv) | adv2(Adv).
adv1(likely) --> [].
adv2(happily) --> [].
副词短语(N,adv(N,adv))->adv1(adv)| adv2(adv)。
adv1(可能)->[]。
adv2(高兴地)->[]。
与plainProlog类似,您也可以使用(;)//2
,而不是(“|”)//2
所示的变体产生完全相同的答案。您选择的版本取决于几个因素,例如:您是否更多地使用“语法”或“单子”意义上的DCG
对于您的具体情况,从第一印象来看,版本2似乎非常适合
请注意,这两个选项都不是“或声明”。我们称之为非终结符 谢谢你为我详细说明! adverb_phrase(N, adv(N,Adv)) --> adv(Adv). adv(likely) --> []. adv(happily) --> []. adverb_phrase(N, adv(N,Adv)) --> adv1(Adv) | adv2(Adv). adv1(likely) --> []. adv2(happily) --> [].