Pergunta

Quero escrever um gerador para fins educacionais e me perguntei se existem alguns bons recursos ou tutoriais on-line que explicam como escrever um. Algo nas linhas de "Vamos construir um compilador", de Jack Crenshaw.

Eu quero escrever o gerador de pastores para a gramática LR (1).

Tenho um entendimento decente da teoria por trás da geração da ação e das tabelas Goto, mas quero algum recurso que me ajude a implementá -la.

Os idiomas preferidos são C/C ++, Java, embora até outros idiomas estejam bem.

Obrigado.

Foi útil?

Solução

Eu concordo com os outros, o Dragon Book é um bom pano de fundo para a análise de LR.

Se você estiver interessado em analisadores de descendência recursiva, uma experiência de aprendizado extremamente divertida é este site, que o orienta na construção de um sistema compilador completamente independente que pode se compilar e outros idiomas:

Tutorial do Compilador Metaii

Tudo isso é baseado em um pequeno papel técnico de 10 páginas de Val Schorre: Meta II: Uma linguagem de escrita do compilador orientado para sintaxe De Honest-to-God 1964. Aprendi a construir compiladores a partir disso em 1970. Há um momento alucinante em que você finalmente Grok como o compilador pode se regenerar ....

Conheço o autor do site dos meus dias de faculdade, mas não tenho nada a ver com o site.

Outras dicas

Se você quisesse seguir a rota do Python, eu recomendaria o seguinte.

Descobri que os dois são extremamente úteis e Paul McGuire, o autor de Pyparsing, está super em ajudá -lo quando você enfrenta problemas. O processamento de texto do livro em Python é apenas uma referência útil para ter dicas de dedos e ajuda a levá -lo ao estado de espírito certo ao tentar construir um analisador.

Eu também apontaria que uma linguagem OO é mais adequada como um mecanismo de análise de idiomas, porque é extensível e o polimorfismo é a maneira certa de fazê -lo (IMHO). Olhar para o problema em termos de uma máquina de estado, em vez de "procurar um ponto e vírgula no final do XYZ", demonstrará que seu analisador se tornará muito mais robusto no final.

Espero que ajude!

Não realmente online, mas o Livro de Dragão tem discussões bastante elaboradas sobre a análise de LR.

Achei mais fácil aprender a escrever analisadores de descendência recursiva antes de aprender a escrever analisadores de LR. Bem, para ser sincero, depois de muitos anos escrevendo analisadores, nunca achei necessário escrever um analisador LR.

Eu escrevi recentemente um tutorial no CodeProject chamado Implementando ferramentas de linguagem de programação em C# 4.0 que descreve técnicas de análise de descida recursiva.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top