public override void Emit( ) { if (OpToken.Kind == TokenKindSymbol.ADD) { RightExp.Emit(); } else { if (ZTypeUtil.IsFloat(RetType))//(RetType.SharpType == typeof(float)) { IL.Emit(OpCodes.Ldc_R4, 0.0); } else if (ZTypeUtil.IsInt(RetType))//if (RetType.SharpType == typeof(int)) { EmitHelper.LoadInt(IL, 0); } RightExp.Emit(); IL.Emit(OpCodes.Sub); } base.EmitConv(); }
public override Stmt Analy() { //TimesExp.IsTopExp = true; TimesExp = AnalyRepeateExpRaw(Raw.TimesExp);// ParseAnalyRawExp(Raw.TimesExp); if (TimesExp == null) { Errorf(Raw.RepeatToken.Position, "重复语句没有表达式"); } else { TimesExp = TimesExp.Analy(); if (TimesExp != null && TimesExp.AnalyCorrect) { if (!ZTypeUtil.IsInt(TimesExp.RetType)) { Errorf(TimesExp.Position, "结果不是整数"); } } } CreateEachSymbols(); //RepeatBody.ProcContext = this.ProcContext; RepeatBody.Analy(); return(this); }