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?
Entrada
Lexer
Parser
Semântica
4+9
INT MAIS INT
Estrutura válida
Avalia normalmente
5+-
INT MAIS MENOS
Erro sintático: falta operando
Não chega aqui
5$
Erro léxico em $
Não chega aqui
Não chega aqui
x=5*z
Tokens válidos
Estrutura válida
Erro 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
Identificador
Valor
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.
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.