grammars
Class Grammar

java.lang.Object
  |
  +--grammars.Grammar
Direct Known Subclasses:
ProgrammedGrammar

public class Grammar
extends java.lang.Object

Trida reprezentujici klasickou obecnou gramatiku. Obsahuje mnoziny terminalu, neterminalu, pravidel a pocatecni neterminal.


Field Summary
static java.lang.String lambda
          Jmeno terminalu, ktery reprezentuje prazdne slovo
protected  Terminal lambdaTerm
          Prazdne slovo
protected  Nonterminal[] nonterminals
          Pole neterminalu gramatiky
protected  Production[] productions
          Pole pravidel gramatiky
protected  Nonterminal start
          Pocatecni neterminal
protected  Terminal[] terminals
          Pole terminalu gramatiky
 
Constructor Summary
Grammar()
          Konstruktor, ktery vytvori gramatiku bez pravidel, terminalu i neterminalu
Grammar(Production[] p)
          Konstruktor, ktery vytvori gramatiku bez terminalu i neterminalu.
Grammar(Production[] p, Terminal[] t, Nonterminal[] n, Nonterminal s)
          Vytvori gramatiku se vsemi prvky
 
Method Summary
 Production[] acUsableProductions(SententialForm sent, Step lastStep)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na urcenou vetnou formu.
 Nonterminal addNonterminal(java.lang.String name)
          Slouzi k pridani neterminalu do gramatiky.
 void addProduction(Production p)
          Prida jedno pravidlo do pole pravidel
 Symbol addSymbol(java.lang.String name)
          Slouzi k pridani libovolneho symbolu do gramatiky.
 Terminal addTerminal(java.lang.String name)
          Slouzi k pridani terminalu do gramatiky.
 Grammar copy()
          Vytvori kopii gramatiky.
 Nonterminal[] getNonterminals()
          Slouzi k ziskani vsech neterminalu gramatiky
 Production[] getProductions()
          Slouzi k ziskani vsech pravidel gramatiky
 Nonterminal getStart()
          Slouzi k ziskani pocatecniho neterminalu
 Terminal[] getTerminals()
          Slouzi k ziskani vsech terminalu gramatiky
private  void changeUseCount(Production p, int change)
          U kazdeho terminalniho i neterminalniho symbolu si gramatika pamatuje, kolikrat je obsazen v pravidlech.
 Production[] leftAcUsableProductions(SententialForm sent, Step lastStep)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na urcenou vetnou formu pri soucasnem uvazovani leve nebo leftmost derivace.
 Production[] leftUsableProductions(SententialForm sent, Step lastStep)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych na urcenou vetnou formu.
private  void noUsedSymbols()
          Odstrani z mnozin neterminalu a terminalu ty symboly, ktere se nevyskytuji v zadnem pravidle
 void removeProduction(int index)
          Odstrani jedno pravidlo z pole pravidel.
 void setStart(Nonterminal s)
          Nastavi pocatecni neterminal na pozadovanou hodnotu
 Production[] usableProductions(SententialForm sent, Step lastStep)
          Slouzi k ziskani pravidel gramatiky aplikovatelnych na urcenou vetnou formu.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

lambda

public static final java.lang.String lambda
Jmeno terminalu, ktery reprezentuje prazdne slovo

terminals

protected Terminal[] terminals
Pole terminalu gramatiky

nonterminals

protected Nonterminal[] nonterminals
Pole neterminalu gramatiky

productions

protected Production[] productions
Pole pravidel gramatiky

start

protected Nonterminal start
Pocatecni neterminal

lambdaTerm

protected Terminal lambdaTerm
Prazdne slovo
Constructor Detail

Grammar

public Grammar()
Konstruktor, ktery vytvori gramatiku bez pravidel, terminalu i neterminalu

Grammar

public Grammar(Production[] p)
Konstruktor, ktery vytvori gramatiku bez terminalu i neterminalu. Pravidla jsou urcena.
Parameters:
p - Pole pravidel gramatiky

Grammar

public Grammar(Production[] p,
               Terminal[] t,
               Nonterminal[] n,
               Nonterminal s)
Vytvori gramatiku se vsemi prvky
Parameters:
p - Pole pravidel gramatiky
t - Pole terminalu
n - Pole neterminalu
s - Pocatecni neterminal
Method Detail

copy

public Grammar copy()
Vytvori kopii gramatiky.
Returns:
Kopie gramatiky

addTerminal

public Terminal addTerminal(java.lang.String name)
Slouzi k pridani terminalu do gramatiky. Pokud jiz existuje terminal s danym jmenem, vrati jej. Jinak vytvori novy a vrati ho. Neterminal lambda do mnoziny symbolu nepridava.
Parameters:
name - Retezec jmena terminalu
Returns:
Terminal pozadovaneho jmena

setStart

public void setStart(Nonterminal s)
Nastavi pocatecni neterminal na pozadovanou hodnotu
Parameters:
s - Novy pocatecni neterminal

