本文整理汇总了C#中Irony.Interpreter.ScriptThread.SetLastPattern方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptThread.SetLastPattern方法的具体用法?C# ScriptThread.SetLastPattern怎么用?C# ScriptThread.SetLastPattern使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Irony.Interpreter.ScriptThread
的用法示例。
在下文中一共展示了ScriptThread.SetLastPattern方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: EvaluateWhereClause
object EvaluateWhereClause(Runtime.PassiveExpression expr, Runtime.Pattern lastPattern, ScriptThread thread)
{
// instantiate where-clause pattern
var patt = Pattern.Instantiate(thread);
patt.CopyBoundVariables(lastPattern);
// perform matching
var result = patt.Match(expr);
if (result)
{
// store last recognized pattern as a local variable
thread.SetLastPattern(patt);
// match succeeded, return result expression
if (ResultExpression != null)
{
return ResultExpression.Evaluate(thread);
}
// match succeeded, evaluate more conditions
if (MoreConditions != null)
{
return MoreConditions.Evaluate(thread);
}
}
// matching failed, return nothing
return null;
}
示例2: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
// evaluate pattern and copy bound variables of the current block
var patt = Pattern.Instantiate(thread);
if (BlockPattern != null)
{
patt.CopyBoundVariables(BlockPattern);
}
object result = null;
// if pattern is recognized, calculate new expression and return true
var success = patt.Match(InputExpression);
if (success)
{
// store last recognized pattern as a local variable
thread.SetLastPattern(patt);
// simple sentence
if (Expression != null)
{
result = Expression.Evaluate(thread);
}
// sentence with a where- or when-clause
else if (Conditions != null)
{
result = Conditions.Evaluate(thread);
}
}
// standard epilog
thread.CurrentNode = Parent;
return result;
}