public static AstNode CreateConstantLoad(object constant) { AstNode ret; if (constant is char) ret = new CharNode(ModuleBuilder.SourceLocation, (char)constant); else if (constant is int) ret = new IntegerNode(ModuleBuilder.SourceLocation, (int)constant); else if (constant is double) ret = new FloatNode(ModuleBuilder.SourceLocation, (double)constant); else ret = new StringNode(ModuleBuilder.SourceLocation, constant.ToString()); return ret; }
public void Accept(StringNode node) { }
public void Accept(StringNode node) { var str = new HassiumString(node.String); if (!module.ObjectPool.ContainsKey(str.GetHashCode())) module.ObjectPool.Add(str.GetHashCode(), str); method.Emit(node.SourceLocation, InstructionType.PushObject, str.GetHashCode()); }