0
我想知道如何创建一个数据类型,并可以在评估一个字符串 含有(“1 + 2”)帮助SML使用的数据类型加减
我想制作一个数据类型
的datatype opp = oper of string;
datatype numm = numb of int;
datatype calc = opp | numm;
我想知道如何创建一个数据类型,并可以在评估一个字符串 含有(“1 + 2”)帮助SML使用的数据类型加减
我想制作一个数据类型
的datatype opp = oper of string;
datatype numm = numb of int;
datatype calc = opp | numm;
我想说
datatype expr = Number of int | Add of expr * expr;
沿
fun calc(Number(x)) = x
| calc(Add(x, y)) = calc(x) + calc(y);
会做的伎俩。但是,一旦开始添加更多的运算符,您需要考虑关联性和运算符优先级。
那么你会怎么称呼(1 + 3)?你会只是把calc(exp(1 + 3))抱歉,我是ML新手。 – user3312266 2014-11-03 02:17:18
@ user3312266你的'calc(Add(Number(1),Number(3)))' – 2014-11-03 03:58:36
我的理解是通常在解析器中而不是在评估器中处理关联性和优先级。你将'2 + 3 * 8'解析成'Add(Number(2),Multiply(Number(3),Number(8)))'而不是'Multiply(Add(Number(2),Number(3)),数(8))'。评估人员相当简单。 – 2014-11-04 22:42:31