public virtual Object evaluate(ValueExp e) { // evaluate away... ExpressionContext c = new ExpressionContext(this); return(e.evaluate(c)); }
void ValueNodeTextBox_LabelChanged(object sender, LabelEventArgs e) { NodeTextBox box = sender as NodeTextBox; if (box.Parent.CurrentNode == null) { return; } VariableNode node = box.Parent.CurrentNode.Tag as VariableNode; node.IsEditing = false; try { var debugManager = PluginMain.debugManager; var flashInterface = debugManager.FlashInterface; IASTBuilder b = new ASTBuilder(false); ValueExp exp = b.parse(new java.io.StringReader(node.GetVariablePath())); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.GetFrames()[debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); node.Variable = (Variable)obj; if (!watchMode) { PanelsHelper.watchUI.UpdateElements(); } if (ValueChanged != null) { ValueChanged(this, EventArgs.Empty); } } catch (Exception ex) { ErrorManager.ShowError(TextHelper.GetString("Error.Reevaluate"), ex); } }
private void Manager_OnMouseHover(ScintillaControl sci, Int32 position) { DebuggerManager debugManager = PluginMain.debugManager; FlashInterface flashInterface = debugManager.FlashInterface; if (!PluginBase.MainForm.EditorMenu.Visible && flashInterface != null && flashInterface.isDebuggerStarted && flashInterface.isDebuggerSuspended) { if (debugManager.CurrentLocation != null && debugManager.CurrentLocation.File != null) { String localPath = debugManager.GetLocalPath(debugManager.CurrentLocation.File); if (localPath == null || localPath != PluginBase.MainForm.CurrentDocument.FileName) { return; } } else { return; } Point dataTipPoint = Control.MousePosition; Rectangle rect = new Rectangle(m_ToolTip.Location, m_ToolTip.Size); if (m_ToolTip.Visible && rect.Contains(dataTipPoint)) { return; } position = sci.WordEndPosition(position, true); String leftword = GetWordAtPosition(sci, position); if (leftword != String.Empty) { try { ASTBuilder builder = new ASTBuilder(true); ValueExp exp = builder.parse(new System.IO.StringReader(leftword)); ExpressionContext context = new ExpressionContext(flashInterface.Session); context.Depth = debugManager.CurrentFrame; Object obj = exp.evaluate(context); Show(dataTipPoint, (Variable)obj); } catch (Exception e) { } } } }
public static void Main(String[] args) { ASTBuilder ab = new ASTBuilder(true); try { ab.addLong(5); ab.addOp(Operator.ARITH_SUB); ab.addLong(6); ValueExp exp1 = ab.done(); ab.addLong(5); ab.addOp(Operator.ARITH_ADD); ab.addOp(Operator.OPEN_PAREN); ab.addLong(6); ab.addOp(Operator.ARITH_DIV); ab.addLong(4); ab.addOp(Operator.ARITH_MULT); ab.addLong(7); ab.addOp(Operator.CLOSE_PAREN); ab.addOp(Operator.BITWISE_RSHIFT); ab.addLong(2); ValueExp exp2 = ab.done(); ValueExp exp3 = ab.parse(new StringReader("5-6")); //$NON-NLS-1$ ValueExp exp4 = ab.parse(new StringReader("5 +(6/4*7 )>>2")); //$NON-NLS-1$ ValueExp exp5 = ab.parse(new StringReader(" 4 == 2")); //$NON-NLS-1$ Object o1 = exp1.evaluate(null); Object o2 = exp2.evaluate(null); Object o3 = exp3.evaluate(null); Object o4 = exp4.evaluate(null); Object o5 = exp5.evaluate(null); Console.Out.WriteLine("=" + o1 + "," + o2); //$NON-NLS-1$ //$NON-NLS-2$ Console.Out.WriteLine("=" + o3 + "," + o4); //$NON-NLS-1$ //$NON-NLS-2$ Console.Out.WriteLine("=" + o5); //$NON-NLS-1$ } catch (Exception e) { if (Trace.error) { Console.Error.Write(e.StackTrace); Console.Error.Flush(); } } }
private string processExpr(string expr) { IASTBuilder builder = new ASTBuilder(true); ValueExp exp = builder.parse(new java.io.StringReader(expr)); var ctx = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session, PluginMain.debugManager.FlashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is Variable) { return(ctx.FormatValue(((Variable)obj).getValue())); } if (obj is Value) { return(ctx.FormatValue((Value)obj)); } return(obj.toString()); }
private DataNode GetExpressionNode(string item) { DataNode node; try { if (!PluginMain.debugManager.FlashInterface.isDebuggerStarted || !PluginMain.debugManager.FlashInterface.isDebuggerSuspended) { return(new ErrorNode(item, new Exception(""))); } IASTBuilder builder = new ASTBuilder(false); ValueExp exp = builder.parse(new java.io.StringReader(item)); var ctx = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session, PluginMain.debugManager.FlashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is Variable) { node = new VariableNode((Variable)obj) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; } else if (obj is Value) { node = new ValueNode(item, (Value)obj) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; } else { node = new ScalarNode(item, obj.toString()); } node.Tag = item; } catch (Exception ex) { node = new ErrorNode(item, ex); } node.Text = item; return(node); }
public void UpdateElements() { treeControl.Tree.BeginUpdate(); treeControl.Nodes.Clear(); foreach (String item in watches) { DataNode node = new DataNode(item); // todo, introduce new Node types. try { IASTBuilder builder = new ASTBuilder(false); ValueExp exp = builder.parse(new java.io.StringReader(item)); var ctx = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session, PluginMain.debugManager.FlashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); node = new DataNode((Variable)obj); } catch { } node.Text = item; treeControl.AddNode(node); } treeControl.Tree.EndUpdate(); treeControl.Enabled = true; }
public void UpdateElements() { treeControl.Tree.BeginUpdate(); treeControl.Nodes.Clear(); foreach (String item in watches) { DataNode node = new DataNode(item); // todo, introduce new Node types. try { ASTBuilder builder = new ASTBuilder(true); ValueExp exp = builder.parse(new System.IO.StringReader(item)); ExpressionContext context = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session); context.Depth = PluginMain.debugManager.CurrentFrame; Object obj = exp.evaluate(context); node = new DataNode((Variable)obj); } catch { } node.Text = item; treeControl.AddNode(node); } treeControl.Tree.EndUpdate(); treeControl.Enabled = true; }
public void ListChildItems(ValueNode node) { if (node != null && node.Nodes.Count == 0 && node.PlayerValue != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; List <VariableNode> nodes = new List <VariableNode>(); List <VariableNode> inherited = new List <VariableNode>(); List <VariableNode> statics = new List <VariableNode>(); int tmpLimit = node.ChildrenShowLimit; foreach (Variable member in node.PlayerValue.getMembers(flashInterface.Session)) { VariableNode memberNode = new VariableNode(member) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; if (member.isAttributeSet(VariableAttribute_.IS_STATIC)) { statics.Add(memberNode); } else if (member.getLevel() > 0) { inherited.Add(memberNode); } else { nodes.Add(memberNode); } } // inherited vars if (inherited.Count > 0) { if (PluginMain.settingObject.CombineInherited) { // list inherited alongside main class members foreach (DataNode item in inherited) { node.Nodes.Add(item); } } else { // list inherited in a [inherited] group ValueNode inheritedNode = new ValueNode("[inherited]"); inherited.Sort(); foreach (DataNode item in inherited) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } } // static vars if (!PluginMain.settingObject.HideStaticMembers && statics.Count > 0) { DataNode staticNode = new ValueNode("[static]"); statics.Sort(); foreach (DataNode item in statics) { staticNode.Nodes.Add(item); } node.Nodes.Add(staticNode); } // test children foreach (String ch in node.PlayerValue.getClassHierarchy(false)) { if (ch.Equals("flash.display::DisplayObjectContainer")) { double numChildren = ((java.lang.Double)node.PlayerValue.getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); DataNode childrenNode = new ValueNode("[children]"); for (int i = 0; i < numChildren; i++) { try { IASTBuilder b = new ASTBuilder(false); string cmd = node.GetVariablePath() + ".getChildAt(" + i + ")"; ValueExp exp = b.parse(new java.io.StringReader(cmd)); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is flash.tools.debugger.concrete.DValue) { obj = new flash.tools.debugger.concrete.DVariable("getChildAt(" + i + ")", (flash.tools.debugger.concrete.DValue)obj, ((flash.tools.debugger.concrete.DValue)obj).getIsolateId()); } DataNode childNode = new VariableNode((Variable)obj) { HideClassId = PluginMain.settingObject.HideClassIds, HideFullClasspath = PluginMain.settingObject.HideFullClasspaths }; childNode.Text = "child_" + i; childrenNode.Nodes.Add(childNode); } catch (Exception) { } } node.Nodes.Add(childrenNode); } else if (ch.Equals("flash.events::EventDispatcher")) { Variable list = node.PlayerValue.getMemberNamed(flashInterface.Session, "listeners"); var omg = list.getName(); /* * double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); * DataNode childrenNode = new DataNode("[children]"); * for (int i = 0; i < numChildren; i++) * { * try * { * * IASTBuilder b = new ASTBuilder(false); * string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; * ValueExp exp = b.parse(new java.io.StringReader(cmd)); * var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); * var obj = exp.evaluate(ctx); * if (obj is flash.tools.debugger.concrete.DValue) obj = new flash.tools.debugger.concrete.DVariable("child_" + i, (flash.tools.debugger.concrete.DValue)obj); * DataNode childNode = new DataNode((Variable)obj); * childrenNode.Nodes.Add(childNode); * } * catch (Exception) { } * } * node.Nodes.Add(childrenNode); */ } } //test children nodes.Sort(); // add child items _tree.BeginUpdate(); foreach (DataNode item in nodes) { if (0 == tmpLimit--) { break; } node.Nodes.Add(item); } if (tmpLimit == -1) { DataNode moreNode = new ContinuedDataNode(); node.Nodes.Add(moreNode); } _tree.EndUpdate(); } }
void TreeExpanding(Object sender, TreeViewAdvEventArgs e) { if (e.Node.Index >= 0) { DataNode node = e.Node.Tag as DataNode; if (node.Nodes.Count == 0 && node.Variable != null) { FlashInterface flashInterface = PluginMain.debugManager.FlashInterface; List <DataNode> nodes = new List <DataNode>(); List <DataNode> inherited = new List <DataNode>(); List <DataNode> statics = new List <DataNode>(); int tmpLimit = node.ChildrenShowLimit; foreach (Variable member in node.Variable.getValue().getMembers(flashInterface.Session)) { DataNode memberNode = new DataNode(member); if (member.isAttributeSet(VariableAttribute_.IS_STATIC)) { statics.Add(memberNode); } else if (member.getLevel() > 0) { inherited.Add(memberNode); } else { nodes.Add(memberNode); } } if (inherited.Count > 0) { DataNode inheritedNode = new DataNode("[inherited]"); inherited.Sort(); foreach (DataNode item in inherited) { inheritedNode.Nodes.Add(item); } node.Nodes.Add(inheritedNode); } if (statics.Count > 0) { DataNode staticNode = new DataNode("[static]"); statics.Sort(); foreach (DataNode item in statics) { staticNode.Nodes.Add(item); } node.Nodes.Add(staticNode); } //test children foreach (String ch in node.Variable.getValue().getClassHierarchy(false)) { if (ch.Equals("flash.display::DisplayObjectContainer")) { double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); DataNode childrenNode = new DataNode("[children]"); for (int i = 0; i < numChildren; i++) { try { IASTBuilder b = new ASTBuilder(false); string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; ValueExp exp = b.parse(new java.io.StringReader(cmd)); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj is flash.tools.debugger.concrete.DValue) { obj = new flash.tools.debugger.concrete.DVariable("getChildAt(" + i + ")", (flash.tools.debugger.concrete.DValue)obj); } DataNode childNode = new DataNode((Variable)obj); childNode.Text = "child_" + i; childrenNode.Nodes.Add(childNode); } catch (Exception) { } } node.Nodes.Add(childrenNode); } else if (ch.Equals("flash.events::EventDispatcher")) { Variable list = node.Variable.getValue().getMemberNamed(flashInterface.Session, "listeners"); var omg = list.getName(); /* * double numChildren = ((java.lang.Double)node.Variable.getValue().getMemberNamed(flashInterface.Session, "numChildren").getValue().getValueAsObject()).doubleValue(); * DataNode childrenNode = new DataNode("[children]"); * for (int i = 0; i < numChildren; i++) * { * try * { * * IASTBuilder b = new ASTBuilder(false); * string cmd = GetVariablePath(node) + ".getChildAt(" + i + ")"; * ValueExp exp = b.parse(new java.io.StringReader(cmd)); * var ctx = new ExpressionContext(flashInterface.Session, flashInterface.Session.getFrames()[PluginMain.debugManager.CurrentFrame]); * var obj = exp.evaluate(ctx); * if (obj is flash.tools.debugger.concrete.DValue) obj = new flash.tools.debugger.concrete.DVariable("child_" + i, (flash.tools.debugger.concrete.DValue)obj); * DataNode childNode = new DataNode((Variable)obj); * childrenNode.Nodes.Add(childNode); * } * catch (Exception) { } * } * node.Nodes.Add(childrenNode); * */ } } //test children nodes.Sort(); _tree.BeginUpdate(); foreach (DataNode item in nodes) { if (0 == tmpLimit--) { break; } node.Nodes.Add(item); } if (tmpLimit == -1) { DataNode moreNode = new DataNode("..."); node.Nodes.Add(moreNode); } _tree.EndUpdate(); } } }
public virtual Object evaluate(ValueExp e) { // evaluate away... ExpressionContext c = new ExpressionContext(this); return e.evaluate(c); }