BNF - Significado
A forma de Backus-Naur (também conhecido como BNF, formalismo de Backus-Naur, forma normal de Backus, ou forma de Panini-Backus) é uma meta-sintaxe usada para expressar gramáticas livres de contexto: isto é, um modo formal de descrever linguagens formais.
A BNF é amplamente usada como uma notação para as gramáticas de linguagens de programação, conjuntos de instruções e protocolos de comunicação, e também como notação para representar partes de gramáticas de linguagens naturais. A maioria dos livros-texto para teoria de linguagem de programação e/ou semântica documenta a linguagem de programação em BNF.
Uma especificação BNF é um conjunto de regras de derivação, escritas como:
Onde é um não-terminal, e a expressão consiste em sequências de símbolos e/ou sequências separadas pela barra vertical, '|', indicando uma escolha. Esta notação indica as possibilidades de substituição para símbolo da esquerda. Símbolos que nunca aparecem no lado esquerdo são ditos terminais.
A notação BNF também introduz um conjunto de operadores destinados a simplificar a representação das regras da gramática que envolvam alternativas, repetições e combinações. Esses operadores são descritos na seqüência.
O operador | (ou) permite expressar em uma mesma regra produções alternativas. Por exemplo, a regra:
equivale às duas regras:
O operador [ ] (Opcional) permite expressar zero ou uma ocorrência do símbolo especificado. Por exemplo, a regra:
equivale a
onde ε representa a string vazia.
O operador ( | ) (fatoração) permite expressar a combinação de símbolos alternativos, como em:
que equivale a
O operador * (repetição), assim como para expressões regulares, expressa 0 ou mais ocorrências do símbolo. Por exemplo, a regra:
equivale a
Assim, a ocorrência do padrão no lado direito de uma produção equivale a
O operador { | | }* (Concatenação) permite expressar a repetição múltipla de símbolos concatenados. Por exemplo, a regra:
equivale a
Fontes:
www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node44.html