public EventHandlerDelcaration() { Params = new List <Parameter>(); Body = new BlockStatement(); }
public LoopStatement() { Body = new BlockStatement(); }
public FunctionDeclaration() { Params = new List <Parameter>(); Body = new BlockStatement(); }
public ForInStatement() { Body = new BlockStatement(); }
private static Sprite LoadSprite(XmlNode root) { if (root.Name != "Sprite") { return(null); } Sprite sp = new Sprite(); PropertyInfo[] pinfo = sp.GetType().GetProperties(); Dictionary <string, PropertyInfo> pMap = new Dictionary <string, PropertyInfo>(); foreach (PropertyInfo p in pinfo) { pMap.Add(p.Name, p); } foreach (XmlNode node in root.ChildNodes) { string name = node.Name; if (name == "Variables") { foreach (XmlNode eNode in node.ChildNodes) { Variable v = LoadVariable(eNode); sp.Variables.Add(v); } } else if (name == "Expressions") { foreach (XmlNode eNode in node.ChildNodes) { Expression exp = LoadExpression(eNode); sp.Expressions.Add(exp); Point pt = new Point(); if (eNode.Attributes["x"] != null && eNode.Attributes["y"] != null) { pt = new Point(double.Parse(eNode.Attributes["x"].Value), double.Parse(eNode.Attributes["y"].Value)); } sp.Positions.Add(exp, pt); } } else if (name == "BlockStatements") { foreach (XmlNode bnode in node.ChildNodes) { BlockStatement bs = LoadBlockStatement(bnode); sp.BlockStatements.Add(bs); Point pt = new Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(bs, pt); } } else if (name == "Handlers") { foreach (XmlNode bnode in node.ChildNodes) { Function func = LoadFunction(bnode); sp.Handlers.Add(func as EventHandler); Point pt = new Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(func, pt); } } else if (name == "Functions") { foreach (XmlNode bnode in node.ChildNodes) { Function func = LoadFunction(bnode); sp.Functions.Add(func); Point pt = new Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(func, pt); } } else if (name == "Positions") { } else { PropertyInfo property = pMap[name]; Type pType = property.PropertyType; if (pType.IsAssignableFrom(typeof(List <string>))) { List <string> list = new List <string>(); foreach (XmlNode snode in node.ChildNodes) { list.Add(snode.Attributes["value"].Value); } property.SetValue(sp, list); } else if (pType.IsAssignableFrom(typeof(ResourcesList))) { ResourcesList list = new ResourcesList(); foreach (XmlNode snode in node.ChildNodes) { list.Add(LoadResource(snode)); } property.SetValue(sp, list); } else { string value = node.Attributes["value"].Value; object obj = ConvertTo(value, pType); if (obj != null) { property.SetValue(sp, obj); } } } } return(sp); }
public IfStatement() { Consequent = new BlockStatement(); Alternate = new BlockStatement(); }
public static BlockStatement CloneBlockStatement(BlockStatement bs) { return(bs.Clone()); }
private static Class LoadClass(XmlNode root) { if (root.Name != "Class") { throw new FormatException("Wrong data format"); } if (root.Attributes["type"] == null) { throw new FormatException("Wrong data format"); } string type = root.Attributes["type"].Value; Type t = Type.GetType(type); Class sp = Activator.CreateInstance(t) as Class; PropertyInfo[] pinfo = sp.GetType().GetProperties(); Dictionary <string, PropertyInfo> pMap = new Dictionary <string, PropertyInfo>(); foreach (PropertyInfo p in pinfo) { pMap.Add(p.Name, p); } foreach (XmlNode node in root.ChildNodes) { string name = node.Name; if (name == "Variables") { foreach (XmlNode eNode in node.ChildNodes) { Variable v = LoadVariable(eNode); sp.Variables.Add(v); } } else if (name == "Expressions") { foreach (XmlNode eNode in node.ChildNodes) { Expression exp = LoadExpression(eNode); sp.Expressions.Add(exp); System.Windows.Point pt = new System.Windows.Point(); if (eNode.Attributes["x"] != null && eNode.Attributes["y"] != null) { pt = new System.Windows.Point(double.Parse(eNode.Attributes["x"].Value), double.Parse(eNode.Attributes["y"].Value)); } sp.Positions.Add(exp, pt); } } else if (name == "BlockStatements") { foreach (XmlNode bnode in node.ChildNodes) { BlockStatement bs = LoadBlockStatement(bnode); if (bs.Body.Count <= 0) { continue; } sp.BlockStatements.Add(bs); System.Windows.Point pt = new System.Windows.Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new System.Windows.Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(bs, pt); } } else if (name == "Handlers") { foreach (XmlNode bnode in node.ChildNodes) { Function func = LoadFunction(bnode); sp.Handlers.Add(func as ScratchNet.EventHandler); System.Windows.Point pt = new System.Windows.Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new System.Windows.Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(func, pt); } } else if (name == "Functions") { foreach (XmlNode bnode in node.ChildNodes) { Function func = LoadFunction(bnode); sp.Functions.Add(func); System.Windows.Point pt = new System.Windows.Point(); if (bnode.Attributes["x"] != null && bnode.Attributes["y"] != null) { pt = new System.Windows.Point(double.Parse(bnode.Attributes["x"].Value), double.Parse(bnode.Attributes["y"].Value)); } sp.Positions.Add(func, pt); } } else if (name == "Positions") { } else { PropertyInfo property = pMap[name]; Type pType = property.PropertyType; if (pType.IsAssignableFrom(typeof(List <string>))) { List <string> list = new List <string>(); foreach (XmlNode snode in node.ChildNodes) { list.Add(snode.Attributes["value"].Value); } property.SetValue(sp, list); } else { string value = node.Attributes["value"].Value; object obj = ConvertTo(value, pType); if (obj != null) { property.SetValue(sp, obj); } } } } return(sp); }
public WhileStatement() { Body = new BlockStatement(); }