# File convertdb.rb, line 214 def parseIndexLine( string, lineNumber, pos=nil ) $scanner.string = string synsets = [] lemma, pos, polycnt = nil, nil, nil raise "whole error" unless $scanner.scan( IndexEntry ) lemma, pos, polycnt, pcnt = $scanner[1], $scanner[2], $scanner[3], $scanner[4] # Discard pointer symbols pcnt.to_i.times do |i| $scanner.skip( PointerSymbol ) or raise "couldn't skip pointer #{i}" end # Parse sense and tagsense counts $scanner.scan( SenseCounts ) or raise "couldn't parse sense counts" senseCount, tagSenseCount = $scanner[1], $scanner[2] # Find synsets senseCount.to_i.times do |i| $scanner.scan( SynsetId ) or raise "couldn't parse synset #{i}" synset = $scanner[1] synsets.push( synset ) $senseIndex[ synset + "%" + pos + "%" + lemma ] = i.to_s end # Make the index entry and return it key = lemma + "%" + pos data = synsets.join(WordNet::SubDelim) return key, data rescue => err message "Index entry did not parse: %s at '%s...' (line %d)\n\t%s\n" % [ err.message, $scanner.rest[0,20], lineNumber, err.backtrace[0] ] return nil end