Onde posso obter material para aprender EBNF?
-
21-08-2019 - |
Pergunta
Extensão Backus-Naur Form: EBNF
Eu sou muito novo para analisar conceitos. Onde posso obter suficientemente fácil de ler e seguir material para escrever uma gramática para a biblioteca boost :: espírito, que usa uma gramática similar à EBNF?
Atualmente estou olhando para EBNF da Wikipedia.
Solução
A Wikipedia é exato. Se você tem acesso, definitivamente ler artigo originais de Wirth em EBNF.
A outra coisa a saber é que EBNF foi projetado para torná-lo fácil de analisadores de mão-escrita recursiva-descida para idiomas em que cada construção sintática tem que identificam palavras-chave no início. chaves traduzir a lacetes while
; colchetes (material opcional) se traduz em if
e alternativas traduzir para if-then-else
ou case
declarações. Se você tem o luxo de projetar seu idioma desta forma você pode bater para fora um analisador rapidamente e dar boas mensagens de erro.
O único lugar isso fica um pouco tedioso é quando você tem uma linguagem em que existem operadores infixas com muitos níveis diferentes de precedência. Por que você quer papel de Dave Hanson Compact recursiva-descida de análise das expressões . Talvez a série relatório tecnologia Princeton tem uma versão gratuita, e você pode sempre olhar para o código C frente de Hanson acabar .
Outras dicas
BNF em si é simples, mas você precisa se acostumar com a maneira como escritores de compiladores pensar. Eles não são necessariamente fácil ler, mas segue são notas de aula da UC Berkeley e Stanford.
Bem, eu acho que a Wikipedia é a maneira mais simples por dois motivos:
- Afirma a maioria dos pontos relevantes sobre o artigo
- Tem ligações para leitura na parte inferior da página
Também gostaria de sugerir a leitura de Standart BNF apenas para se familiarizar com a idéia por trás dele.
Pelo menos eu sempre começar com Wikipedia também, e isso quase sempre ajuda.