Eu estudo os compiladores há algum tempo e tenho pesquisado o que significa "contexto" na gramática e o que significa que a gramática é "livre de contexto", mas sem resultado.
Então, alguém pode ajudar com isso?
Eu estudo os compiladores há algum tempo e tenho pesquisado o que significa "contexto" na gramática e o que significa que a gramática é "livre de contexto", mas sem resultado.
Então, alguém pode ajudar com isso?
Respostas:
O contexto pode ser explicado com relação às regras de produção permitidas para diferentes gramáticas na hierarquia de Chomsky.
Se você considerar gramáticas livres de contexto, suas regras de produção terão a seguinte forma:
Portanto, você pode observar que a parte esquerda desse tipo de regra é composta de apenas um símbolo não terminal; assim, a substituição do símbolo não terminal ocorre sem considerar o seu "contexto", ou seja, os outros símbolos pelos quais está cercado.
Por outro lado, se você considerar as regras de produção de gramáticas sensíveis ao contexto, elas terão a seguinte forma:
Você pode encontrar mais detalhes nesta resposta em matemática e nesta resposta em engenharia de software.
x:=y+z
f(y+z)
return y+z
De um modo geral, mesmo os idiomas regulares podem ter dependências de contexto, o que significa que você pode determinar - até certo ponto - de que maneira os símbolos podem aparecer nas proximidades de outros símbolos em uma string que pertence a esse idioma.
O que é específico das gramáticas sem contexto é que, quando existem várias maneiras de substituir um símbolo não terminal, aplicando regras diferentes com o mesmo não terminal no lado direito, a escolha de qual regra aplicar nunca depende do que está acontecendo em torno deste símbolo durante o processo de derivação.
Você pode pensar nelas como linguagens de derivação sem contexto, linguagens sem contexto, para abreviar.