Code Monkey home page Code Monkey logo

compiladores's Introduction

Compiladores

Conteudo e Material relacionado a Aula de Compiladores

Sobre

Na maior parte dos casos, um Compilador é um programa que processa e analisa um ou mais arquivos a fim de traduzi-los para a linguagem de maquina que é entendida pelo processador. Nesse processo, o compilador faz uma analise lexica, síntatica e semantica do conteudo do arquivo para garantir que o processo de tradução não apresente falhas.
Em alguns casos o compilador apresenta tambem a otimização em tempo de otimização, para garantir que o tamanho do arquivo executavel e o tempo de tradução.
Por conta da necessidade de varios processos a separação por modulos (ou "separation of concerns"), gerando assim uma arquitetura melhor do projedo do compilador. Os modulos mais importantes dentro desse processo são 4 no total:

  • Análise Léxica -> Verificando o "erro de ortografia", em outras palavras, validando os tokens verificando se, por exemplo, eles pertencem a uma lista ou tabela para aquela linguagem.
  • Análise Sintatica -> Na qual, através de uma arvore binária, é analisado o posicionamento dos tokens que foram previamente validados.
  • Análise Semântica -> Apos a analise sintatica o compilador verifica processos como a validação do armazenamento de memoria ou tranformação de valores, geralmente sendo coisas que não fazem sentido.
  • Tradução -> Por final, o compilador faz a tradução do arquivo para a linguagem de maquina, interpretando e traduzindo os tokens para um executavel que possa ser reconhecido e entendido pelo sistema operacional e arquitetura do processador presente.

Existe um processo a mais que seria fazer a otimização, mesmo que seja um processo importante principalmente para programas com várias linhas, ela não é totalmente necessaria. O processo de compilação pode ser feito com VLIW (Very Long Instruction Word), onde uma instrução é repartida em varias unidades basicas que podem ser processadas em paralelo, e EPIC (Explicitly Parallel Instruction Computing), que é um set de instruções que utilizam pontos flutuantes e utiliza carregamento especulativo, predicação e paralelismo explicito.

Tokens

Dentro do texto apresentado foi falado sobre Tokens, um token é um segmento de simbolo ou texto que é manipulado por um analisador léxico, fornecendo significado ao texto e representando um atributo, podendo representar um bloco de execução, um valor de soma ou a separação de unidades.

compiladores's People

Contributors

guilhermerochas avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.