本文整理汇总了C#中ProtoScript.Runners.LiveRunner.ResetVMAndImportLibrary方法的典型用法代码示例。如果您正苦于以下问题:C# LiveRunner.ResetVMAndImportLibrary方法的具体用法?C# LiveRunner.ResetVMAndImportLibrary怎么用?C# LiveRunner.ResetVMAndImportLibrary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProtoScript.Runners.LiveRunner
的用法示例。
在下文中一共展示了LiveRunner.ResetVMAndImportLibrary方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GraphILTest_FFIClassUsage_02_astInput
public void GraphILTest_FFIClassUsage_02_astInput()
{
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
//==============================================
// Build the import Nodes
//==============================================
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
List<LibraryMirror> libMirrors = liveRunner.ResetVMAndImportLibrary(libs);
//==============================================
// Build the constructor call nodes
// Point.ByCoordinates(10,10,10)
//==============================================
ProtoCore.AST.AssociativeAST.FunctionCallNode constructorCall = new ProtoCore.AST.AssociativeAST.FunctionCallNode();
constructorCall.Function = new ProtoCore.AST.AssociativeAST.IdentifierNode("ByCoordinates");
List<ProtoCore.AST.AssociativeAST.AssociativeNode> listArgs = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(10.0));
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(10.0));
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(10.0));
constructorCall.FormalArguments = listArgs;
string className = "Point";
ProtoCore.AST.AssociativeAST.IdentifierNode inode = new ProtoCore.AST.AssociativeAST.IdentifierNode(className);
ProtoCore.AST.AssociativeAST.FunctionDotCallNode dotCall = ProtoCore.Utils.CoreUtils.GenerateCallDotNode(inode, constructorCall, liveRunner.Core);
//==============================================
// Build the binary expression
// p = Point.ByCoordinates(10,10,10)
//==============================================
ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("p"),
dotCall,
ProtoCore.DSASM.Operator.assign);
astList.Add(stmt1);
//==============================================
// Translate the point
// newPoint = p.Translate(1,2,3);
//==============================================
ProtoCore.AST.AssociativeAST.FunctionCallNode functionCallTranslate = new ProtoCore.AST.AssociativeAST.FunctionCallNode();
functionCallTranslate.Function = new ProtoCore.AST.AssociativeAST.IdentifierNode("Translate");
listArgs = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(1.0));
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(2.0));
listArgs.Add(new ProtoCore.AST.AssociativeAST.DoubleNode(3.0));
functionCallTranslate.FormalArguments = listArgs;
//ProtoCore.AST.AssociativeAST.FunctionDotCallNode dotCallTranslate = new ProtoCore.AST.AssociativeAST.FunctionDotCallNode("p", functionCallTranslate);
className = "p";
inode = new ProtoCore.AST.AssociativeAST.IdentifierNode(className);
ProtoCore.AST.AssociativeAST.FunctionDotCallNode dotCallTranslate = ProtoCore.Utils.CoreUtils.GenerateCallDotNode(inode, functionCallTranslate, liveRunner.Core);
//==============================================
// Build the binary expression
//==============================================
ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("newPoint"),
dotCallTranslate,
ProtoCore.DSASM.Operator.assign);
astList.Add(stmt2);
//==============================================
// Build a binary expression to retirieve the x property
// xval = newPoint.X
//==============================================
ProtoCore.AST.AssociativeAST.IdentifierListNode identListNode = new ProtoCore.AST.AssociativeAST.IdentifierListNode();
identListNode.LeftNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("newPoint");
identListNode.Optr = ProtoCore.DSASM.Operator.dot;
identListNode.RightNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("X");
ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("xval"),
identListNode,
ProtoCore.DSASM.Operator.assign);
astList.Add(stmt3);
//==============================================
//
// import ("ProtoGeometry.dll");
// p = Point.Bycoordinates(10.0, 10.0, 10.0);
// newPoint = p.Translate(1.0,2.0,3.0);
// xval = newPoint.X;
//
//==============================================
// update graph
CodeBlockNode cNode = new CodeBlockNode();
cNode.Body = astList;
liveRunner.UpdateGraph(cNode);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("xval");
Assert.IsTrue((double)mirror.GetData().Data == 11.0);
}
示例2: TestBuildAST_01
public void TestBuildAST_01()
{
//==============================================
//
// import("ProtoGeometry.dll");
// p = Point.Bycoordinates(0.0, 2.0, 1.0);
// xval = p.X;
//
//==============================================
//==============================================
// Build the import Nodes
//==============================================
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
liveRunner.ResetVMAndImportLibrary(libs);
string type = "Point";
long hostInstancePtr = 0;
string functionName = "ByCoordinates";
List<IntPtr> userDefinedArgs = null;
List<string> primitiveArgs = new List<string>();
primitiveArgs.Add("0");
primitiveArgs.Add("2");
primitiveArgs.Add("1");
string formatString = "ddd";
string symbolName = "";
string code = "";
AssociativeNode assign1 = ASTCompilerUtils.BuildAST(type, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core,
ref symbolName, ref code);
liveRunner.UpdateGraph(assign1);
primitiveArgs.Clear();
primitiveArgs.Add("10");
primitiveArgs.Add("0");
primitiveArgs.Add("0");
functionName = "Translate";
AssociativeNode assign2 = ASTCompilerUtils.BuildAST(symbolName, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core,
ref symbolName, ref code);
liveRunner.UpdateGraph(assign2);
//==============================================
// Build a binary expression to retirieve the x property
// xval = p.X;
//==============================================
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.IdentifierListNode identListNode = new ProtoCore.AST.AssociativeAST.IdentifierListNode();
identListNode.LeftNode = new ProtoCore.AST.AssociativeAST.IdentifierNode(symbolName);
identListNode.Optr = ProtoCore.DSASM.Operator.dot;
identListNode.RightNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("X");
ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("xval"),
identListNode,
ProtoCore.DSASM.Operator.assign);
astList.Add(stmt2);
//==============================================
//
// import("ProtoGeometry.dll");
// p = Point.Bycoordinates(0.0, 20.0, 1.0);
// q = p.Translate(10.0, 0.0, 0.0);
// xval = p.X;
//
//==============================================
// update graph
CodeBlockNode cNode = new CodeBlockNode();
cNode.Body = astList;
liveRunner.UpdateGraph(cNode);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("xval");
Assert.IsTrue((double)mirror.GetData().Data == 10.0);
}
示例3: GraphILTest_FFIClassUsage_03_astInput
public void GraphILTest_FFIClassUsage_03_astInput()
{
//
// a=2;
// tSSA_150=1..10;
// x= tSSA_150;
// tSSA_151=x;
// tSSA_152=a;
// tSSA_153=( tSSA_151+ tSSA_152);
// var_79153f69593b4fde9bb50646a1aaea96= tSSA_153;
// tSSA_154=Point.ByCoordinates(var_79153f69593b4fde9bb50646a1aaea96,a,a);
// var_347c1113204a4d15a22f7daf83bbe20e= tSSA_154;
//
//
// a=2;
// x=1..10;
// var_79153f69593b4fde9bb50646a1aaea96=(x+a);
// var_347c1113204a4d15a22f7daf83bbe20e=Point.ByCoordinates(var_79153f69593b4fde9bb50646a1aaea96,a,a);
//
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
//==============================================
// Build the import Nodes
//==============================================
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
List<LibraryMirror> libMirrors = liveRunner.ResetVMAndImportLibrary(libs);
// Build the AST trees
// a = 2
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(2),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign1);
// x = 1..10;
ProtoCore.AST.AssociativeAST.RangeExprNode rangeExpr = new ProtoCore.AST.AssociativeAST.RangeExprNode();
rangeExpr.FromNode = new ProtoCore.AST.AssociativeAST.IntNode(1);
rangeExpr.ToNode = new ProtoCore.AST.AssociativeAST.IntNode(10);
rangeExpr.StepNode = new ProtoCore.AST.AssociativeAST.IntNode(1);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("x"),
rangeExpr,
ProtoCore.DSASM.Operator.assign);
astList.Add(assign2);
// var_79153f69593b4fde9bb50646a1aaea96 = (x + a);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("dude"),
new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("x"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
ProtoCore.DSASM.Operator.add),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign3);
//==============================================
// Build the constructor call nodes
// Point.ByCoordinates(10,10,10)
//==============================================
ProtoCore.AST.AssociativeAST.FunctionCallNode constructorCall = new ProtoCore.AST.AssociativeAST.FunctionCallNode();
constructorCall.Function = new ProtoCore.AST.AssociativeAST.IdentifierNode("ByCoordinates");
List<ProtoCore.AST.AssociativeAST.AssociativeNode> listArgs = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
listArgs.Add(new ProtoCore.AST.AssociativeAST.IdentifierNode("dude"));
listArgs.Add(new ProtoCore.AST.AssociativeAST.IdentifierNode("a"));
listArgs.Add(new ProtoCore.AST.AssociativeAST.IdentifierNode("a"));
constructorCall.FormalArguments = listArgs;
string className = "Point";
ProtoCore.AST.AssociativeAST.IdentifierNode inode = new ProtoCore.AST.AssociativeAST.IdentifierNode(className);
ProtoCore.AST.AssociativeAST.FunctionDotCallNode dotCall = ProtoCore.Utils.CoreUtils.GenerateCallDotNode(inode, constructorCall, liveRunner.Core);
//==============================================
// Build the binary expression
// p = Point.ByCoordinates(10,10,10)
//==============================================
ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("final"),
dotCall,
ProtoCore.DSASM.Operator.assign);
astList.Add(stmt1);
// emit the DS code from the AST tree
CodeBlockNode cNode = new CodeBlockNode();
cNode.Body = astList;
liveRunner.UpdateGraph(cNode);
}