Jerarquía deJerarquía de
ChomskyChomsky
Roberto Daniel Pantoja TovarRoberto Daniel Pantoja Tovar
David del Ángel RodríguezDavid del Ángel Rodríguez
Karen Ramírez RodriguezKaren Ramírez Rodriguez
IntroducciónIntroducción
 En lingüística laEn lingüística la
jerarquía dejerarquía de
Chomsky es unaChomsky es una
clasificaciónclasificación
jerárquica dejerárquica de
distintos tipos dedistintos tipos de
gramáticas formalesgramáticas formales
que generanque generan
lenguajes formales.lenguajes formales.
Esta jerarquía fueEsta jerarquía fue
descrita por Noamdescrita por Noam
Chomsky en 1956.Chomsky en 1956.
Expresiones regularesExpresiones regulares
 Una expresión regular, a menudo llamada tambiénUna expresión regular, a menudo llamada también
patrón, es una expresión que describe unpatrón, es una expresión que describe un
conjunto de cadenas sin enumerar sus elementosconjunto de cadenas sin enumerar sus elementos
 Para poder realizar expresiones regularesPara poder realizar expresiones regulares
debemos tomar en cuenta esto:debemos tomar en cuenta esto:
 Sea S y R símbolos cualquieraSea S y R símbolos cualquiera
 1. entonces R y/o S son expresiones regulares1. entonces R y/o S son expresiones regulares
 2. R*S=RS es una expresión regular2. R*S=RS es una expresión regular
 3. (R) es una expresión regular3. (R) es una expresión regular
 4. nulo (vacío) es una expresión regular4. nulo (vacío) es una expresión regular
 5. R*=a que R puede repetirse 0 muchas veces5. R*=a que R puede repetirse 0 muchas veces
 6. R+=R(R*) R se repite 1 o más veces6. R+=R(R*) R se repite 1 o más veces
 7. R?=R o7. R?=R o vacío quierevacío quiere decir que R puededecir que R puede venirvenir 11
vez o no venir nuncavez o no venir nunca
EjemplosEjemplos::
 Supongamos que se desea generar una expresión regularaSupongamos que se desea generar una expresión regulara
que reconozca un numero de cédulaque reconozca un numero de cédula
 La solución seriaLa solución seria
 Formato de no. De cedula =A1-12354544Formato de no. De cedula =A1-12354544
 Expresión regular que reconoce éste tipo de informaciónExpresión regular que reconoce éste tipo de información
 LD-DD*LD-DD*
 DondeDonde
 L representa al conjunto de todas las letras del alfabetoL representa al conjunto de todas las letras del alfabeto
 D representa el conjunto de todos los decimalesD representa el conjunto de todos los decimales
 Ejemplo2Ejemplo2
 Supongamos que se desea generar una expresión regularSupongamos que se desea generar una expresión regular
que reconozca números decimalesque reconozca números decimales
 DD*.DD*DD*.DD*
 Aquí decimos que puede venir un digito (D) seguido de otroAquí decimos que puede venir un digito (D) seguido de otro
digito que puede venir 0 o muchas veces (D*) hágase notardigito que puede venir 0 o muchas veces (D*) hágase notar
que el (.) que se encuentra no es de concatenación sino queque el (.) que se encuentra no es de concatenación sino que
es el punto decimal, después de esto viene otro digito (D)es el punto decimal, después de esto viene otro digito (D)
obligatorio ya que no se acepta 3. ya que no seria un númeroobligatorio ya que no se acepta 3. ya que no seria un número
decimal.decimal.
Jerarquía de ChomskyJerarquía de Chomsky
 Clasifico las gramáticas en 4 familias.Clasifico las gramáticas en 4 familias.
- Las no restringidas (TipoLas no restringidas (Tipo
0)0)
- Sensibles al contexto (TipoSensibles al contexto (Tipo
1)1)
- Independientes del contexto (Tipo 2)Independientes del contexto (Tipo 2)
- Gramáticas Regulares (TipoGramáticas Regulares (Tipo
3)3)
Descripción de los tipos deDescripción de los tipos de
jerarquíasjerarquías
Tipo3: lenguajesTipo3: lenguajes
regularesregulares
 Estos tipos de lenguajes se resuelvenEstos tipos de lenguajes se resuelven
mediante autómatas finitos.mediante autómatas finitos.
 CaracterísticasCaracterísticas
 Del lado derecho de cada producción debeDel lado derecho de cada producción debe
empezar con un símbolo terminalempezar con un símbolo terminal
 Ejemplo:Ejemplo:
Con éste tipo de lenguaje se hacen los scannersCon éste tipo de lenguaje se hacen los scanners
Tipo2: Libres oTipo2: Libres o
Independientes de contextoIndependientes de contexto
 Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante
autómatas descendentesautómatas descendentes
 CaracterísticasCaracterísticas
 Del lado derecho de cada producción puedeDel lado derecho de cada producción puede
empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no
terminalterminal
 Los lenguajes regulares también se puedenLos lenguajes regulares también se pueden
resolver mediante autómatas descendentesresolver mediante autómatas descendentes
 Ejemplo:Ejemplo:
Con éste tipo de lenguaje se programa los parser en un compiladorCon éste tipo de lenguaje se programa los parser en un compilador
Tipo1: Sensibles oTipo1: Sensibles o
Dependientes de contextoDependientes de contexto
 Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante
autómatas lineales limitadosautómatas lineales limitados
 CaracterísticasCaracterísticas
 Del lado derecho de cada producción puedeDel lado derecho de cada producción puede
empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no
terminal y del lado izquierdo puede empezar conterminal y del lado izquierdo puede empezar con
más de un símbolo no terminal.más de un símbolo no terminal.
 RestricciónRestricción
 El número de no terminales del lado izquierdo deEl número de no terminales del lado izquierdo de
la producción debe ser menor o igual al número dela producción debe ser menor o igual al número de
símbolos del lado derechosímbolos del lado derecho
 NotaNota
 Los lenguajes regulares y los libres de contextoLos lenguajes regulares y los libres de contexto
también se pueden resolver mediante autómatastambién se pueden resolver mediante autómatas
lineales limitados.lineales limitados.
 Ejemplo:Ejemplo:
Con éste tipo de lenguajes se hacen los parser de un compilador.Con éste tipo de lenguajes se hacen los parser de un compilador.
Un analizador sintáctico (en inglésUn analizador sintáctico (en inglés parserparser) es una de las partes) es una de las partes
dede
un compilador que transforma su entrada en un árbol deun compilador que transforma su entrada en un árbol de
derivación.derivación.
El análisis sintáctico convierte el texto de entrada en otrasEl análisis sintáctico convierte el texto de entrada en otras
estructuras (comúnmente árboles), que son más útiles para elestructuras (comúnmente árboles), que son más útiles para el
posterior análisis y capturan la jerarquía implícita de la entrada.posterior análisis y capturan la jerarquía implícita de la entrada.
Tipo0: RecursivamenteTipo0: Recursivamente
enumerableenumerable
 Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante
maquinas de Turínmaquinas de Turín
 CaracterísticasCaracterísticas
 Del lado derecho de cada producción puedeDel lado derecho de cada producción puede
empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no
terminal y del lado izquierdo puede empezar conterminal y del lado izquierdo puede empezar con
más de un símbolo no terminal.más de un símbolo no terminal.
 RestricciónRestricción
 No tiene ninguna restricción solamente que delNo tiene ninguna restricción solamente que del
lado izquierdo debe haber por lo menos unlado izquierdo debe haber por lo menos un
símbolo no terminalsímbolo no terminal
 NotaNota
 Todos los demás tipos de lenguajes también seTodos los demás tipos de lenguajes también se
pueden resolver mediante maquinas de Turínpueden resolver mediante maquinas de Turín
 Ejemplo:Ejemplo:
Con éste tipo de lenguajes se hacen los parser de un compiladorCon éste tipo de lenguajes se hacen los parser de un compilador

