Git Product home page Git Product logo

compilers's Introduction

Description

Repositório exclusivo para realizar a matéria de compiladores na instituição CEFET-MG

Compiladores x Interpretadores

Basicamente, um compilador é um programa (ou um conjunto deles) como qualquer outro, porém seu objetivo principal é o de traduzir todas as suas linhas de código para outra linguagem – normalmente, uma de alto nível para outra de baixo nível (Assembly ou linguagem de máquina). Delphi, Rust, C++ e Swift figuram na lista de compiladas.

Um interpretador também é um programa, mas, ao contrário do compilador, ele não converte o código todo para linguagem de máquina de uma vez. Ele executa diretamente cada instrução, passo a passo. MATLAB, Lisp, Perl e PHP são apontadas como interpretadas.

Em suma, a grande diferença está na forma de execução. Enquanto um compilador analisa todo o código a fim de traduzi-lo de uma vez (muitas vezes, o resultado é um arquivo executável ou uma biblioteca), o interpretador faz esse trabalho de conversão aos poucos, sempre que uma declaração ou função é executada, por exemplo.

Como resultado, linguagens compiladas tendem a executarem mais rapidamente, visto que sua aplicação já está toda convertida em linguagem de máquina. Por outro lado, em códigos muito extensos pode haver um maior tempo de espera para iniciar a real execução da aplicação. Já as linguagens compiladas perdem um pouco de performace, visto que elas são compiladas/interpretadas linha a linha no momento da execução. Porém para códigos muito extensos é possivel visualizar a real execução da aplicação em bem menos tempo em relação a outras aplicação desenvolvidas com linguagens compiladas.

Análise Lexica

Introductio

Na ciência da computação, análise léxica, lexing ou tokenização é o processo de converter uma sequência de caracteres (como em um programa de computador ou página da web) em uma sequência de tokens (strings com um significado atribuído e, portanto, identificado). Um programa que realiza análise lexical pode ser denominado lexer, tokenizer, ou scanner, embora scanner também seja um termo para o primeiro estágio de um lexer. Um lexer geralmente é combinado com um analisador, que juntos analisam a sintaxe de linguagens de programação, páginas da Web e assim por diante.

Description

O suposto diretório trata a análise Léxica de uma linguagem de programção. Para tal feito, foi elaborado um 'compilador' em python e um código em c++ que simula uma calculadora simples. Como explicado na introdução, a ideia do compilador é separar todo o código em categorias de token que façam sentido para o contexto da linguagem. As categoria abordadas no código são:

  1. reserved: São um conjunto de palavras reservadas (tem funções definidas dentro da linguagem - if, else, while...)
  2. assignment: Operadores de atribuição da linguagem (=, <<)
  3. delimiters: Delimitam o inicio ou fim de algo dentro da linguagem ({,},(,),[,])
  4. operator: São responsaveis por realizar operações matematicas dentro da linguagem
  5. comparation: São responsaveis por realizar operações logicas
  6. literal: São um conjunto de caracteres delimitados por aspas (são normalmente textos ou strings - "my-text")
  7. number: São valores numericos definidos pelo dominio Real.

References

Compilador x Interpretador Analise Lexica

compilers's People

Contributors

sr-souza-dev avatar

Stargazers

 avatar

Watchers

 avatar  avatar  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.