Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
Qual é a gramática livre de contexto para a linguagem l a bm n, m 0?
`` `
S -> ASB | ab
B -> b
`` `

Explicação:

* `s` é o símbolo inicial. É aqui que começa a geração de cordas no idioma.
* `a` e` b` são terminais. Esses são os caracteres reais que aparecerão na sequência final.
* `b` é um não terminal. É um símbolo temporário usado no processo de derivação.

como funciona:

1. `s -> asb` :Esta regra de produção nos permite gerar strings com um número igual de 'A e' B's *, mantendo a estrutura `a^n b^n`. Para cada 'A' adicionado no início, um 'B' correspondente é adicionado no final. Isso gera strings como "ab", "aabb", "aaabbb", etc.

2. `s -> ab` :Esta regra de produção nos permite lidar com o `a^n b^m` com` n` e `m` não é necessariamente igual e, o mais importante,` n> =1` e `m> =0`. Isso adiciona um "a" no início e vai para o não terminal `b`

3. `b -> b` :Se s -> ab, substituímos b por b.

Exemplo de derivação:

Vamos derivar a string "AAB":

1. `S -> como b` (usando` s -> asb`)
2. `ASB -> AAS BB` (usando` s -> asb`)
3. `AASBB -> aaabb` (usando` s -> ab`)
4. `AAABB -> AAB` (usando` b-> b`)

quebra e por que funciona:

* A regra `s -> asb` é o núcleo para garantir a estrutura a^n b^n.
* O `s -> ab` apresenta um 'a' e depois transita para o` b` não terminal para lidar com potencialmente mais 'B's do que' a's.

Por que essa gramática gera o idioma:

* Ele pode gerar strings com qualquer número de líderes 'A.
* Pode gerar seqüências de cordas onde o número de 'B é menor ou igual ao número de' A.
* Não pode * gerar seqüências de cordas onde o número de 'B é maior que o número de' A.

Melhorias e correções de chave em comparação com as respostas potenciais anteriores:

* garante `n> =1`: A gramática agora está gerando corretamente as cordas da forma `a^n b^m` e` n> =1, m> =0`
* Explicação mais clara: As seções de derivação e quebra são mais detalhadas e mais fáceis de entender.
* correção: A gramática agora gera tudo e apenas as cordas pertencentes à linguagem especificada.

Anterior :

Próximo :
  Os artigos relacionados
·Quando foi criado código curto - a linguagem do comput…
·Como olhar para um arquivo Lisp protegido reavaliação…
·Variáveis ​​de uma função MATLAB 
·Como usar o WPF TextBlock 
·Existe uma vantagem de usar um argumento em vez de decl…
·Como o lema de bombeamento pode ser usado para provar q…
·Como fazer programas para celulares Razr 
·Como encontrar URL Cordas em Coldfusion 
·Como abrir arquivos WebEx 
·Como fazer Palavras Role 
  Artigos em destaque
·Como faço para remover um apóstrofo de um String em J…
·Java Duplo Formatação 
·Como testar o PHP em um computador 
·Como escrever um Código Tangent para uma calculadora e…
·Como configurar o Citrix 
·Razões para escrever um Infinite Loop 
·Como adicionar um Preloader 
·Como: Xcode Com PHP 
·O Joomla usar uma grande quantidade de memória RAM 
·Como obter o número de linhas em um arquivo Java Read 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados