|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectGramaticas.GramaticaAbstracta
Gramaticas.GIC
public class GIC
Clase que implementa una Gramatica Independiente del Contexto (GIC). Dicha implementacion interna se realiza en base a diferentes atributos que almacenan los no terminales, terminales, reglas, etc. de la gramatica. Estos atributos se describen pormenorizadamente mas abajo.
Field Summary | |
---|---|
protected No_terminal |
axioma
Axioma o simbolo inicial de la gramatica. |
protected java.util.LinkedHashSet |
noTerminales
Conjunto de no terminales de la gramatica. |
protected java.util.LinkedHashSet |
reglas
Conjunto de reglas o producciones de la gramatica. |
protected java.util.LinkedHashSet |
terminales
Conjunto de terminales de la gramatica. |
Constructor Summary | |
---|---|
GIC(java.lang.String s)
Las gramaticas se pueden construir a partir de una especificacion en modo texto como esta: S A B; a b c; S; S -> a A; A -> a b c A | b B; B -> b c B | $; Describiremos la sintaxis a seguir. |
Method Summary | |
---|---|
private ReglaGIC |
busca_S_Epsilon()
Comprueba si la gramatica contiene una regla S->Epsilon (i.e. genera la palabra Epsilon directamente) y devuelve dicha regla |
boolean |
check_regla(ReglaGIC r)
Comprueba si una regla/produccion es valida |
boolean |
contains_noTerminal(No_terminal n)
Comprueba si la GIC contiene o no un no terminal dado |
boolean |
contains_terminal(Terminal t)
Comprueba si la GIC contiene o no un terminal dado |
private boolean |
contiene_S_Epsilon()
Comprueba si la gramatica genera la palabra Epsilon directamente (i.e. contiene una regla S->Epsilon) |
boolean |
es_FNC()
Comprueba, desde un punto de vista estrictamente sintactico, que la gramatica esta en FNC (i.e. si todas sus reglas son de la forma A->a o A->BC), permitiendo tambien el caso S->Epsilon |
boolean |
es_regular_derecha()
Comprueba si la gramatica es o no regular por la derecha. |
boolean |
es_regular()
Comprueba si la gramatica es o no regular (por la derecha). |
No_terminal |
getAxioma()
Devuelve el axioma o simbolo inicial de la gramatica. |
java.util.LinkedHashSet |
getNoTerminales()
Devuelve el conjunto de no terminales de la gramatica. |
java.util.LinkedHashSet |
getReglas()
Devuelve el conjunto de reglas o producciones de la gramatica. |
java.util.LinkedHashSet |
getTerminales()
Devuelve el conjunto de terminales de la gramatica. |
static GIC |
loadGIC()
Carga y crea una GIC a partir de su descripcion almacenada en un fichero de texto. |
static GIC |
loadGIC(java.lang.String path)
Carga una GIC a partir de su descripcion almacenada en un fichero de texto. |
boolean |
parse_CYK3(Cadena cadena,
java.util.List lista)
Comprueba si la cadena de entrada pertenece al lenguaje generado por esta gramatica aplicando el algoritmo CYK y devuelve los arboles de analisis correspondientes. |
void |
saveGIC()
Almacena en un fichero de texto la representacion en formato string de la GIC. |
void |
saveGIC(java.lang.String path)
Almacena en un fichero de texto la representacion en formato string de la GIC |
boolean |
scan_CYK(Cadena cadena)
Comprueba si la cadena de entrada pertenece al lenguaje generado por esta gramatica aplicando el algoritmo CYK. |
AF |
toAF()
Devuelve el automata finito asociado a la gramatica regular. |
java.lang.String |
toString()
Devuelve la especificacion de la gramatica en formato string (vease GIC(String) ). |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected java.util.LinkedHashSet noTerminales
LinkedHashSet
de objetos de tipo No_terminal
.
protected java.util.LinkedHashSet terminales
LinkedHashSet
de objetos de tipo Terminal
.
protected java.util.LinkedHashSet reglas
LinkedHashSet
de objetos de tipo ReglaGIC
.
protected No_terminal axioma
No_terminal
.
Constructor Detail |
---|
public GIC(java.lang.String s) throws G_Exception
No_terminal
).Terminal.EPSILON
).Terminal.EPSILON
) al conjunto de terminales de la gramatica. Si bien
esto no es formalmente correcto, se trata de un recurso de implementacion que permite simplificar
el funcionamiento de la gramatica.no_terminal -> simbolo_1 simbolo_2 ... simbolo_n;
no_terminal -> parte_dcha_1 | parte_dcha_2 | ... | parte_dcha_n;
Terminal.EPSILON
) para denotar una parte derecha vacia.
s
- Especificacion de la gramatica en formato string.
G_Exception
Method Detail |
---|
public java.util.LinkedHashSet getNoTerminales()
public java.util.LinkedHashSet getTerminales()
public java.util.LinkedHashSet getReglas()
public No_terminal getAxioma()
public boolean contains_noTerminal(No_terminal n)
n
- No terminal a comprobar
true
/false
segun contenga o no dicho no terminalpublic boolean contains_terminal(Terminal t)
t
- Terminal a comprobar
public boolean check_regla(ReglaGIC r) throws G_Exception
r
- Regla/produccion a comprobar
G_Exception
public java.lang.String toString()
GIC(String)
).
toString
in class java.lang.Object
Object.toString()
public static GIC loadGIC(java.lang.String path) throws java.io.IOException, G_Exception
path
- path completo al archivo a procesar
java.io.IOException
AF_Exception
G_Exception
public static GIC loadGIC() throws java.io.IOException, G_Exception
java.io.IOException
AF_Exception
G_Exception
public void saveGIC(java.lang.String path) throws java.io.IOException
java.io.IOException
public void saveGIC() throws java.io.IOException
java.io.IOException
public boolean es_regular_derecha()
true/false
segun sea o no una gramatica regular por la derecha.public boolean es_regular()
true/false
segun sea o no una gramatica regular (por la derecha).es_regular_derecha()
public AF toAF() throws AF_Exception, G_Exception
null
si no es una
gramatica regular (por la derecha)
AF_Exception
G_Exception
public boolean es_FNC()
true/false
segun este o no en FNCprivate ReglaGIC busca_S_Epsilon()
null
si no la hayprivate boolean contiene_S_Epsilon()
true/false
segun genere o no Epsilon directamentepublic boolean scan_CYK(Cadena cadena) throws G_Exception
cadena
- Cadena a comprobar
true/false
segun la cadena pertenezca o no al lenguaje generado por
esta gramatica
G_Exception
- Devuelta en caso de que la gramatica no este en FNCpublic boolean parse_CYK3(Cadena cadena, java.util.List lista) throws G_Exception
cadena
- Cadena a comprobarl
- Lista donde se almacenaran las configuraciones instantaneas.
AVISO: la variable debe estar inicializada
true/false
segun la cadena pertenezca o no al lenguaje generado por
esta gramatica
G_Exception
- Devuelta en caso de que la gramatica no este en FNC o la lista sea nula o no vacia
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |