Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Primeiras Noções para Criação de Compiladores


AceStryker
 Compartilhar

Posts Recomendados

Hoje ensinarei a vocês as primeiras noções de como criar um compilador, se você esta lendo isto é que como eu, também sente/sentiu curiosidade de saber como que fizeram o compilador que você usou hoje atarde, e no final de sua leitura, você terá uma ideia.

 

O que precisamos saber sobre um compilador é que ele é dividido em 4 partes:

 

Análise Lexical

Análise Semântica

Construção(Assembly)

Vinculação(linking)

 

Ensinarei como se faz a primeira e a terceira parte, a segunda é mais lógica e para não deixar o tópico muito grande pularei(ela é a usada com if/while etc) e o linking é um pouco mais chato então pularei também para não deixar o tópico muito técnico

 

A Análise Lexical

 

A análise lexical é a parte que pegamos a linha do código e desmembramos as informações, por exemplo:

WriteLn('Oi');

 

Desmembraria-mos em:

WriteLn -> Função

('') -> token

Oi -> parâmetro

; -> token

 

Agora a minha linguagem vou fazer o seguinte, a função será: ImprimaSoma Parâmetro1, Parâmetro2, parecido com o asm rsrs

 

Vamos no nosso delphi 7 e crie uma aplicação em console, nesta adicionaremos o código:

 

Essa função é a responsável por pegar o nome da função que a pessoa usou

É necessário se cadastrar para acessar o conteúdo.

 

Esta função daqui é a responsável por pegar o primeiro parâmetro usado na função

É necessário se cadastrar para acessar o conteúdo.

 

Esta função é a responsável por pegar o segundo parâmetro usado na função

É necessário se cadastrar para acessar o conteúdo.

 

Esta função é a responsável por interpretar as informações

É necessário se cadastrar para acessar o conteúdo.

 

Construção

 

Construção é como o nome já diz o que transforma um código em uma ação do computador, e ai esta a nossa função

 

E esta é a parte que executa a função:

É necessário se cadastrar para acessar o conteúdo.

 

E é isso, fizemos nosso suuuuuuper simples compilador(na verdade isso é mais um interpretador rsrs).Acho que você conseguiu identificar o que fizemos

 

Algumas dicas

 

Caso você queria imitar o UNIX C ou o Pascal que seus compiladores foram feitos com a mesma linguagem que o código que compilam(bootstrapping) sugiro que primeiro crie um compilador em uma outra linguagem para uma linguagem BETA ou restringida sua e depois disso criar um compilador para a sua linguagem final.

 

Existem programas como o Flex(ou Lex) e o Bison que podem facilitar a sua programação da linguagem, caso seja folgado sugiro que olhe estes.

 

Para um conhecimento mais profundo no assunto(debugging, linking etc) leia

É necessário se cadastrar para acessar o conteúdo.

 

Créditos

 

AceStryker e Jack W. Crenshaw, Ph.D. que me ensinou sobre o assunto :)

Link para o comentário
Compartilhar em outros sites

Bem legal.

Eu já tentei criar um compilador pelo VB (não,não estou inventando),porém,ele não reconhecia alguns comandos,e não dava pra importar namespaces.

Pro compilador ficar melhor em visual,eu daria uma dica: syntax highlight,para destacar as funções.

Link para o comentário
Compartilhar em outros sites

Bem legal.

Eu já tentei criar um compilador pelo VB (não,não estou inventando),porém,ele não reconhecia alguns comandos,e não dava pra importar namespaces.

Pro compilador ficar melhor em visual,eu daria uma dica: syntax highlight,para destacar as funções.

 

Syntax Highlight não é parte do compilador e sim do IDE

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.