本文整理汇总了C#中ProtoScript.Runners.LiveRunner.UpdateGraph方法的典型用法代码示例。如果您正苦于以下问题:C# LiveRunner.UpdateGraph方法的具体用法?C# LiveRunner.UpdateGraph怎么用?C# LiveRunner.UpdateGraph使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProtoScript.Runners.LiveRunner
的用法示例。
在下文中一共展示了LiveRunner.UpdateGraph方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GraphILTest_Assign01_AstInput
public void GraphILTest_Assign01_AstInput()
{
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign);
// Update graph using AST node input
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(assign);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
}
示例2: TestPreviewModify1Node01
public void TestPreviewModify1Node01()
{
List<string> codes = new List<string>()
{
@"
a = 1;
",
@"
x = a;
y = x;
",
@"
a = 10;
",
};
Guid guid1 = System.Guid.NewGuid();
Guid guid2 = System.Guid.NewGuid();
// Create and run the graph [a = 1;] and [x = a; y = x;]
ProtoScript.Runners.LiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
List<Subtree> added = new List<Subtree>();
added.Add(CreateSubTreeFromCode(guid1, codes[0]));
added.Add(CreateSubTreeFromCode(guid2, codes[1]));
var syncData = new GraphSyncData(null, added, null);
liveRunner.UpdateGraph(syncData);
// Modify [a = 1;] to [a = 10;]
List<Subtree> modified = new List<Subtree>();
modified.Add(CreateSubTreeFromCode(guid1, codes[2]));
syncData = new GraphSyncData(null, null, modified);
// Get astlist from ChangeSetComputer
ChangeSetComputer changeSetState = new ProtoScript.Runners.ChangeSetComputer(liveRunner.Core);
List<AssociativeNode> astList = changeSetState.GetDeltaASTList(syncData);
// Get the the preview guids (affected graphs)
List<Guid> reachableGuidList = changeSetState.EstimateNodesAffectedByASTList(astList);
// Check if the the affected guids are in the list
List<Guid> expectedGuid = new List<Guid>{guid2};
AssertPreview(reachableGuidList, expectedGuid, 1);
}
示例3: GraphILTest_Assign01
public void GraphILTest_Assign01()
{
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign);
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
}
示例4: GraphILTest_ComplexWatch01
public void GraphILTest_ComplexWatch01()
{
// Build the AST trees
// x = 1..10;
ProtoCore.AST.AssociativeAST.RangeExprNode rangeExpr = new ProtoCore.AST.AssociativeAST.RangeExprNode();
rangeExpr.FromNode = new ProtoCore.AST.AssociativeAST.IntNode(0);
rangeExpr.ToNode = new ProtoCore.AST.AssociativeAST.IntNode(5);
rangeExpr.StepNode = new ProtoCore.AST.AssociativeAST.IntNode(1);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
rangeExpr,
ProtoCore.DSASM.Operator.assign);
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign);
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
var collection = mirror.GetData().GetElements();
Assert.IsTrue((Int64)collection[1].Data == 1);
}
示例5: GraphILTest_ModifiedNode01
public void GraphILTest_ModifiedNode01()
{
////////////////////////////////////////////////////////////////////
// Adds nodes => c = 78; d = a;
// Create subtree, execute
// Adds nodes => a = 10;
// Adds node => b = a;
// Create subtree, execute
// Modify subtree => a = b;
// execute updated graph (cylcic dependency should not occur)
////////////////////////////////////////////////////////////////////
liveRunner = new ProtoScript.Runners.LiveRunner();
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign0 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
new ProtoCore.AST.AssociativeAST.IntNode(78),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign0);
assign0 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("d"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign0);
List<Subtree> addedList = new List<Subtree>();
System.Guid guid0 = System.Guid.NewGuid();
addedList.Add(new Subtree(astList, guid0));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 78);
mirror = liveRunner.InspectNodeValue("d");
Assert.IsTrue(mirror.GetData().IsNull);
// Build the AST trees
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign1);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("b"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign2);
addedList = new List<Subtree>();
System.Guid guid1 = System.Guid.NewGuid();
addedList.Add(new Subtree(astList, guid1));
syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 78);
mirror = liveRunner.InspectNodeValue("d");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("b"),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign3);
List<Subtree> modifiedList = new List<Subtree>();
modifiedList.Add(new Subtree(astList, guid1));
syncData = new GraphSyncData(null, null, modifiedList);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 78);
mirror = liveRunner.InspectNodeValue("d");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
//.........这里部分代码省略.........
示例6: GraphILTest_Assign05
public void GraphILTest_Assign05()
{
////////////////////////////////////////////////////////////////////
// Adds nodes => a = 10;
// executes it
// Adds node => c = 20;
// executes it
// Adds node => b = a + c;
// executes it
// deletes node => c = 20;
// executes updated graph
////////////////////////////////////////////////////////////////////
liveRunner = new ProtoScript.Runners.LiveRunner();
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign1);
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
// Instantiate GraphSyncData
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
//string o = liveRunner.GetCoreDump();
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
new ProtoCore.AST.AssociativeAST.IntNode(20),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign2);
addedList = new List<Subtree>();
System.Guid guid1 = System.Guid.NewGuid();
addedList.Add(new Subtree(astList, guid1));
syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 20);
//string o = liveRunner.GetCoreDump();
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("b"),
new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
ProtoCore.DSASM.Operator.add),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign3);
addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 20);
mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue((Int64)mirror.GetData().Data == 30);
//o = liveRunner.GetCoreDump();
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign2);
List<Subtree> deletedList = new List<Subtree>();
deletedList.Add(new Subtree(astList, guid1));
syncData = new GraphSyncData(deletedList, null, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue(mirror.GetData().IsNull);
mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue(mirror.GetData().IsNull);
//.........这里部分代码省略.........
示例7: GraphILTest_Assign04_astInput
public void GraphILTest_Assign04_astInput()
{
////////////////////////////////////////////////////////////////////
// Adds nodes => a = 10;
// executes it
// Adds node => c = 20;
// executes it
// Adds node => b = a + c;
// executes it
////////////////////////////////////////////////////////////////////
liveRunner = new ProtoScript.Runners.LiveRunner();
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
// update graph
liveRunner.UpdateGraph(assign1);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
new ProtoCore.AST.AssociativeAST.IntNode(20),
ProtoCore.DSASM.Operator.assign);
// update graph
liveRunner.UpdateGraph(assign2);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 20);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("b"),
new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
ProtoCore.DSASM.Operator.add),
ProtoCore.DSASM.Operator.assign);
// update graph
liveRunner.UpdateGraph(assign3);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
mirror = liveRunner.InspectNodeValue("c");
Assert.IsTrue((Int64)mirror.GetData().Data == 20);
mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue((Int64)mirror.GetData().Data == 30);
}
示例8: GraphILTest_Assign03_astInput
public void GraphILTest_Assign03_astInput()
{
////////////////////////////////////////////////////////////////////
// Adds nodes => a = 10; c = 20; b = a + c;
// Creates 3 separate Subtrees
////////////////////////////////////////////////////////////////////
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign1);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
new ProtoCore.AST.AssociativeAST.IntNode(20),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign2);
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("b"),
new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IdentifierNode("c"),
ProtoCore.DSASM.Operator.add),
ProtoCore.DSASM.Operator.assign);
astList.Add(assign3);
// update graph with ast input
CodeBlockNode cNode = new CodeBlockNode();
cNode.Body = astList;
liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(cNode);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("b");
Assert.IsTrue((Int64)mirror.GetData().Data == 30);
}
示例9: GraphILTest_Assign02_AstInput
public void GraphILTest_Assign02_AstInput()
{
////////////////////////////////////////////////////////////////////
// Adds a node => a = 10 + 20;
// Creates Subtree and sync data and executes it via delta execution
////////////////////////////////////////////////////////////////////
// Build the AST tree
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IntNode(10),
new ProtoCore.AST.AssociativeAST.IntNode(20),
ProtoCore.DSASM.Operator.add),
ProtoCore.DSASM.Operator.assign);
// emit the DS code from the AST tree
liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(assign);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 30);
}
示例10: GraphILTest_FFIClassUsage_04
public void GraphILTest_FFIClassUsage_04()
{
//
// 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();
//==============================================
// Build the import Nodes
//==============================================
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
liveRunner.ResetVMAndResyncGraph(libs);
string code = null;
ProtoCore.AST.Node codeBlockNode = null;
ProtoCore.AST.AssociativeAST.CodeBlockNode commentNode = null;
List<ProtoCore.AST.Node> nodes = new List<ProtoCore.AST.Node>();
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
code = null;
nodes = new List<ProtoCore.AST.Node>();
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
codeBlockNode = null;
code = @"
a=2;
x=1..10;
y=(x+a);
z=Point.ByCoordinates(y,a,a);
";
commentNode = null;
codeBlockNode = GraphToDSCompiler.GraphUtilities.Parse(code, out commentNode);
nodes = ProtoCore.Utils.ParserUtils.GetAstNodes(codeBlockNode);
foreach (ProtoCore.AST.Node node in nodes)
{
astList.Add(node as ProtoCore.AST.AssociativeAST.AssociativeNode);
}
//==============================================
// emit the DS code from the AST tree
//==============================================
Guid guid = System.Guid.NewGuid();
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, guid));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
const int rep = 2;
for (int n = 0; n < rep; ++n)
{
//////
code = null;
nodes = new List<ProtoCore.AST.Node>();
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
codeBlockNode = null;
code = @"
a = null;
a=2;
x = null;
x=1..10;
y = null;
y=(x+a);
z= null;
z=Point.ByCoordinates(y,a,a);
";
commentNode = null;
codeBlockNode = GraphToDSCompiler.GraphUtilities.Parse(code, out commentNode);
nodes = ProtoCore.Utils.ParserUtils.GetAstNodes(codeBlockNode);
foreach (ProtoCore.AST.Node node in nodes)
{
astList.Add(node as ProtoCore.AST.AssociativeAST.AssociativeNode);
}
// Instantiate GraphSyncData
addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, guid));
syncData = new GraphSyncData(null, null, addedList);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("z");
var zValues = mirror.GetData().GetElements();
Assert.IsTrue(zValues != null && zValues.Count == 10);
//.........这里部分代码省略.........
示例11: GraphILTest_Assign01a
public void GraphILTest_Assign01a()
{
////////////////////////////////////////////////////////////////////
// Adds a node => a = 10;
// Creates Subtree, Deletes the node,
// Creates Subtree and sync data and executes it via delta execution
////////////////////////////////////////////////////////////////////
// Build the AST trees
ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("a"),
new ProtoCore.AST.AssociativeAST.IntNode(10),
ProtoCore.DSASM.Operator.assign);
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign);
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
System.Guid guid1 = System.Guid.NewGuid();
addedList.Add(new Subtree(astList, guid1));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner = new ProtoScript.Runners.LiveRunner();
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue((Int64)mirror.GetData().Data == 10);
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
astList.Add(assign);
List<Subtree> deletedList = new List<Subtree>();
deletedList.Add(new Subtree(astList, guid1));
syncData = new GraphSyncData(deletedList, null, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
mirror = liveRunner.InspectNodeValue("a");
Assert.IsTrue(mirror.GetData().IsNull);
}
示例12: 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);
}
示例13: GraphILTest_FFIClassUsage_03
//.........这里部分代码省略.........
// 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
//==============================================
//ProtoCore.AST.AssociativeAST.ImportNode importNode = new ProtoCore.AST.AssociativeAST.ImportNode();
//importNode.ModuleName = "ProtoGeometry.dll";
//astList.Add(importNode);
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
liveRunner.ResetVMAndResyncGraph(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
//==============================================
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
}
示例14: 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);
}
示例15: GraphILTest_FFIClassUsage_01
public void GraphILTest_FFIClassUsage_01()
{
List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
//==============================================
// Build the import Nodes
//==============================================
ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner();
List<string> libs = new List<string>();
libs.Add("ProtoGeometry.dll");
liveRunner.ResetVMAndResyncGraph(libs);
//==============================================
// Build the constructor call nodes
// Point.ByCoordinates(10,10,10)
//==============================================
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
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);
//==============================================
// Build a binary expression to retirieve the x property
// xval = p.X;
//==============================================
ProtoCore.AST.AssociativeAST.IdentifierListNode identListNode = new ProtoCore.AST.AssociativeAST.IdentifierListNode();
identListNode.LeftNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("p");
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);
//==============================================
// emit the DS code from the AST tree
//
// import("ProtoGeometry.dll");
// p = Point.Bycoordinates(10.0, 10.0, 10.0);
// xval = p.X;
//
//==============================================
// Instantiate GraphSyncData
List<Subtree> addedList = new List<Subtree>();
addedList.Add(new Subtree(astList, System.Guid.NewGuid()));
GraphSyncData syncData = new GraphSyncData(null, addedList, null);
// emit the DS code from the AST tree
liveRunner.UpdateGraph(syncData);
ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("xval");
Assert.IsTrue((double)mirror.GetData().Data == 10.0);
///////////////////////////////////////////////////////////////////////////////
libs = new List<string>();
libs.Add("ProtoGeometry.dll");
liveRunner.ResetVMAndResyncGraph(libs);
astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>();
constructorCall = new ProtoCore.AST.AssociativeAST.FunctionCallNode();
constructorCall.Function = new ProtoCore.AST.AssociativeAST.IdentifierNode("ByCoordinates");
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;
className = "Point";
inode = new ProtoCore.AST.AssociativeAST.IdentifierNode(className);
dotCall = ProtoCore.Utils.CoreUtils.GenerateCallDotNode(inode, constructorCall, liveRunner.Core);
//==============================================
// Build the binary expression
// p = Point.ByCoordinates(10,10,10)
//==============================================
stmt1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode(
new ProtoCore.AST.AssociativeAST.IdentifierNode("p"),
dotCall,
//.........这里部分代码省略.........