2

我必须使用 Prolog 的 DCG 形式编写一些代码,将数字从英语翻译成法语(从 1 到 999)。我是否必须写下两条单独的语法规则(一条用于英语,一条用于法语)?在互联网上找到的这段代码可以帮助我吗? https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.prolog/ZF8p5cs4q0U 请帮忙。

4

1 回答 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 回答