本文整理汇总了C#中Irony.Interpreter.ScriptThread.ThrowScriptError方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptThread.ThrowScriptError方法的具体用法?C# ScriptThread.ThrowScriptError怎么用?C# ScriptThread.ThrowScriptError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Irony.Interpreter.ScriptThread
的用法示例。
在下文中一共展示了ScriptThread.ThrowScriptError方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
var binding = thread.Bind(FunctionName, BindingRequestFlags.Read);
var result = binding.GetValueRef(thread);
if (result == null)
{
thread.ThrowScriptError("Unknown identifier: {0}", FunctionName);
return null;
}
CallTarget = result as ICallTarget;
if (CallTarget == null)
{
thread.ThrowScriptError("This identifier cannot be called: {0}", FunctionName);
return null;
}
// set Evaluate pointer
Evaluate = DoCall;
// standard epilog is done by DoCall
return DoCall(thread);
}
示例2: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
if (EntryPoint == null)
{
thread.ThrowScriptError("No entry point defined (entry point is a function named «Go»)");
return null;
}
// define built-in runtime library functions
var libraryFunctions = LibraryFunction.ExtractLibraryFunctions(thread, new RefalLibrary(thread));
foreach (var libFun in libraryFunctions)
{
var binding = thread.Bind(libFun.Name, BindingRequestFlags.Write | BindingRequestFlags.ExistingOrNew);
binding.SetValueRef(thread, libFun);
}
// define functions declared in the compiled program
foreach (var fun in FunctionList)
{
fun.Evaluate(thread);
}
// call entry point with an empty expression
EntryPoint.Call(thread, new object[] { PassiveExpression.Build() });
// standard epilog
thread.CurrentNode = Parent;
return null;
}
示例3: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
thread.CurrentNode = this; //standard prolog
var iCall = FunctionFactory.BindFunction(_targetName);
if (iCall == null)
thread.ThrowScriptError("Not callable", _targetName);
var args = (object[])_arguments.Evaluate(thread);
object result = iCall.Call(thread, args);
thread.CurrentNode = Parent; //standard epilog
return result;
}
示例4: EvaluateNoTail
// Evaluation for non-tail languages
private object EvaluateNoTail(ScriptThread thread)
{
thread.CurrentNode = this; //standard prolog
var target = TargetRef.Evaluate(thread);
var iCall = target as ICallTarget;
if (iCall == null)
thread.ThrowScriptError(Resources.ErrVarIsNotCallable, _targetName);
var args = (object[])Arguments.Evaluate(thread);
object result = iCall.Call(thread, args);
thread.CurrentNode = Parent; //standard epilog
return result;
}
示例5: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
// standard prolog
thread.CurrentNode = this;
foreach (var sentence in Sentences)
{
sentence.InputExpression = InputExpression;
sentence.BlockPattern = BlockPattern;
var result = sentence.Evaluate(thread);
if (result != null)
{
// standard epilog
thread.CurrentNode = Parent;
return result;
}
}
// standard Refal exception: input expression doesn't match any pattern
thread.ThrowScriptError("Recognition impossible");
return null;
}
示例6: DoEvaluate
protected override object DoEvaluate(ScriptThread thread)
{
thread.CurrentNode = this; //standard prolog
thread.ThrowScriptError(Resources.ErrConstructNotSupported, Name);
return null; //never happens
}
示例7: Call
public override object Call(ScriptThread thread, object[] parameters)
{
thread.ThrowScriptError("Calling external function is not supported");
return null;
}
示例8: 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;
}
示例9: EvaluateWithTailCheck
private object EvaluateWithTailCheck(ScriptThread thread)
{
thread.CurrentNode = this; //standard prolog
var target = TargetRef.Evaluate(thread);
var iCall = target as ICallTarget;
if (iCall == null)
thread.ThrowScriptError(Resources.ErrVarIsNotCallable, _targetName);
var args = (object[])Arguments.Evaluate(thread);
object result = null;
result = iCall.Call(thread, args);
//Note that after invoking tail we can get another tail.
// So we need to keep calling tails while they are there.
while (thread.Tail != null) {
var tail = thread.Tail;
var tailArgs = thread.TailArgs;
thread.Tail = null;
thread.TailArgs = null;
result = tail.Call(thread, tailArgs);
}
thread.CurrentNode = Parent; //standard epilog
return result;
}
示例10: DoEvaluate
protected override object DoEvaluate(ScriptThread thread) {
thread.CurrentNode = this; //standard prolog
thread.ThrowScriptError(Resources.ErrNullNodeEval, this.Term);
return null; //never happens
}
示例11: 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;
}