2.4
Forma Estendida de Backus-Naur
A Forma Estendida de Backus-Naur (EBNF) est´a na categoria das metalinguagens sint´aticas, as quais podem ser definidas como notac¸˜oes para a descric¸˜ao formal da sintaxe de outras linguagens atrav´es de regras [36]. Um ˆambito comum de aplicac¸˜ao ´e a definic¸˜ao de linguagens de programac¸˜ao, a exemplo da linguagem Algol 60, descrita pela Forma de
Backus-Naur(BNF).
2.4.1
Metalinguagem Sint´atica
Cada regra de uma metalinguagem sint´atica (MS) ´e composta por s´ımbolos n˜ao-terminais e terminais. Os s´ımbolos n˜ao-terminais s˜ao conceitos que podem ser particionados em outros elementos, enquanto os terminais s˜ao atˆomicos, constituindo a menor parte da MS.
Segundo a norma ISO/IEC 14977:1996 [36], ´e recomendada a utilizac¸˜ao de uma metalin- guagem sint´atica quando houver a necessidade de uma descric¸˜ao ou definic¸˜ao formal clara. Ainda segundo a norma ISO/IEC 14977, ´e desej´avel que uma MS seja:
1. Concisa: para que as linguagens sejam descritas de forma breve; 2. Precisa: para que as regras n˜ao contenham ambiguidade;
3. Formal: para que seja poss´ıvel o processamento das regras por um computador; 4. Natural: para que seja simples o suficiente de ser entendida por pessoas que n˜ao pro-
jetaram a linguagem;
5. Geral: para que a notac¸˜ao possa ser aplicada na descric¸˜ao de v´arias linguagens; 6. Simples: para que o conjunto de caracteres utilizados estejam presentes nos teclados
comuns e possam ser entendidos por outros softwares;
7. Auto-descritiva: para que a notac¸˜ao seja capaz de se auto-descrever;
8. Linear: para que a sintaxe possa ser representada por um ´unico fluxo de caracteres, facilitando o processamento dos computadores.
A Forma de Backus-Naur ´e atualmente uma das metalinguagens sint´aticas mais utilizadas na comunidade cient´ıfica, tanto em sua forma original quanto atrav´es de suas variac¸˜oes, a
2.4 Forma Estendida de Backus-Naur 25
exemplo de Extended BNF (EBNF) e Augmented BNF (ABNF). Essas variac¸˜oes surgiram devido a limitac¸˜oes do BNF, como a descric¸˜ao dos seus s´ımbolos reservados na linguagem a ser definida e a complexidade em descrever algumas construc¸˜oes, a exemplo da repetic¸˜ao [36].
Devido aos problemas supracitados do BNF, a MS escolhida para a descric¸˜ao formal das fontes do Direito foi a Forma Estendida de Backus-Naur, pois esta atende a todos os requi- sitos enumerados pela ISO/IEC 14977 e as fontes podem ser descritas em uma linguagem linear.
2.4.2
Sintaxe
A especificac¸˜ao BNF ´e composta por regras, tornando poss´ıvel especificar completamente a sintaxe v´alida de uma fonte textual. Essas regras possuem a seguinte forma:
<s´ımbolo n˜ao-terminal> ::= express˜ao
Cada regra representa uma substituic¸˜ao v´alida de um s´ımbolo n˜ao-terminal por uma ex- press˜ao, formada por s´ımbolos terminais e/ou n˜ao-terminais. Para escrever uma regra s˜ao usados meta-s´ımbolos (como “::=” e “|”) que n˜ao devem ser confundidos com os s´ımbolos da metalinguagem representada. Assim como em outras variac¸˜oes do BNF, o EBNF cont´em algumas modificac¸˜oes para facilitar a representac¸˜ao de uma linguagem [36]:
• Os s´ımbolos reservados da metalinguagem podem ser citados atrav´es de aspas, assim n˜ao h´a restric¸˜oes na utilizac¸˜ao deles na linguagem a ser descrita;
• [ e ] expressa que um s´ımbolo ou express˜ao ´e opcional;
• { e } tamb´em expressam repetic¸˜ao, al´em do s´ımbolo * (asterisco) advindo do BNF; • O fim de cada regra ´e indicado pelo s´ımbolo ; (ponto-e-v´ırgula), assim n˜ao h´a ambi-
guidade quanto ao in´ıcio e fim das regras;
• ( e ) agrupam os s´ımbolos, assim como na representac¸˜ao matem´atica.
2.4 Forma Estendida de Backus-Naur 26
1. Especificac¸˜ao da quantidade de itens, caso o projetista de uma linguagem queira ex- pressar que determinado s´ımbolo possui valor fixo;
2. Definic¸˜ao atrav´es de casos, a exemplo de um coment´ario na linguagem Algol, que pode terminar com o primeiro end, else ou ponto-e-v´ırgula;
3. Introduc¸˜ao de coment´arios nas regras, facilitando o entendimento de regras complexas sem a necessidade de documentac¸˜ao anexa;
4. Meta-identificadores, permitindo que os s´ımbolos n˜ao-terminais possuam mais de um nome sem deixar a regra amb´ıgua. Isso ´e poss´ıvel atrav´es da introduc¸˜ao de um s´ımbolo expl´ıcito de concatenac¸˜ao: , (v´ırgula);
5. Possibilidade de extens˜oes, atrav´es do s´ımbolo especial ? (interrogac¸˜ao).
A Tabela 2.4 exibe a descric¸˜ao dos s´ımbolos do EBNF, adaptada da norma ISO/IEC 14977 [36]:
S´ımbolo Representac¸˜ao Inicial Representac¸˜ao Final
Concatenac¸˜ao , Definic¸˜ao = Excec¸˜ao - Repetic¸˜ao * Sequˆencia Especial ? Separador-definic¸˜oes | Fim-regra ; Coment´ario (* *) Agrupamento ( ) Opc¸˜ao [ ] Repetic¸˜ao (express˜ao) { } Citac¸˜ao (aspas) “ ”
Citac¸˜ao (aspas simples) ‘ ’
Tabela 2.4: S´ımbolos do EBNF (adap. de ISO/IEC 14977:1996 [36])
2.4.3
Exemplos
Exemplo 1, com os s´ımbolos de concatenac¸˜ao, definic¸˜ao, separador-definic¸˜oes e fim-regra: redac¸˜ao = introduc¸˜ao , desenvolvimento , conclus˜ao ;
2.4 Forma Estendida de Backus-Naur 27
No primeiro exemplo, foi descrito que uma redac¸˜ao ´e composta por introduc¸˜ao, desen- volvimento e conclus˜ao, dispostos nessa ordem. A letra a ser utilizada pode ser tanto cursiva quanto de forma.
Exemplo 2, retirado da ISO/IEC 14977 [36], o qual ilustra como s˜ao representadas as repetic¸˜oes:
aa = “A”;
bb = 3 * aa, “B”; cc = 3 * [aa], “C”; dd ={aa}, “D”; ee = aa,{aa}, “E”; ff = 3 * aa, 3 * [aa], “F”;
Sa´ıda:
aa: A bb: AAAB
cc: C AC AAC AAAC
dd: D AD AAD AAAD AAAAD etc. ee: AE AAE AAAE AAAAE AAAAAE etc. ff: AAAF AAAAF AAAAAF AAAAAAF
Para indicar que uma repetic¸˜ao ´e realizada pelo menos uma vez, ´e utilizado o s´ımbolo de excec¸˜ao ap´os os s´ımbolos de repetic¸˜ao: {s´ımbolo}-. Caso a regra dd fosse {aa}-, “D”, a sa´ıda D n˜ao seria v´alida.
O objetivo da descric¸˜ao formal das fontes do Direito na Forma Estendida de Backus-Naur ´e servir como padr˜ao para a extrac¸˜ao autom´atica de partes dos documentos, tornando poss´ıvel o armazenamento estruturado destes. Essa descric¸˜ao ser´a utilizada na fase de casamento de padr˜oes, supracitada na Sec¸˜ao2.3.1.