Alguém sabe se existe um algoritmo para escrever diretamente a gramática livre de contexto que gera uma determinada expressão regular?
7
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.
fonte
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 seS1 e S2 são não terminais que geram expressões E1 e E2 então podemos gerar E1+E2 de S e as regras S→S1 , S→S2 . Nós podemos gerar concatenaçãoE1E2 de S e a regra S→S1S2 . E1∗ de S e as regras S→S1S , S→λ . Supondo que escolhemos novos termos não terminais de cada vez.
fonte
Como uma resposta anterior, presumo que você deseja obter uma gramática que gere o mesmo idioma da expressão regular fornecidar .
Um algoritmo recursivo para construir uma gramática livre de contextoG com L(G)=L(r) é o seguinte:
Isso é essencialmente equivalente à resposta de Hendrik, mas com mais detalhes que podem ser úteis.
fonte