001 package edu.upenn.cis.propbank_shen;
002
003 import java.io.*;
004
005 /**
006 This represents the overall "form" of the inflection. We note
007 whether each instance is an Infinitive, a gerund, a participle,
008 or in regular (finite, full) form.
009
010 <p>
011 Sometimes, no form is specified because this annotation isn't
012 very complete, so we have NoForm as well.
013
014 @author Scott Cotton
015 @see edu.upenn.cis.propbank_shen.Inflection
016 */
017 public final class InflForm {
018
019 private String srep;
020
021 /** use a private constructor so that only static members
022 can be referenced. This helps us emulate an enumeration */
023 private InflForm(String s) {srep = s;}
024
025 public static final InflForm Infinitive = new InflForm("i");
026 public static final InflForm Gerund = new InflForm("g");
027 public static final InflForm Participle = new InflForm("p");
028 public static final InflForm Full = new InflForm("v");
029 public static final InflForm NoForm = new InflForm("-");
030
031 public String toString() { return srep; }
032
033 /**
034 return the "form" inflectional information from a string.
035 If the string doesn't make sense, print an error and
036 return the default "NoForm".
037
038 @return an InflForm instance
039 */
040 public static InflForm ofString(String s)
041 {
042 if (s.equals("i")) { return InflForm.Infinitive; }
043 else if (s.equals("g")) { return InflForm.Gerund; }
044 else if (s.equals("p")) { return InflForm.Participle; }
045 else if (s.equals("v")) { return InflForm.Full; }
046 else if (s.equals("-")) { return InflForm.NoForm; }
047 else {
048 System.err.println("invalid string for inflection.form: "
049 + s
050 + ", defaulting to NoForm");
051 return InflForm.NoForm;
052 }
053 }
054 }