本文整理汇总了C#中Irony.Interpreter.ScriptThread.GetLastPattern方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptThread.GetLastPattern方法的具体用法?C# ScriptThread.GetLastPattern怎么用?C# ScriptThread.GetLastPattern使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Irony.Interpreter.ScriptThread
的用法示例。
在下文中一共展示了ScriptThread.GetLastPattern方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
object result = null;
// is this variable a part of a pattern?
if (UseType == NodeUseType.Name)
{
// don't evaluate it
result = CreateVariable();
}
else
{
// get last recognized pattern
var pattern = thread.GetLastPattern();
if (pattern == null)
{
thread.ThrowScriptError("No pattern recognized!");
return null;
}
// read variable from the last recognized pattern
result = pattern.GetVariable(Index);
}
// standard epilog
thread.CurrentNode = Parent;
return result;
}
示例2: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
// evaluate expression
var expression = Expression.EvaluateExpression(thread);
object result = null;
// extract last recognized pattern (it contains bound variables)
var lastPattern = thread.GetLastPattern();
if (lastPattern == null)
{
thread.ThrowScriptError("Internal error: last recognized pattern is lost.");
return null; // never gets here
}
// with-clause
if (Block != null)
{
Block.InputExpression = expression;
Block.BlockPattern = lastPattern;
result = Block.Evaluate(thread);
}
// where-clause
else if (Pattern != null)
{
result = EvaluateWhereClause(expression, lastPattern, thread);
}
// internal compiler error
else
{
thread.ThrowScriptError("Internal error: AST node doen't represent neither where- nor when-clause.");
return null; // never get here
}
// standard epilog
thread.CurrentNode = Parent;
return result;
}