LISP结果缓冲区
我正在寻找一种方法来处理更复杂的结果缓冲区,如深度嵌套的列表。我希望它能把结果缓冲区转换成一个List。如果有人有代码,他们想分享我会很感激。这是我目前掌握的情况。
///
/// Converts ato . If the Lisp arguments are below the minimum or above the maximum required, an exception will be thrown.
///
///
///
///
///
///
public static List HandleLispArguments(ResultBuffer arguments, int minimum, int maximum)
{
if (arguments == null)
throw new System.Exception("too few arguments");
TypedValue[] rawArgs = arguments.AsArray();
List Arguments = new List();
// List Depth
int depth = 0;
Action, int, object> Add = null;
Add = (list, depth, item) =>
{
if (depth == 0)
list.Add(item);
else
Add((List)list, --depth, item);
};
foreach (TypedValue item in rawArgs)
{
object selected = item;
if (item.TypeCode == (short)LispDataType.ListBegin)
{
Add(Arguments, depth, new List());
depth++;
selected = null;
}
else if(item.TypeCode == (short)LispDataType.ListEnd)
{
depth--;
selected = null;
}
if (selected != null)
Add(Arguments, depth, selected);
}
if (Arguments.Countmaximum)
throw new System.Exception("too many arguments");
return Arguments;
}
**** Hidden Message ***** 看看这里:https://forums.augi.com/showthread.php?154713-NET-Return-Conversion-to-TypedValue/page2,它看起来类似于你试图实现
干杯,马克 我不知道结果如何,但Tony Tanzillo正在测试类似的东西…
http://www.theswamp.org/index.php?topic=43181.msg483994#msg483994
这是一个很好的例子 谢谢吉尔!
这是我正在寻找的完整实现。
页:
[1]