我为 Clojure 语言的子集创建了一个简单的解析器。由于某种原因,它返回一个格式为 [a,b,c|d] 的列表,而不是格式 [a,b,c,d] 的列表。Morover member(X, List) 无法正确处理这种格式的列表,即
member(X, [a,b,c|d]).
X = a ;
X = b ;
X = c.
Run Code Online (Sandbox Code Playgroud)
问题是我应该如何改进我的代码来解决这个问题并以通常的格式获取列表?或者也许有一种方法可以转换 [a,b,c|d] -> [a,b,c,d] ?
您可以致电例如
main.
[(concat x) (lambda x (inc (inc x)))]
Run Code Online (Sandbox Code Playgroud)
并得到:
expr([expr([expr(at(id([c,o,n,c,a,t])))|expr(at(id([x])))])|expr([expr(at(id([l,a,m,b,d,a]))),expr(at(id([x])))|expr([expr(at(id([i,n,c])))|expr([expr(at(id([i,n,c])))|expr(at(id([x])))])])])])
Run Code Online (Sandbox Code Playgroud)
代码:
mydelimiter --> delimiter.
mydelimiter --> delimiter, mydelimiter.
delimiter --> [','].
delimiter --> ['\n'].
delimiter --> ['\t'].
delimiter --> ['\s'].
specsymbol('+') --> ['+'].
specsymbol('-') --> ['-'].
specsymbol('>') --> ['>'].
specsymbol('<') --> ['<'].
specsymbol('=') --> ['='].
specsymbol('*') --> ['*'].
specsymbol('_') --> ['_']. …Run Code Online (Sandbox Code Playgroud)