Formalismo de Backus-Naur Estendido: diferenças entre revisões
m Mschlindwein moveu Formalismo de Backus-Naur Extendido para seu redirecionamento Formalismo de Backus-Naur Estendido: "Extender" não existe em Português. |
palavra chave |
||
Linha 1: | Linha 1: | ||
{{Wikificação|data=setembro de 2013}} |
{{Wikificação|data=setembro de 2013}} |
||
{{mais notas|data=setembro de 2013}} |
{{mais notas|data=setembro de 2013}} |
||
Em [[ciência da computação]], '''Formalismo de Backus-Naur Estendido''' (também conhecido como EBNF) é uma família de notações meta-sintaxe, qualquer que pode ser usado para expressar uma gramática livre de contexto.EBNF é usado para fazer uma descrição formal de uma linguagem formal , que pode ser um computador de linguagem de programação . Eles são extensões do básico [[Formalismo de Backus-Naur]] (BNF) meta-sintaxe. |
Em [[ciência da computação]], '''Formalismo de Backus-Naur Estendido''' (também conhecido como EBNF-Bacon) é uma família de notações meta-sintaxe, qualquer que pode ser usado para expressar uma gramática livre de contexto.EBNF é usado para fazer uma descrição formal de uma linguagem formal , que pode ser um computador de linguagem de programação . Eles são extensões do básico [[Formalismo de Backus-Naur]] (BNF) meta-sintaxe. |
||
A primeira EBNF foi originalmente desenvolvida por [[Niklaus Wirth]] incorporando alguns dos conceitos (com uma sintaxe e notação diferente) de notação de sintaxe Wirth . No entanto, muitas variantes de EBNF estão em uso. A Organização Internacional para Padronização adotou um padrão EBNF ( ISO / IEC 14977 ). Este artigo usa EBNF conforme especificado pela ISO para exemplos aplicáveis a todos os EBNFs. Outras variantes de EBNF usam convenções sintáticas de algum modo diferentes. |
A primeira EBNF foi originalmente desenvolvida por [[Niklaus Wirth]] incorporando alguns dos conceitos (com uma sintaxe e notação diferente) de notação de sintaxe Wirth . No entanto, muitas variantes de EBNF estão em uso. A Organização Internacional para Padronização adotou um padrão EBNF ( ISO / IEC 14977 ). Este artigo usa EBNF conforme especificado pela ISO para exemplos aplicáveis a todos os EBNFs. Outras variantes de EBNF usam convenções sintáticas de algum modo diferentes. |
Revisão das 20h10min de 17 de junho de 2015
Esta página ou se(c)ção precisa ser formatada para o padrão wiki. (Setembro de 2013) |
Em ciência da computação, Formalismo de Backus-Naur Estendido (também conhecido como EBNF-Bacon) é uma família de notações meta-sintaxe, qualquer que pode ser usado para expressar uma gramática livre de contexto.EBNF é usado para fazer uma descrição formal de uma linguagem formal , que pode ser um computador de linguagem de programação . Eles são extensões do básico Formalismo de Backus-Naur (BNF) meta-sintaxe.
A primeira EBNF foi originalmente desenvolvida por Niklaus Wirth incorporando alguns dos conceitos (com uma sintaxe e notação diferente) de notação de sintaxe Wirth . No entanto, muitas variantes de EBNF estão em uso. A Organização Internacional para Padronização adotou um padrão EBNF ( ISO / IEC 14977 ). Este artigo usa EBNF conforme especificado pela ISO para exemplos aplicáveis a todos os EBNFs. Outras variantes de EBNF usam convenções sintáticas de algum modo diferentes.
Noções básicas
EBNF é um código que expressa a gramática de uma língua formal. Uma EBNF consiste símbolos terminais e regras de produção não-terminais que são as restrições relativas como símbolos terminais podem ser combinados em uma sequência válida. Exemplos de símbolos terminais incluem caracteres alfanuméricos, sinais de pontuação e caracteres de espaço em branco.
O EBNF define regras de produção, onde sequências de símbolos são, respectivamente, atribuídos a um não-terminal :
digit excluding zero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; digit = "0" | digit excluding zero ;
Esta regra de produção define o dígito não terminal que está no lado esquerdo da atribuição. A barra vertical representa uma alternativa e os símbolos terminais são colocados entre aspas, seguido por um ponto e vírgula como caractere de terminação. Assim, um dígito é um 0 ou um dígito excluindo zero, que pode ser 1, 2 ou 3 e assim sucessivamente até 9.
A regra de produção também pode incluir uma sequência de terminais ou não-terminais, cada um separado por uma vírgula:
twelve = "1", "2" ; two hundred one = "2", "0", "1" ; three hundred twelve = "3", twelve ; twelve thousand two hundred one = twelve, two hundred one ;
Expressões que podem ser omitidas ou repetidas pode ser representadas através de chaves {... }:
natural number = digit excluding zero, { digit } ;
Neste caso, as cadeias 1, 2, ..., 10, ..., 12345, ... são expressões corretas.Para representar isso, tudo o que é definido dentro das chaves pode ser repetido muitas vezes arbitrariamente, incluindo de modo nenhum.
Uma opção pode ser representada através de suportes quadrados [... ]. Ou seja, tudo o que for definido dentro dos colchetes pode estar presente apenas uma vez, ou de modo nenhum:
integer = "0" | [ "-" ], natural number ;
Portanto um inteiro é um zero (0) ou um número natural que pode ser precedido por um sinal de menos opcional. EBNF também fornece, entre outras coisas, a sintaxe para descrever as repetições de um determinado número de vezes, de excluir uma parte de uma produção, ou para inserir comentários em uma gramática EBNF.
Tabela de símbolos
Uso | Notação |
---|---|
definição | = |
concatenação | , |
terminação | ; |
alternância | | |
opção | [ ... ] |
repetição | { ... } |
agrupamento | ( ... ) |
string terminal | " ... " |
string terminal | ' ... ' |
comentário | (* ... *) |
sequência especial | ? ... ? |
exceção | - |
Exemplos
Até mesmo a EBNF pode ser descrita em EBNF. Considere o exemplo a seguir, que representa uma proposta de norma ISO / IEC 14977, por RS Scowen, página 3, tabela 1.
letter = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ; digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; symbol = "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">" | "'" | '"' | "=" | "|" | "." | "," | ";" ; character = letter | digit | symbol | "_" ; identifier = letter , { letter | digit | "_" } ; terminal = "'" , character , { character } , "'" | '"' , character , { character } , '"' ; lhs = identifier ; rhs = identifier | terminal | "[" , rhs , "]" | "{" , rhs , "}" | "(" , rhs , ")" | rhs , "|" , rhs | rhs , "," , rhs ; rule = lhs , "=" , rhs , ";" ; grammar = { rule } ;
Vantagens sobre BNF
Qualquer gramática definida na EBNF também pode ser representado em BNF embora representações em que nestes são geralmente mais longas. Por exemplo, as opções e as repetições não podem ser expressas diretamente em BNF e exigem o uso de um intermediário ou de produção regra alternativa definida para ser nada ou a produção opcional para a opção, ou seja a produção em si ou repetida, de forma recursiva, por repetição. As mesmas construções podem ainda ser utilizadas em EBNF.
A BNF usa os símbolos (<,>, |, :: =) para si, mas não inclui aspas cordas terminais. Isso evita que esses personagens sejam usadas nas línguas, e requer um símbolo especial para a cadeia vazia. Em EBNF, terminais são estritamente entre aspas ("..." ou '...'). Os colchetes ("<...>") para não-terminais podem ser omitidos. Sintaxe BNF só pode representar uma regra em uma linha, enquanto que em EBNF um caractere de terminação, o ponto e vírgula, marca o fim de uma regra. Além disso, EBNF inclui mecanismos para melhorias, definindo o número de repetições, excluindo alternativas, comentários, etc.
Trabalhos relacionados
- The W3C used a different EBNF to specify the XML syntax.
- The British Standards Institution published a standard for an EBNF: BS 6154 in 1981.
- The IETF uses Augmented BNF (ABNF), specified in RFC 5234.
Ver também
- Expressão regular
- Spirit Parser Framework
- Regras de estrutura frasal, o direto equivalente a EBNF nas linguagens naturais.
Ligações externas
- Niklaus Wirth: What can we do about the unnecessary diversity of notation for syntactic definitions? CACM, Vol. 20, Issue 11, November 1977, pp. 822–823.
- Roger S. Scowen: Extended BNF — A generic base standard. Software Engineering Standards Symposium 1993.
- The International standard (ISO 14977) that defines the EBNF is now freely available as Zip-compressed PDF file.