It is hardly necessary, but here is my own little parser. It parses tab-indented files into trees of nodes. It supports lists, integers, floats, booleans, strings, tokens and explicit nulls.
The Gist contains a sample file and the parser.
I do actually use it. Dropping in this class is so much easier than adding a parser library. I know it looks a lot like YAML, but reading the YAML feature list gives me a migraine.
Using the parser I can do things like this:
FileReader fr = new FileReader(new File(filename));
Parser.Node node = new org.treeml.Parser().parse(fr);
System.out.println("Careers loaded: " + node.children.size());
for (Parser.Node child : node.children) {
String careerId = child.getValueAt("id");
String careerName = child.getValueAt("careerName");
String careerDescription = child.getValueAt("careerDescription");
Long minimumLevel = child.getValueAt("minimumLevel");
Long status = child.getValueAt("status");
Long reputation = child.getValueAt("reputation");
Long alignment = child.getValueAt("alignment");
List<Parser.Node> possessions = child.getNodes("possession");
List<Parser.Node> skills = child.getNodes("skill");
...