Loading AI tools
Da Wikipédia, a enciclopédia livre
Na teoria de linguagens formais, uma linguagem livre de contexto (LLC) é uma linguagem gerada por alguma gramática livre de contexto (GLC). Diferentes gramáticas livres de contexto podem gerar a mesma linguagem livre de contexto, ou, inversamente, uma dada linguagem livre de contexto pode ser gerada por diferentes gramáticas livres de contexto. É importante distinguir as propriedades da linguagem (propriedades intrínsecas) de propriedades de uma gramática específica (propriedades extrínsecas).
O conjunto de todas as linguagens livres de contexto é idêntico ao conjunto de linguagens aceitas por um autômato de pilha,[1] o que faz com que essas linguagens sejam passíveis de análise. Na verdade, dada uma GLC, há uma maneira direta para produzir um autômato com pilha para a gramática (e linguagem correspondente), mas indo para o outro lado (produzindo uma gramática dado um autômato) não é tão direta.
Tais linguagens são importantes para definir linguagens de programação.[1] Por exemplo, as linguagens que requerem o balanceamento de parênteses são geradas pela gramática . Da mesma forma, a maioria das expressões aritméticas é gerada por gramáticas livres de contexto.
Uma linguagem livre de contexto é , a linguagem de todas as cadeias de caracteres não vazias de tamanho par, a primeira metade sempre preenchida com ""s e a segunda metade sempre preenchida com ""s. é gerada pela gramática , e é aceita pelo autômato de pilha , em que é definido da seguinte forma:
Onde z é o símbolo inicial da pilha e x significa desempilhar.
LLCs não ambíguas são um subconjunto próprio de todos os LLCs: há LLCs inerentemente ambíguas. Um exemplo de uma LLC inerentemente ambígua é a união de com . Este conjunto é livre de contexto, uma vez que a união de duas linguagens livres de contexto é sempre livre de contexto. Mas não há nenhuma maneira de transformar de forma não ambígua cadeias no subconjunto (não-livre-contexto) que é a interseção dessas duas linguagens.[2]
O conjunto é uma Linguagem sensível ao contexto, mas não existe uma gramática livre de contexto gerando essa linguagem. [2] Então existem linguagens sensíveis ao contexto que não são livres de contexto. Para provar que uma determinada linguagem não é livre de contexto, pode-se empregar o Lema do bombeamento para linguagens livres de contexto ou uma série de outros métodos, como o Lema de Ogden ou Teorema de Parikh.[3]
Linguagens livres de contexto são fechadas nas seguintes operações. Se L e P são linguagens livres de contexto e D é uma linguagem regular, as seguintes linguagens também são livres de contexto:[4] OI
Linguagens livres de contexto não são fechadas sob complemento, interseção ou diferença. No entanto, se L é uma linguagem livre de contexto e D é uma linguagem regular, então tanto a sua interseção e sua diferença são linguagens livres de contexto.
As linguagens livres de contexto não são fechadas sob interseção. Isto pode ser visto tomando as linguagens e , que são ambos livre de contexto.[6] A interseção é , que pode ser mostrado como sendo não livre do contexto pelo Lema do bombeamento para linguagens livres de contexto.
Linguagens livres de contexto também não estão fechadas sob complementação, como para qualquer linguagem de A e B: .
Os seguintes problemas são indecidíveis para quaisquer gramáticas livres de contexto A e B:
Os seguintes problemas são decidíveis para quaisquer linguagens livres de contexto:
Determinar uma instância do problema da composição, ou seja, dada uma cadeia , determinar se onde é a linguagem gerada por alguma gramática , também é conhecido como Análise sintática (computação).
Formalmente, o conjunto de todas as linguagens livres de contexto é idêntico ao conjunto de linguagens aceitas por autômato com pilha (AP). Algoritmos de análise sintática para linguagens livres de contexto incluem o Algoritmo CYK e o Algoritmo Earley.
Uma subclasse especial de linguagens livres de contexto é a Linguagem livre de contexto determinística, que é definida como o conjunto de linguagens aceitas por um Autômato com pilha determinístico e pode ser analisado por um Analisador sintático LR.[7]
Se L é uma linguagem livre de contexto, então existe um n tal que para todo s ∈ L tal que |s| ≥ n, s pode ser reescrito da forma uvxyz, |vxy| > 0 e |vxy| ≤ n, tal que ∀ i, i ≥ 0 ∈ L
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.