Jerarquia de chomsky

  • 1.
    Jerarquía deJerarquía de ChomskyChomsky RobertoDaniel Pantoja TovarRoberto Daniel Pantoja Tovar David del Ángel RodríguezDavid del Ángel Rodríguez Karen Ramírez RodriguezKaren Ramírez Rodriguez
  • 2.
    IntroducciónIntroducción  En lingüísticalaEn lingüística la jerarquía dejerarquía de Chomsky es unaChomsky es una clasificaciónclasificación jerárquica dejerárquica de distintos tipos dedistintos tipos de gramáticas formalesgramáticas formales que generanque generan lenguajes formales.lenguajes formales. Esta jerarquía fueEsta jerarquía fue descrita por Noamdescrita por Noam Chomsky en 1956.Chomsky en 1956.
  • 3.
    Expresiones regularesExpresiones regulares Una expresión regular, a menudo llamada tambiénUna expresión regular, a menudo llamada también patrón, es una expresión que describe unpatrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementosconjunto de cadenas sin enumerar sus elementos  Para poder realizar expresiones regularesPara poder realizar expresiones regulares debemos tomar en cuenta esto:debemos tomar en cuenta esto:  Sea S y R símbolos cualquieraSea S y R símbolos cualquiera  1. entonces R y/o S son expresiones regulares1. entonces R y/o S son expresiones regulares  2. R*S=RS es una expresión regular2. R*S=RS es una expresión regular  3. (R) es una expresión regular3. (R) es una expresión regular  4. nulo (vacío) es una expresión regular4. nulo (vacío) es una expresión regular  5. R*=a que R puede repetirse 0 muchas veces5. R*=a que R puede repetirse 0 muchas veces  6. R+=R(R*) R se repite 1 o más veces6. R+=R(R*) R se repite 1 o más veces  7. R?=R o7. R?=R o vacío quierevacío quiere decir que R puededecir que R puede venirvenir 11 vez o no venir nuncavez o no venir nunca
  • 4.
    EjemplosEjemplos::  Supongamos quese desea generar una expresión regularaSupongamos que se desea generar una expresión regulara que reconozca un numero de cédulaque reconozca un numero de cédula  La solución seriaLa solución seria  Formato de no. De cedula =A1-12354544Formato de no. De cedula =A1-12354544  Expresión regular que reconoce éste tipo de informaciónExpresión regular que reconoce éste tipo de información  LD-DD*LD-DD*  DondeDonde  L representa al conjunto de todas las letras del alfabetoL representa al conjunto de todas las letras del alfabeto  D representa el conjunto de todos los decimalesD representa el conjunto de todos los decimales  Ejemplo2Ejemplo2  Supongamos que se desea generar una expresión regularSupongamos que se desea generar una expresión regular que reconozca números decimalesque reconozca números decimales  DD*.DD*DD*.DD*  Aquí decimos que puede venir un digito (D) seguido de otroAquí decimos que puede venir un digito (D) seguido de otro digito que puede venir 0 o muchas veces (D*) hágase notardigito que puede venir 0 o muchas veces (D*) hágase notar que el (.) que se encuentra no es de concatenación sino queque el (.) que se encuentra no es de concatenación sino que es el punto decimal, después de esto viene otro digito (D)es el punto decimal, después de esto viene otro digito (D) obligatorio ya que no se acepta 3. ya que no seria un númeroobligatorio ya que no se acepta 3. ya que no seria un número decimal.decimal.
  • 5.
    Jerarquía de ChomskyJerarquíade Chomsky  Clasifico las gramáticas en 4 familias.Clasifico las gramáticas en 4 familias. - Las no restringidas (TipoLas no restringidas (Tipo 0)0) - Sensibles al contexto (TipoSensibles al contexto (Tipo 1)1) - Independientes del contexto (Tipo 2)Independientes del contexto (Tipo 2) - Gramáticas Regulares (TipoGramáticas Regulares (Tipo 3)3)
  • 6.
    Descripción de lostipos deDescripción de los tipos de jerarquíasjerarquías
  • 7.
    Tipo3: lenguajesTipo3: lenguajes regularesregulares Estos tipos de lenguajes se resuelvenEstos tipos de lenguajes se resuelven mediante autómatas finitos.mediante autómatas finitos.  CaracterísticasCaracterísticas  Del lado derecho de cada producción debeDel lado derecho de cada producción debe empezar con un símbolo terminalempezar con un símbolo terminal  Ejemplo:Ejemplo: Con éste tipo de lenguaje se hacen los scannersCon éste tipo de lenguaje se hacen los scanners
  • 8.
    Tipo2: Libres oTipo2:Libres o Independientes de contextoIndependientes de contexto  Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante autómatas descendentesautómatas descendentes  CaracterísticasCaracterísticas  Del lado derecho de cada producción puedeDel lado derecho de cada producción puede empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no terminalterminal  Los lenguajes regulares también se puedenLos lenguajes regulares también se pueden resolver mediante autómatas descendentesresolver mediante autómatas descendentes  Ejemplo:Ejemplo: Con éste tipo de lenguaje se programa los parser en un compiladorCon éste tipo de lenguaje se programa los parser en un compilador
  • 9.
    Tipo1: Sensibles oTipo1:Sensibles o Dependientes de contextoDependientes de contexto  Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante autómatas lineales limitadosautómatas lineales limitados  CaracterísticasCaracterísticas  Del lado derecho de cada producción puedeDel lado derecho de cada producción puede empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no terminal y del lado izquierdo puede empezar conterminal y del lado izquierdo puede empezar con más de un símbolo no terminal.más de un símbolo no terminal.  RestricciónRestricción  El número de no terminales del lado izquierdo deEl número de no terminales del lado izquierdo de la producción debe ser menor o igual al número dela producción debe ser menor o igual al número de símbolos del lado derechosímbolos del lado derecho  NotaNota  Los lenguajes regulares y los libres de contextoLos lenguajes regulares y los libres de contexto también se pueden resolver mediante autómatastambién se pueden resolver mediante autómatas lineales limitados.lineales limitados.
  • 10.
     Ejemplo:Ejemplo: Con éstetipo de lenguajes se hacen los parser de un compilador.Con éste tipo de lenguajes se hacen los parser de un compilador. Un analizador sintáctico (en inglésUn analizador sintáctico (en inglés parserparser) es una de las partes) es una de las partes dede un compilador que transforma su entrada en un árbol deun compilador que transforma su entrada en un árbol de derivación.derivación. El análisis sintáctico convierte el texto de entrada en otrasEl análisis sintáctico convierte el texto de entrada en otras estructuras (comúnmente árboles), que son más útiles para elestructuras (comúnmente árboles), que son más útiles para el posterior análisis y capturan la jerarquía implícita de la entrada.posterior análisis y capturan la jerarquía implícita de la entrada.
  • 11.
    Tipo0: RecursivamenteTipo0: Recursivamente enumerableenumerable Estos tipos de lenguajes se resuelven medianteEstos tipos de lenguajes se resuelven mediante maquinas de Turínmaquinas de Turín  CaracterísticasCaracterísticas  Del lado derecho de cada producción puedeDel lado derecho de cada producción puede empezar con un símbolo terminal o con un noempezar con un símbolo terminal o con un no terminal y del lado izquierdo puede empezar conterminal y del lado izquierdo puede empezar con más de un símbolo no terminal.más de un símbolo no terminal.  RestricciónRestricción  No tiene ninguna restricción solamente que delNo tiene ninguna restricción solamente que del lado izquierdo debe haber por lo menos unlado izquierdo debe haber por lo menos un símbolo no terminalsímbolo no terminal  NotaNota  Todos los demás tipos de lenguajes también seTodos los demás tipos de lenguajes también se pueden resolver mediante maquinas de Turínpueden resolver mediante maquinas de Turín
  • 12.
     Ejemplo:Ejemplo: Con éstetipo de lenguajes se hacen los parser de un compiladorCon éste tipo de lenguajes se hacen los parser de un compilador