/**
 * @(#)Grammar.java	17.03.2004
 * 
 * @author kst
 */
package commons.chartparser;
public class Word
{

String form  = "";
String sem   = "";
String cat   = "";
String lexem = "";
String kgr   = null;

/**
 * Konstruktor mit Lexikon, in dem das Wort gespeichert wird und der noch ungeparsten Zeile aus dem
 * Lexikonfile.
 */
public Word(Lex lex, String line)
{
   int MINTOKENS = 4;
   int MAXTOKENS = 5;
   String[] token = line.split(" ");
   if (token.length >= MINTOKENS && token.length <= MAXTOKENS)
   {
      this.form = Main.IGNCASE ? token[0].toLowerCase() : token[0];
      this.sem = token[1];
      this.cat = token[2];
      this.lexem = Main.IGNCASE ? token[3].toLowerCase().toLowerCase() : token[3];
      this.kgr = (token.length > 4) ? token[4] : null;
      lex.vollformen.add(token[0], this);
      lex.semanteme.add(token[1], this);
      lex.klassen.add(token[2], this);
      lex.lexeme.add(token[3], this);
   }
   else
   {
      Main.debug("Invalider Lex-Eintrag. " + token.length + " Token in {" + line + "}");
   }
}

public String getForm ()
{
   return form;
}

public String toString ()
{
   StringBuilder sb = new StringBuilder();
   sb.append(form);
   sb.append(" ");
   sb.append(sem);
   sb.append(" ");
   sb.append(cat);
   sb.append(" ");
   sb.append(lexem);
   sb.append(" ");
   sb.append(kgr);
   return sb.toString();
}

public String getSemantics ()
{
   StringBuilder sb = new StringBuilder();
   if (!sem.startsWith("-"))
   {
      sb.append(sem);
      sb.append(":");
      sb.append(lexem);
   }
   return sb.toString();
}

public String getGrammar ()
{
   StringBuilder sb = new StringBuilder();
   sb.append(lexem);
   sb.append(" ");
   sb.append(cat);
   sb.append(" ");
   sb.append(kgr);
   return sb.toString();
}
}