/// <summary> /// Creates a new IOInstruction. /// </summary> public override Node ExitIo(Production node) { ArrayList values = GetChildValues(node); IOInstruction i = new IOInstruction(); switch (node[0].Id) { case (int)PicoConstants.IN: i.Type = IOTypes.In; break; case (int)PicoConstants.OUT: i.Type = IOTypes.Out; break; } i.Address = Assembler.NextInstructionAddress; i.Argument1 = (Argument)values[0]; if (values.Count == 2) { i.Argument2 = (Argument)values[1]; } i.Line = node.StartLine; i.Column = node.StartColumn; i.Assembler = Assembler; Assembler.Instructions.Add(i); return(node); }
/// <summary> /// Creates a new IOInstruction. /// </summary> public override Node ExitIo(Production node) { ArrayList values = GetChildValues(node); IOInstruction i = new IOInstruction(); switch (node[0].Id) { case (int)PicoConstants.IN: i.Type = IOTypes.In; break; case (int)PicoConstants.OUT: i.Type = IOTypes.Out; break; } i.Address = Assembler.NextInstructionAddress; i.Argument1 = (Argument)values[0]; if (values.Count == 2) i.Argument2 = (Argument)values[1]; i.Line = node.StartLine; i.Column = node.StartColumn; i.Assembler = Assembler; Assembler.Instructions.Add(i); return node; }