getStart

public Nonterminal getStart()
Slouzi k ziskani pocatecniho neterminalu
Returns:
Pocatecni neterminal

addNonterminal

public Nonterminal addNonterminal(java.lang.String name)
Slouzi k pridani neterminalu do gramatiky. Pokud jiz existuje neterminal s danym jmenem, vrati jej. Jinak vytvori novy a vrati ho.
Parameters:
name - Retezec jmena neterminalu
Returns:
Neterminal pozadovaneho jmena

addSymbol

public Symbol addSymbol(java.lang.String name)
Slouzi k pridani libovolneho symbolu do gramatiky. Je-li prvni znak jmena velke pismeno je pridan jako neterminal, je-li prvni male tak jako terminal.
Parameters:
name - Jmeno symbolu
Returns:
Pridany symbol. Pokud prvni znak neni pismeno, vraci null

addProduction

public void addProduction(Production p)
Prida jedno pravidlo do pole pravidel
Parameters:
p - Pridavane pravidlo

removeProduction

public void removeProduction(int index)
Odstrani jedno pravidlo z pole pravidel.
Parameters:
index - Poradi pravidla v poli pravidel. Odpovida poradi, v jakem byla pravidla pridavana. Pocita se od 0.

changeUseCount

private void changeUseCount(Production p,
                            int change)
U kazdeho terminalniho i neterminalniho symbolu si gramatika pamatuje, kolikrat je obsazen v pravidlech. Pri odstraneni pravidla s poslednim vyskytem symbolu je tento symbol odstranen z mnoziny terminalu nebo neterminalu. Tato funkce zmeni vsem symbolum v pravidle pocet vyskytu prictenim pozadovane hodnoty.
Parameters:
p - Pravidlo, jehoz symbolum se meni pocet vyskytu
change - Hodnota prictena k poctu vyskytu

noUsedSymbols

private void noUsedSymbols()
Odstrani z mnozin neterminalu a terminalu ty symboly, ktere se nevyskytuji v zadnem pravidle

getProductions

public Production[] getProductions()
Slouzi k ziskani vsech pravidel gramatiky
Returns:
Pole pravidel gramatiky

getTerminals

public Terminal[] getTerminals()
Slouzi k ziskani vsech terminalu gramatiky
Returns:
Pole terminalu gramatiky

getNonterminals

public Nonterminal[] getNonterminals()
Slouzi k ziskani vsech neterminalu gramatiky
Returns:
Pole neterminalu gramatiky

usableProductions

public Production[] usableProductions(SententialForm sent,
                                      Step lastStep)
Slouzi k ziskani pravidel gramatiky aplikovatelnych na urcenou vetnou formu. Pro pripadne podtridy, ktere by mohly pro urceni aplikovatelnych pravidel potrebovat znat pravidlo pouzite v minulem kroku derivace, je predchozi krok parametrem funkce.
Parameters:
sent - Vetna forma, na kterou se maji pravidla aplikovat
lastStep - Predchozi krok derivace
Returns:
Aplikovatelna pravidla

leftUsableProductions

public Production[] leftUsableProductions(SententialForm sent,
                                          Step lastStep)
Slouzi k ziskani pravidel gramatiky aplikovatelnych na urcenou vetnou formu. Pri vyberu je vybrano pravidlo nebo pravidla, jejichz leva strana je ve vetne forme nejvice vlevo. Pro pripadne podtridy, ktere by mohly pro urceni aplikovatelnych pravidel potrebovat znat pravidlo pouzite v minulem kroku derivace, je predchozi krok parametrem funkce.
Parameters:
sent - Vetna forma, na kterou se maji pravidla aplikovat
lastStep - Predchozi krok derivace
Returns:
Aplikovatelna pravidla

acUsableProductions

public Production[] acUsableProductions(SententialForm sent,
                                        Step lastStep)
Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na urcenou vetnou formu. Pro pripadne podtridy, ktere by mohly pro urceni aplikovatelnych pravidel potrebovat znat pravidlo pouzite v minulem kroku derivace, je predchozi krok parametrem funkce.
Parameters:
sent - Vetna forma, na kterou se maji pravidla aplikovat
lastStep - Predchozi krok derivace
Returns:
Aplikovatelna pravidla

leftAcUsableProductions

public Production[] leftAcUsableProductions(SententialForm sent,
                                            Step lastStep)
Slouzi k ziskani pravidel gramatiky aplikovatelnych ve smyslu testovani vyskytu na urcenou vetnou formu pri soucasnem uvazovani leve nebo leftmost derivace. Pro pripadne podtridy, ktere by mohly pro urceni aplikovatelnych pravidel potrebovat znat pravidlo pouzite v minulem kroku derivace, je predchozi krok parametrem funkce.
Parameters:
sent - Vetna forma, na kterou se maji pravidla aplikovat
lastStep - Predchozi krok derivace
Returns:
Aplikovatelna pravidla