001    package edu.upenn.cis.propbank_shen;
002    
003    import java.io.*;
004    
005    /**
006       The "person" part of the inflectional information for a predicate argument
007       structure.  We mark the person as "3rd" person in the case that the 3rd
008       person marker is present morphologically (Such as "goes"). Otherwise, the
009       argument structure is marked with "NoPerson".
010    
011       @author Scott Cotton
012       @see edu.upenn.cis.propbank_shen.Inflection
013     */
014    public final class InflPerson {
015        private String srep;
016        /** use a private constructor so that only static members
017            can be referenced.  This helps us emulate an enumeration */
018        private InflPerson(String s) {srep = s;}
019    
020        /** the third person inflection */
021        public static final InflPerson Third = new InflPerson("3");
022        /** no inflection noted */
023        public static final InflPerson NoPerson = new InflPerson("-");
024    
025        /** create a string representation of the person inflectional info. */
026        public String toString() { return srep; }
027        /** 
028            return the person inflectional information from a string.
029            If the string doesn't make sense, print an error and 
030            return the default "NoPerson".
031    
032            @return an InflPerson instance
033        */
034        public static InflPerson ofString(String s) 
035        {
036            if (s.equals("3")) { return InflPerson.Third; }
037            else if (s.equals("-")) { return InflPerson.NoPerson; }
038            else {
039                System.err.println("invalid inflection.person string: " 
040                                   + s 
041                                   + ", defaulting to NoPerson");
042                return InflPerson.NoPerson;
043            }
044        }
045    }