我必须使用 Prolog 的 DCG 形式编写一些代码,将数字从英语翻译成法语(从 1 到 999)。我是否必须写下两条单独的语法规则(一条用于英语,一条用于法语)?在互联网上找到的这段代码可以帮助我吗? https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.prolog/ZF8p5cs4q0U 请帮忙。
问问题
309 次
1 回答
3
您可以分两步完成(英语到数字,数字到法语),或者您可以尝试直接从英语到法语。两步选项更通用(即让您可以两种方式进行转换,并且您可以轻松扩展它以支持更多语言),并且您已经有一个可用的工作代码(链接主题中的那个),所以我建议遵循这条路线。
请记住,就像 DCG 规则允许您解析某些文本一样,它也允许您生成它。如链接的主题所示:
?- phrase(number(N), [one, hundred, and, twenty, seven]).
N = 127
?- phrase(number(127), L).
L = [one, hundred, and, twenty, seven]
如果您将第二部分替换为phrase(number_fr(127), L)
,使用您实施的规则,您将获得之前解析的数字,用法语表示。
于 2013-02-26T05:57:41.080 回答