public void EnterSequenceNumberField(List <Token> seqNumField) { DeleteDirective deleteDirective = (DeleteDirective)CompilerDirective; bool isFirst = true; int previous = -42; foreach (Token integerLiteralToken in seqNumField) { System.Diagnostics.Debug.Assert(integerLiteralToken.TokenType == TokenType.IntegerLiteral); int current = (int)((IntegerLiteralTokenValue)integerLiteralToken.LiteralValue).Number; if (isFirst) { previous = current; isFirst = false; } else { DeleteDirective.SequenceNumberRange range = new DeleteDirective.SequenceNumberRange(); range.From = previous; if (current < 0) { range.To = -current; isFirst = true; } else { range.To = previous; previous = current; } deleteDirective.SequenceNumberRangesList.Add(range); } } if (!isFirst && previous >= 0) { DeleteDirective.SequenceNumberRange range = new DeleteDirective.SequenceNumberRange(); range.From = previous; range.To = previous; deleteDirective.SequenceNumberRangesList.Add(range); } }
public override void EnterSequenceNumberField(CobolCompilerDirectivesParser.SequenceNumberFieldContext context) { DeleteDirective deleteDirective = (DeleteDirective)CompilerDirective; bool isFirst = true; int previous = -42; foreach (ITerminalNode node in context.IntegerLiteral()) { int current = (int)ParseTreeUtils.GetIntegerLiteral(node); if (isFirst) { previous = current; isFirst = false; } else { DeleteDirective.SequenceNumberRange range = new DeleteDirective.SequenceNumberRange(); range.From = previous; if (current < 0) { range.To = -current; isFirst = true; } else { range.To = previous; previous = current; } deleteDirective.SequenceNumberRangesList.Add(range); } } if (!isFirst && previous >= 0) { DeleteDirective.SequenceNumberRange range = new DeleteDirective.SequenceNumberRange(); range.From = previous; range.To = previous; deleteDirective.SequenceNumberRangesList.Add(range); } }