Gramaticas con JFLAP

00:25:22
https://www.youtube.com/watch?v=ERNujFELkCA

Résumé

TLDREl vídeo enseña a utilizar JFLAP, una herramienta para aprender sobre gramáticas y autómatas. Se muestra cómo instalar Java y JFLAP, y se presentan ejemplos de creación de gramáticas simples. Se explica cómo generar cadenas y verificar su aceptación mediante árboles de derivación. Además, se discuten conceptos de gramáticas regulares y libres de contexto, y se realizan ejercicios prácticos para entender mejor su funcionamiento.

A retenir

  • 📚 JFLAP é unha ferramenta educativa para aprender gramáticas.
  • 💻 É necesario instalar Java para usar JFLAP.
  • 📝 As gramáticas deben comezar cunha variable inicial.
  • 🔍 O árbol de derivación axuda a verificar cadeas aceptadas.
  • ✅ JFLAP permite crear gramáticas regulares e libres de contexto.
  • 📂 As gramáticas pódense gardar para uso futuro.
  • 🔄 A recursión é clave na creación de gramáticas complexas.
  • 🔧 JFLAP ofrece múltiples opcións para analizar cadeas.
  • 📊 A verificación de cadeas pódese realizar de forma manual ou automática.
  • 🔗 A instalación de JFLAP é sinxela, pero require un formulario na páxina oficial.

Chronologie

  • 00:00:00 - 00:05:00

    Neste vídeo, traballamos co JF Lab, unha ferramenta didáctica para aprender gramáticas automáticas e elementos de análise de linguaxes. O JF Lab baséase en Java, polo que é necesario instalar Java antes de usalo. O vídeo mostra o proceso de instalación de Java e a configuración das variables de entorno para que o JF Lab funcione correctamente.

  • 00:05:00 - 00:10:00

    Unha vez instalado Java, abrimos o JF Lab e comezamos a crear gramáticas simples. O primeiro exemplo consiste en crear unha gramática que xere as cadeas 'abc', 'abde' e 'ave'. A gramática comeza cunha variable inicial 'S' e utiliza regras para xerar as cadeas desexadas, mostrando como se pode verificar o funcionamento da gramática a través de árbore de derivación.

  • 00:10:00 - 00:15:00

    O vídeo continúa explicando como verificar diferentes cadeas utilizando o JF Lab. A ferramenta permite realizar un paseo controlado para comprobar se as cadeas son aceptadas ou rexeitadas. O usuario introduce cadeas e o JF Lab indica se son válidas segundo a gramática definida. O exemplo inclúe a verificación de cadeas como 'abc', 'abde' e 'ave'.

  • 00:15:00 - 00:20:00

    A continuación, o vídeo presenta un novo exercicio para crear unha gramática que xere cadeas que comezan e terminan con 'a' e que contén 'b' no medio. A gramática é construída paso a paso, explicando como se representa a recursión e como se finaliza a cadea. O resultado é unha gramática que acepta cadeas con a estrutura desexada, e o vídeo mostra como verificar as cadeas utilizando o JF Lab.

  • 00:20:00 - 00:25:22

    Finalmente, o vídeo analiza outra gramática que xera cadeas compostas por 'a', 'b' e 'c', e como estas cadeas deben ter a mesma cantidade de 'a' e 'b'. O JF Lab permite comprobar se as cadeas son aceptadas ou rexeitadas, e o vídeo conclúe explicando que a gramática é libre de contexto e sen restricións, destacando a importancia do JF Lab para aprender sobre gramáticas automáticas.

Afficher plus

Carte mentale

