public override void Generate(ModuleContext context) { item2Exp.Generate(context); item1Exp.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.GreaterEqual }); }
public override void Generate(ModuleContext context) { rightList.Generate(context); leftList.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.BindN, opArg = new LuaInteger(context.vm, ((LeftList2Expression)leftList).itemsList.Count) }); }
public override void Generate(ModuleContext context) { paramsExp.Generate(context); targetExp.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.Call }); }
public override void Generate(ModuleContext context) { var module = new Module(new ModuleContext(context.vm, nameExp.value, context.level + 1) { argsList = argsList }); context.vm.Add(module); moduleExp.Generate(module.context); context.Add(new ByteCode { opCode = ByteCode.OpCode.Function, opArg = new LuaModule(context.vm, module) }); nameExp.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.Bind }); }
public override void Generate(ModuleContext context) { var jumpEnd = new LuaLabel(context.vm, null, 0); context.OnBreak(jumpEnd); context.Add(new ByteCode { opCode = ByteCode.OpCode.Jump, opArg = jumpEnd }); }
public override void Generate(ModuleContext context) { foreach (var item in itemsList) { item.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.Clear }); } }
public override void Generate(ModuleContext context) { condExp.Generate(context); var elseLabel = new LabelExpression(context.NewUID(), condExp.debugInfo); var endLabel = new LabelExpression(context.NewUID(), condExp.debugInfo); var jumpElse = new LuaLabel(context.vm, elseLabel.value, elseLabel.index); context.Add(new ByteCode { opCode = ByteCode.OpCode.JumpNot, opArg = jumpElse }); module1Exp.Generate(context); var jumpEnd = new LuaLabel(context.vm, endLabel.value, endLabel.index); context.Add(new ByteCode { opCode = ByteCode.OpCode.Jump, opArg = jumpEnd }); elseLabel.Generate(context); jumpElse.index = elseLabel.index; module2Exp.Generate(context); endLabel.Generate(context); jumpEnd.index = endLabel.index; }
public override void Generate(ModuleContext context) { context.BeginLoop(); var beginLabel = new LabelExpression(context.NewUID(), condExp.debugInfo); beginLabel.Generate(context); var jumpBegin = new LuaLabel(context.vm, beginLabel.value, beginLabel.index); condExp.Generate(context); var endLabel = new LabelExpression(context.NewUID(), condExp.debugInfo); var jumpEnd = new LuaLabel(context.vm, endLabel.value, endLabel.index); context.Add(new ByteCode { opCode = ByteCode.OpCode.JumpNot, opArg = jumpEnd }); moduleExp.Generate(context); context.Add(new ByteCode { opCode = ByteCode.OpCode.Jump, opArg = jumpBegin }); endLabel.Generate(context); jumpEnd.index = endLabel.index; context.EndLoop(jumpEnd); }