/**
* @param lexer
*/
private void parseLineInfo(Lexer lexer) throws AbsentInformationException {
if (lexer.lexemType() != Lexer.NUMBER) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_22);
}
int inputStartLine = integerValue(lexer.lexem());
int lexemType = lexer.nextLexem();
if (lexemType == Lexer.SHARP) {
if (lexer.nextLexem() != Lexer.NUMBER) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_23);
}
fCurrentLineFileId = integerValue(lexer.lexem());
lexemType = lexer.nextLexem();
}
int repeatCount;
if (lexemType == Lexer.COMMA) {
if (lexer.nextLexem() != Lexer.NUMBER) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_24);
}
repeatCount = integerValue(lexer.lexem());
lexemType = lexer.nextLexem();
} else {
repeatCount = 1;
}
if (lexemType != Lexer.COLON) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_25);
}
if (lexer.nextLexem() != Lexer.NUMBER) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_26);
}
int outputStartLine = integerValue(lexer.lexem());
lexemType = lexer.nextLexem();
int outputLineIncrement;
if (lexemType == Lexer.COMMA) {
if (lexer.nextLexem() != Lexer.NUMBER) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_27);
}
outputLineIncrement = integerValue(lexer.lexem());
lexemType = lexer.nextLexem();
} else {
outputLineIncrement = 1;
}
if (lexemType != Lexer.CR) {
throw new AbsentInformationException(
JDIMessages.SourceDebugExtensionParser_28);
}
lexer.nextLexem();
fCurrentStratum.addLineInfo(inputStartLine, fCurrentLineFileId,
repeatCount, outputStartLine, outputLineIncrement);