ClariCodeClariCode

# Curso online · Ciência da Computação

Compiladores

Construa um compilador do zero, fase por fase: análise léxica, sintática e semântica até a geração de código, com JFlex, JCup e o método que uso na universidade.

  • Acesso imediato
  • Acesso vitalício
  • Material atualizado
Prof. José Rui dando uma palestra
total = preco + 2 * qtd;
  • IDENTtotal
  • op=
  • IDENTpreco
  • op+
  • NUM2
  • op*
  • IDENTqtd
  • op;

preco + (2 * qtd): a precedência vem da gramática

  • preco real · qtd inteiro
  • 2 * qtd → inteiro
  • preco + inteiro → real (conversão)
  • total recebe real: ok
t1 = 2 * qtd
t2 = preco + t1
total = t2
análise léxica: o texto vira tokens

# se você já travou

Se compiladores já pareceram outro idioma, eu te entendo.

Na primeira vez que estudei Compiladores, tudo parecia complexo e distante da prática. Cada fase, léxica, sintática, semântica, era como um idioma novo.

Eu sabia que era uma das disciplinas mais importantes, mas me sentia perdido entre regras e árvores.

Depois de anos ensinando a disciplina, sei o que destrava: construir o compilador junto, uma fase de cada vez, vendo cada pedaço da teoria virar código.

antes

  • Regras de gramática sem saber para que servem
  • Parser como caixa-preta
  • Árvores e derivações só no papel
  • Projeto entregue sem entender como funciona

depois do curso

  • Escrever o analisador léxico com JFlex
  • Montar o parser com JCup, entendendo LL, LR e SLR
  • Construir a árvore sintática abstrata (AST)
  • Gerar código com o compilador que você fez

# como funciona

Um curso feito como as minhas aulas.

  • Um projeto real

    Você constrói um compilador para uma versão simplificada de Java, com as principais estruturas de controle.

  • Ferramentas de verdade

    JFlex e JCup do zero, com instalação passo a passo, roteiros guiados e códigos comentados.

  • Material vivo no Notion

    Videoaulas, esquemas, exercícios e os projetos de cada fase num material navegável, atualizado sem custo extra.

  • Professor de verdade

    Conteúdo que nasceu de mais de 15 anos ministrando Compiladores na universidade.

# o que você vai aprender

Do texto ao código, uma fase de cada vez.

O curso segue o caminho que o código percorre dentro do compilador. Cada fase termina com uma parte nova do seu compilador funcionando.

  • 6 fases
  • 32 tópicos
  • 4 prévias abertas
  1. Análise léxica

    o texto vira tokens, com JFlex

    Fases 1 e 2
  2. Análise sintática

    os tokens viram árvore: LL, LR, SLR e JCup

    Fases 2 e 3
  3. Análise semântica

    a árvore ganha significado: variáveis, if/else, erros

    Fases 3 e 4
  4. Geração de código

    AST, código intermediário, otimização e código final

    Fases 5 e 6
  1. 01

    fase 01

    Fundamentos e análise léxica

    Você entende o que um compilador faz, revisa o que precisa de LFA e define as regras da análise léxica.

    • 1.1. Introdução e conceitos básicos prévia aberta
    • 2.1. Análise léxica
    • 2.2. Análise léxica: revisão de LFA
    • 2.3. Derivação e árvore de derivação (parse tree)
  2. 02

    fase 02

    JFlex e algoritmos de parsing

    Você gera um analisador léxico com JFlex e entende First, Follow e os algoritmos LL, LR e SLR.

    • 2.4. JFlex
    • 2.4.1. Instalando e executando o JFlex
    • 2.5. JFlex avançado
    • 3.1. First e Follow prévia aberta
    • 3.2. Algoritmos LL e LR (tabela shift-reduce)
    • 3.3. LR: conjunto de transição e fechamento
    • 3.4. Algoritmo SLR
  3. 03

    fase 03

    Parser com JCup

    Você liga JFlex e JCup num parser de verdade e começa a dar significado às regras da gramática.

    • 3.6.1. Instalando o JCup
    • 3.6. Parser: JFlex + preparação do JCup
    • 3.7. Parser: JFlex + JCup
    • 4.1. Semântica: JCup com valores prévia aberta
    • 4.2. JCup: o bloco {: :}
    • Roteiro 07: bloco e precedência (expr, term, factor) prática
  4. 04

    fase 04

    Semântica e estruturas de controle

    Seu compilador entende variáveis, if/else e mensagens de erro, com o código organizado por princípios SOLID.

    • 4.3. JCup: IDENT e Designator
    • 4.4. JCup: parser code e variável global
    • 4.5. JCup: if
    • 4.5.1. JCup: if-else
    • 4.6. Notificação de erros
    • 4.6.1. Notificação de erros: o símbolo especial error
    • 4.7. Análise sintática com pilha
    • 4.8. SOLID: inversão de dependência prévia aberta
  5. 05

    fase 05

    AST e código intermediário

    Você constrói a árvore sintática abstrata com os padrões Factory e Visitor e gera código intermediário.

    • 5.1. Árvore sintática abstrata (AST)
    • 5.2. Árvore sintática abstrata: codificação
    • 6.2. Padrão Factory
    • 6.3. Padrão Visitor
    • 5.3. Geração de código intermediário
  6. 06

    fase 06

    Otimização e geração de código

    Você otimiza e gera o código final: o compilador completo, construído por você.

    • 5.4. Otimização de código
    • 5.5. Geração de código
Precisa revisar autômatos? Pratique de graça A análise léxica é feita de autômatos. No Construtor de Autômatos você desenha, testa palavras passo a passo e confere a definição formal, direto no navegador.

# na prática

“Você não vai mais só rodar código. Vai entender como ele funciona por dentro.”

— Prof. José Rui

  • JFlex
  • JCup
  • AST
  • geração de código
Capa do livro Compiladores: Princípios, Técnicas e Ferramentas, de Aho, Sethi e Ullman
O “livro do dragão”, referência clássica da disciplina. Aqui, cada capítulo vira código.

Depoimentos Youtube

Você pode conferir cada um (e muito mais) nos meus videos do canal

Edmundo Vicente
Edmundo Vicente @edmundovicente6781
há 1 ano

Boa noite, parei de assistir essa video aula pra fazer esse comentário, meu nobre você é nota 1000; meu professor de faculdade passou essa matéria para lá, nem se quer explicou com detalhes como você está fazendo, se não fosse pessoas dedicadas como você, nos alunos estaríamos perdidos.

Curtir
Responder
Prof. José Rui

Fala Edmundo, blz? É uma grande alegria receber comentários como o seu, pois só corrobora a verdade de que quando a gente trabalhar com afinco e determinação, a aula fica boa e facilita o entendimento dos meus alunos. Obrigado mesmo, pode ter certeza que isso me incentiva a produzir mais e melhores conteúdos!

Homenagens dos formandos

Alguns momentos que aquecem o coração

Turma 2018

Formandos 2018

Prof. José Rui

# quem ensina

Nasceu da sala de aula.

Sou José Rui, doutor em Ciência da Computação pela UFV e professor efetivo do IF Sudeste MG desde 2012.

Este curso nasceu das minhas aulas de Compiladores: o mesmo roteiro, os mesmos projetos e os mesmos exercícios que funcionaram com centenas de alunos.

Aqui você não vai copiar o trabalho de ninguém. Vai entender e construir cada fase com gosto, porque compiladores é um divisor de águas na carreira de quem programa.

“Criar um compilador te ensina a pensar como um engenheiro de software de verdade.”

# Homenageado pelas turmas de formandos de 2018, 2019, 2022, 2023 e 2024.

# acesso completo

Tudo o que você precisa para construir o seu compilador.

  • As 6 fases completas, com videoaulas, esquemas e exercícios no Notion
  • Um compilador para uma versão simplificada de Java, construído por você
  • JFlex e JCup do zero, com roteiros guiados e códigos comentados
  • Atualizações do material sem custo extra
  • Acesso vitalício

de R$ 197,90 por

R$ 59,90

você economiza R$ 138,00

Quero meu acesso

Pagamento seguro pela Hotmart. O acesso é liberado assim que a compra é confirmada.

# perguntas frequentes

Ficou alguma dúvida?

O curso é indicado para alunos de graduação?

Sim. O conteúdo é ideal para quem cursa Ciência da Computação, Sistemas de Informação ou áreas afins: serve para acompanhar a disciplina da faculdade e para reforçar o que ficou confuso, com uma abordagem mais visual e aplicada.

Preciso saber programar?

Sim. Começamos pela teoria, mas os projetos são práticos e as implementações são em Java, então é importante ter familiaridade com a linguagem ou estar disposto a acompanhá-la com atenção.

Qual compilador vamos construir?

Um compilador para uma versão simplificada da linguagem Java, com foco nas principais estruturas de controle. Como a base do Java é muito parecida com C, C++, JavaScript e PHP, depois disso você consegue criar compiladores para qualquer linguagem de estrutura parecida.

Preciso ter feito Linguagens Formais e Autômatos?

Ajuda, porque a análise léxica usa autômatos e expressões regulares. O curso revisa o que é necessário de LFA, e se quiser se aprofundar, o curso de Linguagens Formais e Autômatos é a base ideal.

Recebo acesso imediato?

Sim. Confirmado o pagamento, você recebe o acesso ao material completo no Notion, com videoaulas, esquemas, exercícios e os projetos de cada fase do compilador.

O acesso é vitalício?

Sim. O conteúdo é seu, sem prazo de expiração, e as atualizações chegam sem custo extra.

Quero estudar Compiladores