LeafSourceParser.java
package edu.udel.cis.vsl.tass.ast.parser;
import edu.udel.cis.vsl.tass.util.Source;
class LeafSourceParser extends LeafParser {
public LeafSourceParser(NodeTypes nodeTypes, RefMappers refMappers) {
super(nodeTypes,refMappers);
}
@Override
public NodeParserIF makeInstance() {
return new LeafSourceParser(nodeTypes, refMappers);
}
@Override
public SourceEltWrapper node() {
String region = this.attrs.getValue("","region");
String fileRef = this.attrs.getValue("","fileRef");
assert region != null;
assert fileRef != null;
String[] regionElements = region.split(",");
assert regionElements.length == 4;
int intFileRef, startColumn, startLine, endColumn, endLine;
try {
intFileRef = Integer.valueOf(fileRef);
startLine = Integer.valueOf(regionElements[0]);
startColumn = Integer.valueOf(regionElements[1]);
endLine = Integer.valueOf(regionElements[2]);
endColumn = Integer.valueOf(regionElements[3]);
} catch (NumberFormatException e) {
throw new ParserException("Malformed source attribute");
}
SourceEltWrapper retVal =
new SourceEltWrapper(startColumn,startLine,endColumn,endLine);
refMappers.addRef(retVal,intFileRef,SourceEltWrapper.FILE_FIELD);
return retVal;
}
}