好的,所以我正在为算术方程编写解析器。例如,我在列表中获取输入,"10+20" = [49,48,43,50,48]
然后将所有数字转换为相应的数字,例如[49,48,43,50,48] = [1,0,43,2,0]
,从那里我想将大于 10 的整数重新组合在一起。
从 ascii -> 数字转换我使用 maplist 和 number_codes 进行转换。
我的一种方法是遍历列表,如果它是 0-9 将其存储在一个变量中,然后检查下一个数字,0-9 将它附加到另一个变量等等,直到我点击一个运算符。我似乎不能简单地附加数字。这是我当前的代码。
expression(L) :-
maplist(chars, L, Ls).
chars(C, N) :-
(
C >= "0", "9" >= C -> number_codes(N, [C]);
N is C
).
不确定是否有一种简单的方法可以添加到我的代码中(据我所知,maplist 只返回一个与传入的列表长度相等的列表,但我可能会弄错)。
任何帮助表示赞赏:)