Alguém sabe se existe um algoritmo para escrever diretamente a gramática livre de contexto que gera uma determinada expressão regular?
Alguém sabe se existe um algoritmo para escrever diretamente a gramática livre de contexto que gera uma determinada expressão regular?
Respostas:
Suponho que você deseja obter uma gramática que gere o mesmo idioma da expressão regular fornecida.
Você pode conseguir isso seguindo as seguintes etapas:
Ambas as traduções são padrão e são abordadas em livros básicos sobre idiomas e autômatos formais. Observe que qualquer gramática comum também é livre de contexto.
Sim. Dou a resposta de alto nível, sem muitos detalhes.
Primeiro você tem que analisar as expressões. Isso pode ser feito usando um analisador decente recursivo simples. Vários exemplos na web.
Em seguida, você deve adicionar regras "semânticas" ao analisador, ao retornar da recursão. Esses são padrões em qualquer curso formal de teoria da linguagem. E se e são não terminais que geram expressões e então podemos gerar de e as regras , . Nós podemos gerar concatenação de e a regra . de e as regras , . Supondo que escolhemos novos termos não terminais de cada vez.
Como uma resposta anterior, presumo que você deseja obter uma gramática que gere o mesmo idioma da expressão regular fornecida .
Um algoritmo recursivo para construir uma gramática livre de contexto com é o seguinte:
Isso é essencialmente equivalente à resposta de Hendrik, mas com mais detalhes que podem ser úteis.