public static SourceToken LoadToken(BinaryReader reader, CSWCSerizlizer serizlizer, IDictionary <int, object> serizlized, int key) { int line = reader.ReadInt32(); int ptr = reader.ReadInt32(); string srcfile; var tag = serizlizer.ReadTag(reader); if (tag == CSWCSerizlizer.TagType.NULLINSTANCE) { srcfile = null; } else if (tag == CSWCSerizlizer.TagType.INSTANCEATCACHE) { int idx = reader.ReadInt32(); srcfile = serizlizer.stringpool[idx]; } else if (tag == CSWCSerizlizer.TagType.WRITEINSTANCEANDCACHEIT) { int idx = reader.ReadInt32(); srcfile = reader.ReadString(); serizlizer.stringpool.Add(idx, srcfile); } else { throw new IOException("文件错误"); } SourceToken token = new SourceToken(line, ptr, srcfile); serizlized.Add(key, token); return(token); }
public InternalError(CSWC swc, ASBinCode.SourceToken token, ASBinCode.RunTimeValueBase errorValue) : this(swc) { this.token = token; this.errorValue = errorValue; if (errorValue != null) { this.message = getErrorInfo(); //errorValue.ToString(); } }
public virtual void execute2(RunTimeValueBase thisObj, rtti.FunctionDefine functionDefine, SLOT[] argements, SLOT returnSlot, SourceToken token, object stackframe, out bool success) { throw new NotImplementedException(); }
public static ThisPointer LoadThisPointer(BinaryReader reader, CSWCSerizlizer serizlizer, IDictionary <int, object> serizlized, int key) { RunTimeDataType type = reader.ReadInt32(); SourceToken token = serizlizer.DeserializeObject <SourceToken>(reader, SourceToken.LoadToken); ThisPointer pointer = new ThisPointer(null, token); serizlized.Add(key, pointer); pointer.valueType = type; return(pointer); }
public ThisPointer(IScope scope, SourceToken token) { this.token = token; scopes.FunctionScope funcscope = scope as scopes.FunctionScope; if (funcscope != null) { if (!funcscope.function.IsAnonymous && funcscope.parentScope is scopes.ObjectInstanceScope) { //refblockid = ((scopes.ObjectInstanceScope)funcscope.parentScope)._class.blockid; valueType = ((scopes.ObjectInstanceScope)scope.parentScope)._class.getRtType(); } else if (!funcscope.function.IsAnonymous && funcscope.parentScope is scopes.FunctionScope) { var tempscope = funcscope.parentScope; while (tempscope is scopes.FunctionScope) { if (((scopes.FunctionScope)tempscope).function.IsAnonymous) { break; } tempscope = tempscope.parentScope; } if (tempscope is scopes.ObjectInstanceScope) { valueType = ((scopes.ObjectInstanceScope)tempscope)._class.getRtType(); } else { valueType = RunTimeDataType.rt_void; } } else if (funcscope.parentScope is scopes.OutPackageMemberScope) { //refblockid = ((scopes.OutPackageMemberScope)funcscope.parentScope).mainclass.outscopeblockid; valueType = RunTimeDataType.rt_void; } else { //refblockid = -1;//动态绑定 valueType = RunTimeDataType.rt_void; } } else { //refblockid = ((scopes.OutPackageMemberScope)scope).mainclass.outscopeblockid; valueType = RunTimeDataType.rt_void; } }
public virtual void executeAsync(RunTimeValueBase thisObj,SLOT[] argements,SLOT resultSlot, object callbacker,object stackframe, SourceToken token,RunTimeScope scope) { }
public InternalError(CSWC swc, ASBinCode.SourceToken token, string message, ASBinCode.RunTimeValueBase errorValue) : this(swc) { this.token = token; this.message = message; this.errorValue = errorValue; }
public InternalError(CSWC swc, ASBinCode.SourceToken token, string message) : this(swc) { this.token = token; this.message = message; this.errorValue = null; }
public static OpStep Deserialize(BinaryReader reader, CSWCSerizlizer serizlizer, IDictionary <int, object> serizlized, int key) { //public OpCode opCode; OpCode opCode = (OpCode)reader.ReadByte(); // public SourceToken token; SourceToken token = serizlizer.DeserializeObject <SourceToken>(reader, SourceToken.LoadToken); OpStep step = new OpStep(opCode, token); serizlized.Add(key, step); ///// <summary> ///// 行标 ///// </summary> //public string flag; if (reader.ReadBoolean()) { step.flag = reader.ReadString(); } ///// <summary> ///// 跳转偏移量 ///// </summary> //public int jumoffset; step.jumoffset = reader.ReadInt32(); ///// <summary> ///// 所属标签 ///// </summary> //public Stack<string> labels; if (reader.ReadBoolean()) { step.labels = new Stack <string>(); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { step.labels.Push(reader.ReadString()); } } //string[] lbls = labels.ToArray(); //writer.Write(lbls.Length); //for (int i = 0; i < lbls.Length; i++) //{ // writer.Write(lbls[i]); //} ///// <summary> ///// 当前行在哪个try块里 ///// -1表示不在任何try块里 ///// </summary> //public int tryid; step.tryid = reader.ReadInt32(); ///// <summary> ///// 当前块所属try类型 ///// 0 try 1 catch 2 finally ///// </summary> //public int trytype; step.trytype = reader.ReadInt32(); //public LeftValueBase reg; step.reg = (LeftValueBase)serizlizer.DeserializeObject <ISWCSerializable>(reader, ISWCSerializableLoader.LoadIMember); //public RightValueBase arg1; step.arg1 = (RightValueBase)serizlizer.DeserializeObject <ISWCSerializable>(reader, ISWCSerializableLoader.LoadIMember); //public RightValueBase arg2; step.arg2 = (RightValueBase)serizlizer.DeserializeObject <ISWCSerializable>(reader, ISWCSerializableLoader.LoadIMember); ///// <summary> ///// 输出结果类型 ///// </summary> //public RunTimeDataType regType; step.regType = reader.ReadInt32(); ///// <summary> ///// 输入参数1类型 ///// </summary> //public RunTimeDataType arg1Type; step.arg1Type = reader.ReadInt32(); ///// <summary> ///// 输入参数2类型 ///// </summary> //public RunTimeDataType arg2Type; step.arg2Type = reader.ReadInt32(); step.memregid1 = reader.ReadInt16(); step.memregid2 = reader.ReadInt16(); step.memregid3 = reader.ReadInt16(); step.constnumber1 = reader.ReadDouble(); step.constnumber2 = reader.ReadDouble(); return(step); }
public OpStep(OpCode op, SourceToken token) { this.opCode = op; this.token = token; }