KF Cadernos interativos
Compiladores
Aulas 03 e 09 · Laboratório

Lexer interativo

Digite uma expressão usando os tokens da linguagem construída em sala. O laboratório abaixo faz somente análise léxica: uma sequência de tokens pode existir e ainda ser rejeitada pelo parser.

Teste recomendado: compare 5+- com 5$. O primeiro é lexicamente tokenizável, embora sintaticamente inválido; o segundo contém um símbolo não previsto pelo lexer.
Aulas 03, 09 e Exercícios pré-P1

Diagnóstico: em qual etapa a expressão para?

EntradaLexerParserSemântica
4+9INT MAIS INTEstrutura válidaAvalia normalmente
5+-INT MAIS MENOSErro sintático: falta operandoNão chega aqui
5$Erro léxico em $Não chega aquiNão chega aqui
x=5*zTokens válidosEstrutura válidaErro semântico se z não existir na ST
Regra: erro lexical = caractere/padrão não reconhecido; erro sintático = tokens existem, mas não obedecem à gramática; erro semântico = estrutura está correta, mas o significado/estado é inválido.
Aulas 06–08 · AST

Avalie a AST de 4+7*3+8

Avance pelas etapas. O visual começa na AST e vai substituindo subárvores pelo valor calculado, sempre das folhas para a raiz.

Observe a árvore: o caminho destacado funciona como os caminhos animados no notebook de Grafos: primeiro a subárvore ativa ganha destaque; depois ela “colapsa” no resultado e a avaliação sobe um nível.
Aulas 04, 06 e 08

Leia a precedência diretamente na gramática

stmt → expr | ID = expr expr → expr + termo | expr - termo | termo termo → termo * fator | termo / fator | fator fator → INT | FLOAT | ID | ( expr )
Por que * tem prioridade sobre +?

Porque multiplicação está no andar termo, abaixo de expr. A soma fica mais próxima da raiz e é avaliada mais tarde.

Por que parênteses funcionam?

fator → ( expr ) permite voltar ao nível de expressão dentro dos parênteses, dando a esse agrupamento prioridade estrutural.

Exercício: qual é a AST conceitual de 2+3*4?
A raiz é +. O filho esquerdo é 2; o filho direito é a operação * com folhas 3 e 4. Isso representa 2+(3*4), não (2+3)*4.
Exercício: e a AST de (2+3)*4?
A raiz passa a ser *. O filho esquerdo é a operação + com folhas 2 e 3; o filho direito é 4. Os parênteses mudam a estrutura.
Aulas 09–10 · Exercício oficial pré-P1

Tabela de símbolos passo a passo

Este simulador usa exatamente a sequência do exercício pré-Prova 1. Avance uma linha por vez e observe a ST.

x = 3+9
y = 2+2
x = x - y
y = 3 + x
x = 5*z
IdentificadorValor
Aulas 04, 06 e 07

Treino: árvore de derivação × AST

Derivação

Você precisa mostrar as variáveis expr, termo, fator e as substituições até chegar aos terminais.

AST

Você preserva a estrutura operacional essencial: operadores como nós internos e números/variáveis como folhas.

1
Derivação completastmt → expr → termo/fator → tokens
2
AST abstraídaapenas números e operadores
Por que o parser enxerga tokens e não o texto original?
Porque a análise léxica acontece antes. O lexer transforma, por exemplo, 4+7*3+8 em uma sequência como INT MAIS INT VEZES INT MAIS INT. É essa sequência de categorias que a análise sintática confronta com a gramática.
Por que a AST é útil para análise semântica?
Porque a AST explicita a estrutura hierárquica da expressão. O interpretador pode avaliar subárvores, consultar variáveis e propagar resultados de baixo para cima sem carregar toda a árvore de derivação.