Dan*_*ola 8 compiler-construction translation-scheme roman-numerals
龙书包括使用语法指导的翻译方案将整数转换为罗马数字的练习.
怎么能完成?
我会考虑从右到左解析。
首先,我将映射单位列:
0 -> ''
1 -> 'I'
2 -> 'II'
3 -> 'III'
4 -> 'IV'
...
9 -> 'IX'
Run Code Online (Sandbox Code Playgroud)
然后,如果有第二列(例如,右数第二列 = 十列),我将使用它来映射到
0 -> ''
1 -> 'X'
2 -> 'XX'
...
9 -> 'XC'
Run Code Online (Sandbox Code Playgroud)
这需要添加到初始输出之前。
对下一列(数百、数千)重复此操作,直到用完字母。
仔细检查该数字不是“0”或负数。