inpro.irmrsc.simplepcfg
Class Grammar

java.lang.Object
  extended by inpro.irmrsc.simplepcfg.Grammar

public class Grammar
extends java.lang.Object

A simple probabilistic context-free grammar.

Author:
Andreas Peldszus

Field Summary
private  java.util.Set<Symbol> mEliminable
           
private  Symbol mEnd
           
private  java.util.Map<Symbol,java.util.ArrayList<java.lang.String>> mExpandsRelation
           
private  java.util.Set<Symbol> mNonTerminals
           
private  java.util.Map<java.lang.String,Production> mProductions
           
private  Symbol mStart
           
private  java.util.Set<Symbol> mTerminals
           
 
Constructor Summary
Grammar()
           
 
Method Summary
 void addProduction(java.lang.String id, Production p)
          adds a new production to the grammar.
 void addProduction(java.lang.String id, Symbol LHS, java.util.List<Symbol> RHS, double Prob)
          builds a new production and adds it to the grammar.
 Symbol getEnd()
           
 Production getProduction(java.lang.String id)
           
 java.util.List<java.lang.String> getProductionsExpandingSymbol(Symbol sym)
           
 Symbol getStart()
           
private  boolean hasProductionWithID(java.lang.String id)
           
 void info()
           
 boolean isEliminable(Symbol sym)
           
 boolean isNonTerminalSymbol(Symbol sym)
           
 boolean isTerminalSymbol(Symbol sym)
           
 void loadXML(java.net.URL url)
          loads a grammar from a xml specification provided at the url
 void setStart(Symbol sym)
           
 void update()
          recomputes the symbols sets (terminal, nonterminal, and eliminable symbols) and the expand-relation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mTerminals

private java.util.Set<Symbol> mTerminals

mNonTerminals

private java.util.Set<Symbol> mNonTerminals

mStart

private Symbol mStart

mEnd

private Symbol mEnd

mProductions

private java.util.Map<java.lang.String,Production> mProductions

mExpandsRelation

private java.util.Map<Symbol,java.util.ArrayList<java.lang.String>> mExpandsRelation

mEliminable

private java.util.Set<Symbol> mEliminable
Constructor Detail

Grammar

public Grammar()
Method Detail

addProduction

public void addProduction(java.lang.String id,
                          Symbol LHS,
                          java.util.List<Symbol> RHS,
                          double Prob)
builds a new production and adds it to the grammar. Make sure to update() before using an altered grammar.


addProduction

public void addProduction(java.lang.String id,
                          Production p)
adds a new production to the grammar. Make sure to update() before using an altered grammar.


getStart

public Symbol getStart()

setStart

public void setStart(Symbol sym)

getEnd

public Symbol getEnd()

isTerminalSymbol

public boolean isTerminalSymbol(Symbol sym)

isNonTerminalSymbol

public boolean isNonTerminalSymbol(Symbol sym)

isEliminable

public boolean isEliminable(Symbol sym)

getProductionsExpandingSymbol

public java.util.List<java.lang.String> getProductionsExpandingSymbol(Symbol sym)
Returns:
a list of IDs of Productions expanding the specified symbol

getProduction

public Production getProduction(java.lang.String id)

update

public void update()
recomputes the symbols sets (terminal, nonterminal, and eliminable symbols) and the expand-relation. This is necessary after the grammar was altered, as e.g. by adding a new production. Using an altered but not yet updated grammar will result in unexpected behaviour.


info

public void info()

hasProductionWithID

private boolean hasProductionWithID(java.lang.String id)

loadXML

public void loadXML(java.net.URL url)
loads a grammar from a xml specification provided at the url

Parameters:
url - the specified url of the xml to load