Vidéo Q&R

  • ¿Qué es JFLAP?

    JFLAP es una herramienta didáctica para aprender sobre gramáticas, autómatas y análisis de lenguajes.

  • ¿Cómo se instala JFLAP?

    Se debe descargar desde la página oficial y tener Java instalado en el sistema.

  • ¿Qué tipo de gramáticas se pueden crear en JFLAP?

    Se pueden crear gramáticas regulares y libres de contexto.

  • ¿Cómo se verifica una cadena en JFLAP?

    Se puede utilizar el árbol de derivación para analizar y verificar si una cadena es aceptada.

  • ¿Qué es una gramática libre de contexto?

    Es una gramática donde las producciones tienen una variable en el lado izquierdo y pueden generar cadenas de forma recursiva.

  • ¿Qué es una gramática regular?

    Es una gramática donde las producciones son lineales y no contienen recursión.

  • ¿Qué se necesita para usar JFLAP?

    Es necesario tener Java instalado en el sistema.

  • ¿Cómo se guardan las gramáticas en JFLAP?

    Se pueden guardar las gramáticas a través de la opción 'File' y luego 'Save'.

  • ¿Qué tipo de ejercicios se pueden hacer en JFLAP?

    Se pueden realizar ejercicios para crear y analizar gramáticas, así como verificar cadenas.

  • ¿Qué es un árbol de derivación?

    Es una representación gráfica que muestra cómo se generan las cadenas a partir de las reglas de producción.

Voir plus de résumés vidéo

