FUNDAMENTOS DE PARSING E CONSTRUÇÃO DE PARSERS

1.0 Introdução: Do Token à Árvore Sintática

1.1 Recapitulação: Análise Léxica vs Sintática

Análise Léxica (já implementada em aula anterior):

Entrada: "let x = 10 + 20;"
         ↓ Scanner/Lexer
Saída:   [LET] [IDENT:x] [EQ] [NUMBER:10] [PLUS] [NUMBER:20] [SEMICOLON]

Análise Sintática (nosso foco):

Entrada: [LET] [IDENT:x] [EQ] [NUMBER:10] [PLUS] [NUMBER:20] [SEMICOLON]
         ↓ Parser
Saída:
        letStatement
        ├─ keyword: let
        ├─ identifier: x
        ├─ symbol: =
        ├─ expression
        │  ├─ term: 10
        │  ├─ symbol: +
        │  └─ term: 20
        └─ symbol: ;

Diferença Crucial:


1.2 O Papel do Parser

Definição: Um parser (analisador sintático) é um programa que:

  1. Recebe: Sequência de tokens do scanner
  2. Valida: Verifica se a sequência obedece a gramática
  3. Constrói: Cria uma árvore de sintaxe (parse tree)
  4. Retorna: Representação estruturada do programa

Ilustração do Processo Completo:

┌─────────────────────────────────────────────────────────────┐
│              PIPELINE DE COMPILAÇÃO                         │
└─────────────────────────────────────────────────────────────┘

Código Fonte              Análise Léxica            Análise Sintática
("let x = 10;")     →   [LET, IDENT, EQ, ...]   →   Parse Tree (XML)
    ↓                           ↓                          ↓
  Strings                    Tokens                    Estrutura
 (caracteres)            (símbolos)                   (hierarquia)