As Ferramentas Auxiliares
Por: Valdionor Junior • 2/10/2015 • Monografia • 593 Palavras (3 Páginas) • 364 Visualizações
1 – Exemplifique o uso de passagem de parâmetros por:
• Valor (Call by value).
A mais comum das estratégias de avaliação, onde parâmetros da função de transferência é chamado quando uma cópia do argumento altera o valor do parâmetro e não do argumento em si.
• Referência (Call by reference)
A função de parâmetros de referência é implantada ao se receber um argumento, porém não é uma cópia do argumento. Sendo assim a função de parâmetros se altera, ou seja, o argumento passado também pode ser alterado, ambos apontando sempre para o mesmo valor.
• Nome (Call by name)
O procedimento e tratado como se fosse um macro onde a chamada é substituída pelo corpo do procedimento, sendo seus parâmetros formais substituídos pelos parâmetros de chamada.
• Necessidade (Call by need)
Os parâmetros formais são substituídos por referências (de ponteiros) dos parâmetros reais de uma instância. É um mecanismo mais complexo, pois quando efetivamente necessário na avaliação, essa referência é tratada por passagem de parâmetros copy-restore ou por call by name.
2 – Pesquise sobre ferramentas auxiliares para a construção de compiladores.
A construção de compiladores tem sido bem menos complexa graças a um conjunto de ferramentas que tem surgido ao logo do tempo da evolução das linguagens de programação. Estas ferramentas auxiliam e muito na parte de análise dos algoritmos criados pelos desenvolvedores. Cada ferramenta possui funções especificas como: Análise de léxica, Análise semântica, Geradores de código, etc.
Um bom exemplo de Gerador de análise léxica e semântica são as ferramentas Lex e Yacc. Muito comumente utilizados em UNIX. Trabalham em conjunto, sendo a Ferramenta Lex um gerado de scanners (yylex ()), e a ferramenta Yacc um gerado de parsers (yyparse ()).
O gerador Lex (Analisador léxico) pode ser utilizado para reconhecimento de qualquer tipo de expressão regular, transformando-as em autômatos. Para cada expressão regular deve-se sempre definir uma ação. Suas sub-rotinas auxiliares podem ser definidas como funções em C, utilizadas como funções de apoio de ações, sendo que nesse caso as funções não são alteras quando gerado o Scanner.
O gerador Yacc (Yet Another Compiler-Compiler) realiza análises semânticas, transforma uma gramatica que define uma linguagem de autômato de pilha que reconhece esta linguagem. Em cada gramatica gerada existe uma ação semântica. Sua declaração é realizada em linguagem C, semelhante ao Gerador Lex. A ferramenta define tokens e regras auxiliares para solução de ambiguidade. Sua regra de tradução é bem semelhante as definições gramaticais, sendo que a cada símbolo, seja terminal ou não, possui uma associação a um pseudo variável.
O Javacc (Java Compiler Compiler) é uma ferramenta bem similar aos geradores Lex e Yacc. Desenvolvida em java, a ferramenta permite análises sintáticas e léxicas, sendo que seu código gerado é de fácil interpretação para o ser humano. Sua implementação passa por três fases principais sendo: análise léxicas, análise sintática e geração de código ou execução. Essa ferramenta é um gerador de parser utilizado em aplicações java, que lê uma especificação da gramatica e a converte em um programa java que pode reconhecer se um determinado texto pertence a gramatica determinada.
...