我必须编写一些代码,使用Prolog的DCG形式将数字从英语翻译成法语(从1到999)。我是否必须写下两个单独的语法规则(一个用于英语,一个用于法语)或不用? 在互联网上找到这段代码可以帮助我吗? https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.prolog/ZF8p5cs4q0U 请帮助。
答案 0 :(得分: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)
替换第二部分,使用您实施的规则,您将使用法语表达之前解析的数字。