grammars
Class Derivation

java.lang.Object
  |
  +--grammars.Derivation

public class Derivation
extends java.lang.Object

Trida slouzici k reprezentaci derivace. Pamatuje si aktualni vetnou formu a gramatiku. Umoznuje navrat v derivaci zpet. Derivace neni vazana na konkretni typ gramatiky zdedene ze tridy Grammar.


Field Summary
protected  SententialForm form
          Aktualni vetna forma
protected  Grammar grammar
          Gramatika pouzita pro derivaci
protected  Step[] steps
          Kroky derivace
 
Constructor Summary
Derivation(Grammar g)
          Konstruktor tridy se specifikaci pouzite gramatiky.
 
Method Summary
 Production[] acUsableProductions(boolean left)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na aktualni vetnou formu.
 void applyAcProduction(Production p)
          Aplikuje pravidlo ve smyslu testovani vyskytu.
 void applyProduction(Production p)
          Aplikuje pravidlo na prvni vyskyt leve strany ve vetne forme.
 void applyProduction(Production p, int index)
          Aplikuje pravidlo na urceny vyskyt leve strany ve vetne forme.
 void backOneStep()
          Navrat v derivaci o jeden krok zpet.
 void backToStep(int index)
          Navrat v derivaci k pozadovanemu kroku.
 SententialForm getForm()
          Slouzi k ziskani aktualni vetne formy
 boolean isTerminalWord()
          Slouzi ke zjisteni, jestli jiz bylo vygenerovano terminalni slovo.
 int stepsCount()
          Slouzi ke zjisteni, kolik kroku derivace jiz probehlo
 java.lang.String[] stepsToList()
          Vytvori pole retezcu.
 Production[] usableProductions(boolean left)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych na aktualni vetnou formu.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

grammar

protected Grammar grammar
Gramatika pouzita pro derivaci

form

protected SententialForm form
Aktualni vetna forma

steps

protected Step[] steps
Kroky derivace
Constructor Detail

Derivation

public Derivation(Grammar g)
Konstruktor tridy se specifikaci pouzite gramatiky. Vetna forma bude tvorena pocatecnim neterminalem gramatiky.
Parameters:
g - Gramatika pouzivana k derivaci
Method Detail

backOneStep

public void backOneStep()
Navrat v derivaci o jeden krok zpet. Tento krok je zapomenut.

backToStep

public void backToStep(int index)
                throws java.lang.IndexOutOfBoundsException
Navrat v derivaci k pozadovanemu kroku. Vsechny kroky, pred ktere se derivace vrati, jsou zapomenuty.
Parameters:
index - Poradi kroku, do ktereho ma derivace zustat
Throws:
java.lang.IndexOutOfBoundsException - Pokud je index mimo existujici pocet kroku

getForm

public SententialForm getForm()
Slouzi k ziskani aktualni vetne formy
Returns:
Aktualni vetna forma

usableProductions

public Production[] usableProductions(boolean left)
Slouzi k ziskani pravidel gramatiky aplikovatelnych na aktualni vetnou formu.
Parameters:
left - Pokud je nastaveno na true, pouziva leftmost nebo levou derivaci podle definice konkretni gramatiky
Returns:
Pole aplikovatelnych pravidel

acUsableProductions

public Production[] acUsableProductions(boolean left)
Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na aktualni vetnou formu.
Parameters:
left - Pokud je nastaveno na true, pouziva leftmost nebo levou derivaci podle definice konkretni gramatiky
Returns:
Pole pravidel aplikovatelnych ve smyslu testovani vyskytu

stepsToList

public java.lang.String[] stepsToList()
Vytvori pole retezcu. V kazdem retezci je jeden krok ve tvaru:
vetna forma => pravidlo
 nebo
 
vetna forma => ac pravidlo
 Retezec popisujici pravidlo je generovan objektem typu Production a muze se
 lisit podle konkretni podtridy.
Returns:
Pole retezcu urcene pro seznam kroku derivace

applyProduction

public void applyProduction(Production p)
                     throws java.lang.IndexOutOfBoundsException
Aplikuje pravidlo na prvni vyskyt leve strany ve vetne forme.
Parameters:
p - Aplikovane pravidlo

applyAcProduction

public void applyAcProduction(Production p)
                       throws java.lang.IndexOutOfBoundsException
Aplikuje pravidlo ve smyslu testovani vyskytu. Vetna forma se nezmeni a pribude dalsi krok derivace.
Parameters:
p - Aplikovane pravidlo

applyProduction

public void applyProduction(Production p,
                            int index)
                     throws java.lang.IndexOutOfBoundsException
Aplikuje pravidlo na urceny vyskyt leve strany ve vetne forme.
Parameters:
p - Aplikovane pravidlo
index - Vyskyt leve strany, na ktery se ma pravidlo pouzit. Pocita se od 1.

isTerminalWord

public boolean isTerminalWord()
Slouzi ke zjisteni, jestli jiz bylo vygenerovano terminalni slovo.
Returns:
Vraci true, pokud se ve vetne forme nevyskytuji neterminaly. Jinak vraci false.

stepsCount

public int stepsCount()
Slouzi ke zjisteni, kolik kroku derivace jiz probehlo
Returns:
Pocet kroku derivace