Accédez instantanément à des résumés vidéo gratuits sur YouTube grâce à l'IA !
Sous-titres
es
Défilement automatique:
  • 00:00:00
    bien en este vídeo vamos a trabajar con
  • 00:00:03
    el jf lab una herramienta didáctica muy
  • 00:00:07
    útil para aprender
  • 00:00:09
    gramáticas autómatas y otros elementos
  • 00:00:12
    que se utilizan en el análisis de
  • 00:00:14
    lenguajes y en el aprendizaje de
  • 00:00:16
    computadores y traductores
  • 00:00:19
    el hot efe lav está acá
  • 00:00:23
    se lo pueden descargar también de la
  • 00:00:25
    página oficial
  • 00:00:33
    la página oficial es
  • 00:00:45
    y desde acá se pueden descargar también
  • 00:00:48
    el jd pero tienen que llenar un pequeño
  • 00:00:52
    formulario con algunas preguntas para
  • 00:00:55
    que les dé el enlace de lujo está de
  • 00:00:57
    felap
  • 00:00:58
    pinel jf lab está basado en java
  • 00:01:00
    necesita java así es que no tienen java
  • 00:01:02
    les va a parecer así como un hard que se
  • 00:01:05
    lee con un comprimido es que lo primero
  • 00:01:08
    que hay que hacer antes de utilizarlo es
  • 00:01:10
    instalar java
  • 00:01:12
    el que rápidamente vamos a instalar java
  • 00:01:24
    [Música]
  • 00:01:44
    bien en este ejemplo está instalando la
  • 00:01:47
    versión jdk aquí de desarrollo de java
  • 00:01:50
    que incluye también el java runtime
  • 00:01:53
    environment
  • 00:01:56
    [Música]
  • 00:02:02
    [Música]
  • 00:02:43
    en medio de la instalación del jd acá
  • 00:02:45
    nos va a aparecer el asistente para
  • 00:02:47
    instalar
  • 00:02:50
    environment el cual también sólo le
  • 00:02:53
    vamos a dar siguiente
  • 00:02:54
    [Música]
  • 00:03:00
    viene una vez que el asistente instalado
  • 00:03:05
    siempre es una buena práctica configurar
  • 00:03:08
    la dirección de java en las variables de
  • 00:03:10
    entorno
  • 00:03:11
    [Música]
  • 00:03:17
    vamos a la ruta de instalación de java a
  • 00:03:20
    la carpeta bean
  • 00:03:21
    [Música]
  • 00:03:25
    y agregamos esa ruta a las variables de
  • 00:03:29
    entorno del sistema
  • 00:03:30
    [Música]
  • 00:03:45
    pegamos al final de las variables de
  • 00:03:47
    entornos separado con un punto y coma
  • 00:03:49
    [Música]
  • 00:03:54
    y ya tenemos listo java para poder
  • 00:03:57
    utilizar el jfk
  • 00:04:00
    entonces para utilizar el jf lab ya que
  • 00:04:03
    tenemos java instalado esta vez
  • 00:04:05
    solamente habrá que hacer doble clic y
  • 00:04:08
    nos va a aparecer
  • 00:04:10
    la interfaz principal el jf la
  • 00:04:14
    tenemos muchas opciones en cuestión de
  • 00:04:17
    herramientas para poder trabajar en
  • 00:04:19
    lenguajes y en análisis de lenguajes
  • 00:04:22
    vamos a empezar con las gramáticas esta
  • 00:04:25
    opción de calamar
  • 00:04:29
    y tenemos acá inicialmente el editor de
  • 00:04:32
    gramáticas
  • 00:04:34
    y vamos a crear un par de gramáticas
  • 00:04:36
    simples para ver cómo se utiliza el hot
  • 00:04:38
    efe lab y qué opciones nos ofrece para
  • 00:04:41
    ir aprendiendo lenguajes
  • 00:04:44
    pero vamos a crear sencillito una
  • 00:04:48
    gramática que me genere los lenguajes o
  • 00:04:51
    un lenguaje compuesto por las cadenas
  • 00:04:54
    puede ser a b c
  • 00:04:58
    abede y ave
  • 00:05:01
    una gramática que me genere estas tres
  • 00:05:04
    cadenas
  • 00:05:05
    si analizamos las cadenas vemos que la
  • 00:05:09
    ave se repite en las tres cadenas
  • 00:05:12
    y esta parte de acá
  • 00:05:14
    es variable
  • 00:05:17
    muchas formas de construir
  • 00:05:21
    y una gramática para generar estas
  • 00:05:23
    cadenas
  • 00:05:24
    por ejemplo las gramáticas siempre deben
  • 00:05:28
    empezar con la letra s esa es la
  • 00:05:29
    variable inicial podemos hacer qué
  • 00:05:32
    [Música]
  • 00:05:34
    clave sea parte de una variable y
  • 00:05:38
    podemos mostrar estas terminales de
  • 00:05:41
    forma directa
  • 00:05:43
    entonces tendríamos acá a la variable a
  • 00:05:46
    utilizó la variable a seguida de
  • 00:05:49
    la terminal c
  • 00:05:53
    ese también podría iniciar
  • 00:05:56
    con la variable a y que termine con la
  • 00:05:59
    terminal de en este caso
  • 00:06:03
    y en mi tercera cadena que también
  • 00:06:06
    empiece con la variable s y en su
  • 00:06:10
    interior la variable a con la terminal
  • 00:06:14
    así ya tengo las partes finales de las
  • 00:06:16
    cadenas y esa variable a se va a
  • 00:06:19
    encargar de generar la cadena ave
  • 00:06:23
    la variable entonces va a generar la
  • 00:06:27
    terminal la cadena a b
  • 00:06:30
    y ahí tengo mi gramática
  • 00:06:34
    como puedo verificar cómo puedo analizar
  • 00:06:36
    cómo puedo aprender con el jp lab bueno
  • 00:06:39
    utilizó las opciones me voy a inputs
  • 00:06:42
    y acá puedo utilizar todas estas
  • 00:06:45
    opciones para verificar el
  • 00:06:46
    funcionamiento de mi gramática
  • 00:06:52
    y vamos a empezar con un paseo
  • 00:06:54
    controlado por el usuario
  • 00:06:58
    qué cadenas queremos verificar vamos a
  • 00:07:01
    verificar la primera cadena abc
  • 00:07:04
    escribo acá la cadena abc voy a empezar
  • 00:07:08
    a generar con mi árbol de derivación
  • 00:07:11
    start acá está ya el nodo s
  • 00:07:16
    qué opciones nos sirven para generar
  • 00:07:18
    esta cadena tenemos tres opciones estar
  • 00:07:20
    acá estar acá y estar acá analizando
  • 00:07:24
    vemos que nos conviene utilizar la
  • 00:07:25
    primera regla porque es la que termina
  • 00:07:26
    con la letra c así es que voy a avanzar
  • 00:07:30
    con esta regla boyacá este
  • 00:07:32
    y generó la terminal se antecedida por
  • 00:07:35
    la variable
  • 00:07:38
    ahora me queda reemplazar esta variable
  • 00:07:40
    a con las reglas que yo tengo y solo
  • 00:07:42
    tengo acá una sola regla que es a me
  • 00:07:45
    genera la cadena terminal
  • 00:07:48
    voy a utilizar esa regla
  • 00:07:51
    y con eso género la cadena abc
  • 00:07:55
    jfl admite que la cadena ha sido
  • 00:07:58
    aceptada vamos con las otras cadenas abc
  • 00:08:03
    vuelvo a empezar start reemplazo la
  • 00:08:06
    cadena abc
  • 00:08:09
    empieza a gustar esta cuál de estas tres
  • 00:08:13
    reglas nos convienen obviamente la
  • 00:08:16
    segunda la que terminen de selección a
  • 00:08:18
    esa regla y hago estar tengo la terminal
  • 00:08:21
    de generada y la variable
  • 00:08:25
    con esa producción y generó la cadena a
  • 00:08:29
    b/d
  • 00:08:34
    y veo que mi cadena ha sido aceptada
  • 00:08:40
    bien vamos a verificar la última cadena
  • 00:08:44
    que sería ave
  • 00:08:48
    la piel
  • 00:08:51
    vuelvo a empezar
  • 00:08:53
    cuales las tres reglas nos conviene la
  • 00:08:56
    tercera la que termina en la terminal
  • 00:09:00
    parte de ahí y para esta regla
  • 00:09:03
    tengo la 4a
  • 00:09:05
    y la cadena es aceptada tengo a b
  • 00:09:09
    esa es una de las opciones que podemos
  • 00:09:11
    utilizar para
  • 00:09:14
    y aprender cómo se crea el árbol de
  • 00:09:16
    derivación otra opción podría ser el
  • 00:09:20
    paseo directo por fuerza bruta
  • 00:09:22
    donde yo lo introduzco directamente la
  • 00:09:25
    cadena voy a introducir ab c
  • 00:09:28
    empiezo y automáticamente el jf la pme
  • 00:09:32
    realiza las pruebas y me dice que se han
  • 00:09:33
    generado tres nodos puede explorar
  • 00:09:35
    cuáles son directamente con step sin
  • 00:09:37
    necesidad de generar las reglas ahí está
  • 00:09:40
    un nivel y el otro nivel de mi árbol de
  • 00:09:44
    derivación
  • 00:09:46
    si quiero verificar varias cadenas tengo
  • 00:09:49
    esta opción de acá
  • 00:09:52
    múltiple brut first partes donde voy
  • 00:09:55
    introduciendo acá las cadenas se quiere
  • 00:09:57
    verificar abc ave de ave esas tres deben
  • 00:10:01
    ser aceptadas y otras deben ser
  • 00:10:04
    rechazadas por ejemplo a bf ave vea o se
  • 00:10:08
    vea por ejemplo
  • 00:10:10
    quiero verificar todas estas cadenas
  • 00:10:12
    hago run inputs
  • 00:10:15
    y bueno solamente me aceptado las tres
  • 00:10:17
    cadenas abc y ni siquiera ha pasado
  • 00:10:19
    porque efe no es parte del lenguaje de
  • 00:10:22
    la terminal f no está aquí incluida así
  • 00:10:25
    es que ésta no me sirve
  • 00:10:27
    vamos a volar
  • 00:10:34
    vamos a verificar estas otras
  • 00:10:36
    simplemente
  • 00:10:38
    vuelvo a introducir acá veamos qué pasa
  • 00:10:42
    y es rechazada
  • 00:10:44
    se vea
  • 00:10:47
    es rechazada ave
  • 00:10:50
    es rechazada y solamente me va a aceptar
  • 00:10:53
    esas tres cadenas bien simplemente esto
  • 00:10:56
    como un ejercicio para practicar con el
  • 00:10:59
    jfl up y las gramáticas y bueno yo
  • 00:11:01
    quiero guardar mi gramática para
  • 00:11:03
    trabajarla después qué es lo que hago me
  • 00:11:05
    voy a file 6 +
  • 00:11:08
    no guardo en donde yo lo voy a
  • 00:11:10
    conveniente
  • 00:11:12
    puedo crear una carpeta acá
  • 00:11:15
    ejercicios j efe
  • 00:11:21
    y lo guardo como ejercicio a cero
  • 00:11:25
    puedo cerrar acá acá está en mi
  • 00:11:28
    ejercicio la siguiente vez que lo quiera
  • 00:11:30
    utilizar a programar file open
  • 00:11:35
    agua brillo y hasta la información de mi
  • 00:11:38
    gramática bien ahora vamos a trabajar
  • 00:11:40
    con un par de ejercicios más para ir
  • 00:11:43
    comprendiendo cómo crear gramáticas
  • 00:11:51
    bien entonces para crear un nuevo
  • 00:11:53
    archivo con el jf lab
  • 00:11:56
    lo que hacemos es acá arriba bueno
  • 00:11:58
    podemos cerrar esta ventana o crear un
  • 00:12:02
    nuevo espacio de trabajo crear una nueva
  • 00:12:05
    gramática
  • 00:12:06
    bien
  • 00:12:09
    agregamos unos cuantos ejercicios
  • 00:12:14
    vamos a crear ahora una gramática para
  • 00:12:20
    reconocer generar todas las cadenas que
  • 00:12:24
    empiecen con una
  • 00:12:27
    tengan en medio al menos una vez y
  • 00:12:30
    terminen exactamente con una en el medio
  • 00:12:33
    pueden tener más de una vez
  • 00:12:36
    una cantidad indefinida de veces
  • 00:12:41
    bien empezamos a resolver
  • 00:12:44
    hay que analizar en principio en la
  • 00:12:47
    generación de un lenguaje en qué parte
  • 00:12:49
    se produce la recursión y en qué parte
  • 00:12:51
    se produce que la condición de terminal
  • 00:12:54
    o cuando se genera la cadena con el
  • 00:12:56
    símbolo terminal
  • 00:12:58
    el inicio de la cadena vemos que está
  • 00:12:59
    marcado siempre por
  • 00:13:02
    la letra entonces vamos a utilizar eso
  • 00:13:05
    en mi símbolo inicial voy a empezar a
  • 00:13:09
    generar mi cadena siempre con la letra
  • 00:13:13
    voy a partir simplemente de ahí desde la
  • 00:13:15
    letra voy a considerar el resto de la
  • 00:13:17
    cadena
  • 00:13:18
    todo esto acapara todas las cadenas como
  • 00:13:21
    algo variable
  • 00:13:23
    y lo voy a representar con una variable
  • 00:13:25
    puede ser la variable a mayúscula
  • 00:13:28
    ahora mi problema se reduce a
  • 00:13:30
    representar esta parte de las cadenas
  • 00:13:34
    como yo voy a generar primero esta
  • 00:13:37
    recursión de muchas veces una o muchas
  • 00:13:39
    veces y como voy a terminar mi cadena
  • 00:13:42
    exactamente con una
  • 00:13:48
    entonces ahora trabajamos sobre esta
  • 00:13:49
    variable la variable
  • 00:13:51
    en la variable a lo primero que sucede
  • 00:13:54
    es la reclusión y la reclusión viene
  • 00:13:56
    dada por el símbolo b
  • 00:13:59
    y si yo quiero volver a repetir una
  • 00:14:01
    determinada cantidad de veces entonces
  • 00:14:03
    invocó la recursión o represento a la
  • 00:14:05
    reclusión acá con una llamada de la
  • 00:14:08
    variable a en sí misma
  • 00:14:11
    simplemente así
  • 00:14:15
    yo he representado primero la salida de
  • 00:14:17
    la cadena el inicio de la cadena
  • 00:14:19
    empezando con una minúscula y luego le
  • 00:14:23
    sigue la variable
  • 00:14:25
    y la variable a tiene la opción de ser
  • 00:14:27
    una vez una letra be y luego volverá a
  • 00:14:30
    repetirse hasta acá si yo lo analizo con
  • 00:14:34
    mi árbol de derivación puedo
  • 00:14:40
    puedo probar por ejemplo la cadena
  • 00:14:43
    todas las cadenas que van a empezar con
  • 00:14:45
    una
  • 00:14:46
    van a tener unas cuantas veces y bueno
  • 00:14:49
    la parte final de la aún no la hemos
  • 00:14:51
    implementado la vamos a verificar ahora
  • 00:14:53
    qué es lo que pasa con el árbol de
  • 00:14:55
    derivación
  • 00:14:56
    empieza a partir el símbolo s tengo la
  • 00:15:00
    opción de ejecutar esta regla
  • 00:15:03
    y me genera para la cadena el inicio con
  • 00:15:06
    la terminal y luego la recursión viene
  • 00:15:09
    representada por esta regla la segunda
  • 00:15:12
    regla donde la variable a se convierte
  • 00:15:15
    en la terminal b con la variable a y
  • 00:15:18
    puedo seguir invocando la recursión si
  • 00:15:21
    nos fijamos si vuelvo a invocar a la
  • 00:15:23
    regla se van generando muchas veces
  • 00:15:28
    entonces tenemos parte del problema
  • 00:15:30
    resuelto pero aún no logramos generar
  • 00:15:32
    esta última letra la última terminal
  • 00:15:36
    esta última que va a cerrar que va a dar
  • 00:15:38
    por finalizada la cadena si nos fijamos
  • 00:15:40
    en el árbol de derivación el árbol no
  • 00:15:42
    tiene ningún final sigue y sigue
  • 00:15:45
    generando la terminal ve con la variable
  • 00:15:47
    a volvemos al modo de diseño y nos
  • 00:15:51
    podemos dar cuenta cómo terminar la
  • 00:15:52
    cadena cuando yo quiera terminar la
  • 00:15:55
    cadena
  • 00:15:56
    voy a invocar a la variable
  • 00:15:59
    con la letra o el símbolo o la terminal
  • 00:16:02
    a que de acuerdo a las reglas de mi
  • 00:16:05
    problema todas las cadenas deben
  • 00:16:07
    terminar siempre con una
  • 00:16:10
    entonces
  • 00:16:12
    vuelta a la división de mi gramática
  • 00:16:17
    vuelvo a verificar otra vez
  • 00:16:19
    la cadena
  • 00:16:22
    empiezo variable inicial s hago una
  • 00:16:27
    derivación general a terminar ahí la
  • 00:16:28
    variable a qué opción me conviene me
  • 00:16:31
    conviene estar acá para generar la b
  • 00:16:35
    genera que mi terminal b una variable
  • 00:16:38
    ahora quiero cerrar con la última
  • 00:16:41
    escojo esta regla y es reconocido y
  • 00:16:45
    generado en mi cadena
  • 00:16:47
    empiezo con otra digamos estar acá
  • 00:16:52
    de inicio
  • 00:16:54
    símbolo inicial s debo partir de ahí
  • 00:16:59
    ahora la variable a debo generar cuántas
  • 00:17:02
    veces
  • 00:17:03
    son 1 2 3 4 5 6 veces
  • 00:17:07
    entonces te escoge esta regla género uno
  • 00:17:10
    dos tres cuatro cinco seis veces y para
  • 00:17:14
    terminar cierro con esta escojo esta
  • 00:17:17
    regla
  • 00:17:18
    y la cadena ha sido aceptada entonces la
  • 00:17:22
    gramática que genera
  • 00:17:25
    un lenguaje que está compuesto por todas
  • 00:17:28
    las cadenas que empiezan y terminan con
  • 00:17:31
    una y en medio tienen uno muchas veces
  • 00:17:33
    es esta gramática de acá
  • 00:17:38
    bien respecto a la clasificación de la
  • 00:17:40
    gramática que acabamos de construir
  • 00:17:42
    siguiendo las reglas de lo que hemos
  • 00:17:44
    visto en la parte teórica esta vendría a
  • 00:17:47
    ser
  • 00:17:48
    una gramática irregular la gramática
  • 00:17:52
    regular porque bueno primero en el lado
  • 00:17:54
    izquierda en las producciones solamente
  • 00:17:56
    tenemos una variable lo cual es propio
  • 00:17:58
    de la sre maticas libras de contexto y
  • 00:18:00
    en la parte derecha las producciones son
  • 00:18:03
    lineales por la derecha es decir tienen
  • 00:18:05
    la reclusión es del lado derecho
  • 00:18:07
    ahora el jfk también nos brinda la
  • 00:18:10
    posibilidad de corroborar esta
  • 00:18:12
    información
  • 00:18:12
    una opción test podemos verificar qué
  • 00:18:16
    tipo de gramática hemos construido
  • 00:18:19
    y nos dice el hot efe lav esta es una
  • 00:18:22
    gramática lineal por la derecha por lo
  • 00:18:24
    tanto es una gramática irregular y es
  • 00:18:26
    una gramática libre de contexto
  • 00:18:30
    y vamos a cerrar esto y hagamos otro
  • 00:18:34
    ejercicio más
  • 00:18:37
    muy bien esta vez vamos a cerrar y vamos
  • 00:18:41
    a partir de la gramática
  • 00:18:45
    para intentar entender y comprender que
  • 00:18:47
    el lenguaje es generado bien analicemos
  • 00:18:50
    entonces esta gramática
  • 00:18:55
    la variable se genera la terminal abc
  • 00:18:58
    esto también puede generar a bs
  • 00:19:04
    y acá vamos a tener una combinación
  • 00:19:06
    símbolo terminal
  • 00:19:08
    que genera esa combinación y finalmente
  • 00:19:12
    esa producción que me genera la terminal
  • 00:19:14
    bebé
  • 00:19:18
    el lenguaje genera esta gramática
  • 00:19:21
    a ver vamos analizando y nos vamos a
  • 00:19:23
    encontrar con
  • 00:19:24
    a veces es una cadena generada por ese
  • 00:19:27
    lenguaje porque parte como terminal a
  • 00:19:30
    partir del símbolo inicial y la
  • 00:19:32
    recursión puede darse acá por ejemplo
  • 00:19:34
    con ese generando a ve ese variables y
  • 00:19:38
    determinarse
  • 00:19:41
    con esto nos podemos dar cuenta que las
  • 00:19:42
    cadenas que generemos van a empezar sí o
  • 00:19:45
    sí con una iban a terminar sí o sí con
  • 00:19:48
    una c
  • 00:19:50
    y luego tenemos vea que genera ave y
  • 00:19:54
    tenemos bebé que va a generar la
  • 00:19:57
    terminal al bebé lo interesante será
  • 00:20:00
    analizar esta parte media de la
  • 00:20:01
    gramática para entender cuál es el resto
  • 00:20:03
    de las cadenas que se van a generar
  • 00:20:08
    pero vamos a verificar algunas cadenas
  • 00:20:12
    por fuerza bruta
  • 00:20:15
    cómo será la recursión acá
  • 00:20:18
    bs por sí sola no genera nada así es que
  • 00:20:20
    ese se va a tener que generar una vez
  • 00:20:22
    más
  • 00:20:24
    si ese genera nuevamente la primera
  • 00:20:27
    regla abc
  • 00:20:29
    no vamos a hacer acá
  • 00:20:32
    [Música]
  • 00:20:37
    tenemos acá s
  • 00:20:39
    y nos va a generar por un lado abc y por
  • 00:20:43
    otro lado a bs si bien en este nivel del
  • 00:20:48
    árbol bs por sí sola no nos va a generar
  • 00:20:50
    nada es que habría que separarlo de por
  • 00:20:53
    sí sola tampoco tiene una representación
  • 00:20:55
    en las reglas de producción es que
  • 00:20:57
    tenemos dos opciones para eso
  • 00:21:00
    voy a avanzar a un nivel más
  • 00:21:05
    una opción será para esta s reemplazar
  • 00:21:08
    con la primera regla estar acá
  • 00:21:11
    abc
  • 00:21:15
    otra opción
  • 00:21:17
    [Música]
  • 00:21:20
    para eso será utilizar la segunda regla
  • 00:21:23
    y esa es reemplazar con a bs y c
  • 00:21:28
    tenemos por ahora esas dos opciones
  • 00:21:32
    bien analicemos las cadenas generadas
  • 00:21:34
    analicemos esta de acá
  • 00:21:37
    tenemos que eliminar esta variable por
  • 00:21:39
    sí sola no aparece pero aparece con la
  • 00:21:42
    terminal vea
  • 00:21:45
    vamos a derivar entonces
  • 00:21:52
    y reemplaza utilizando la tercera regla
  • 00:21:55
    con a b
  • 00:21:59
    bien seguimos analizando vamos a derivar
  • 00:22:02
    por acá una vez más
  • 00:22:05
    y encuentro que la variable ve con la
  • 00:22:08
    terminal b me generan la cadena terminal
  • 00:22:11
    b
  • 00:22:14
    la idea siempre de una gramática es
  • 00:22:17
    buscar la regla terminal donde no hay
  • 00:22:20
    variables para generar una cadena aquí y
  • 00:22:22
    aquí tenemos otra cadena la cadena a a
  • 00:22:25
    bbb c
  • 00:22:27
    eso nos da una idea de que estamos
  • 00:22:30
    trabajando con el lenguaje qué
  • 00:22:34
    está compuesto por los símbolos ab y c
  • 00:22:37
    y se forma por las cadenas que contienen
  • 00:22:40
    el mismo número de as neves y 62 hadas
  • 00:22:43
    dos veces 263 as tres veces y 13 es
  • 00:22:47
    vamos a ver esto con el par se ve en
  • 00:22:49
    fuerza bruta
  • 00:22:51
    la cadena que acabamos de generar
  • 00:22:54
    presionamos start dice me han generado 6
  • 00:22:57
    nuevos
  • 00:22:58
    primera
  • 00:23:00
    integración con esta regla se me ha
  • 00:23:02
    generado a bs a veces utilizando la
  • 00:23:06
    segunda regla
  • 00:23:08
    el siguiente paso ha sido
  • 00:23:10
    de la regla s la primera a generar a b y
  • 00:23:17
    c las ahora tenemos a b a b s c con la
  • 00:23:23
    segunda b o estaré acá como variable en
  • 00:23:26
    el siguiente paso
  • 00:23:30
    la vela utilizando esta regla se han
  • 00:23:34
    transformado en la terminal a con la
  • 00:23:37
    variable b mayúscula
  • 00:23:39
    en el siguiente paso la variable b está
  • 00:23:43
    arreglada con la minúscula han formado
  • 00:23:45
    un ave y una vez
  • 00:23:48
    y si se ha formado la cadena a b y c
  • 00:23:55
    quiero verificar más cadenas de igual
  • 00:23:58
    paseo por
  • 00:24:00
    múltiples con varias entradas limpio mis
  • 00:24:03
    entradas anteriores
  • 00:24:05
    dijimos cadenas con la misma cantidad de
  • 00:24:08
    us y debes y dices
  • 00:24:13
    se debería haber aprendido a aceptar
  • 00:24:17
    2 3 4 5 y 1 2 3 4 5 y alguna otra
  • 00:24:22
    combinación para ir verificando
  • 00:24:27
    esas otras
  • 00:24:29
    ejecutamos las entradas y solamente
  • 00:24:32
    aquellas que tienen la misma cantidad de
  • 00:24:33
    as neves y de 6 han sido aceptadas por
  • 00:24:37
    la gramática
  • 00:24:39
    quienes son los ejercicios básicos para
  • 00:24:42
    aprender a utilizar el jota de felap y
  • 00:24:43
    para entender un poco mejor a las
  • 00:24:46
    gramáticas respecto al tipo y creo que
  • 00:24:49
    es evidente es una gramática dependiente
  • 00:24:53
    al contexto porque dependiente del
  • 00:24:54
    contexto posición el lado izquierdo de
  • 00:24:56
    las producciones tenemos una combinación
  • 00:24:59
    de variables y terminales
  • 00:25:02
    corroboramos con el hot efe la dice esta
  • 00:25:05
    es una gramática libre de contexto y
  • 00:25:08
    también es una gramática sin
  • 00:25:10
    restricciones por ende
  • 00:25:14
    y con eso concluimos esta breve
  • 00:25:16
    demostración con el j efe
Tags
  • JFLAP
  • gramáticas
  • autómatas
  • análisis de lenguajes
  • Java
  • cadenas
  • árbol de derivación
  • gramáticas regulares
  • gramáticas libres de contexto
  • ejercicios prácticos