Repository navigation
Etapa 3: analisador semântico (AP 2) em Python e em C - #1
Merged
Merged
Conversation
- tabela de símbolos com pilha de escopos (tabela_simbolos.py/.c) e analisador semântico em duas passagens (semantico.py/.c): nomes, escopos, tipos, chamadas, retornos, contexto de laço e retorno em todos os caminhos - diagnósticos SEM001-SEM013 com o texto do gabarito da AP 2, mais SEM014 (categoria), SEM015 (divisão por zero constante) e SEM016 (vetores) - minic.py e minic.c na raiz, como os scripts oficiais da AP 2 chamam - parser aceita destino genérico de atribuição só no pipeline semântico (SEM013); a etapa 2 continua com o mesmo comportamento - material da AP 2 organizado em ref/ (enunciado, scripts e 20 testes) - 15 casos próprios, runner com equivalência C × Python e etapa 3 no CI Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dentro de cadeias, literais de caractere e comentários, os bytes de continuação de uma sequência UTF-8 válida avançavam a coluna no C, e os diagnósticos semânticos seguintes na mesma linha apontavam uma coluna a mais por byte extra em relação ao Python. Resolve a pendência 1.5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ios bytes O Python aceitava 'é' como um caractere e o C rejeitava com "caractere com tamanho inválido" (contava 2 bytes). Agora os dois aceitam. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Implementa o analisador semântico da AP 2, nas duas linguagens, com cada componente em arquivos separados, como pedem as orientações de entrega:
tabela_simbolos.py/tabela_simbolos.c): uma pilha de escopos com sombreamento.semantico.py/semantico.c), em duas passagens:int → float,char → int);break/continue.minic.pyeminic.cna raiz, que é como os scriptstestes_semanticos_{py,c}.shchamam.diffexato. O pacote oficial está marcado como-textno.gitattributes.destino_generico, usada só no pipeline semântico, para3 = n;virar SEM013 (caso oficial 20). O comportamento da etapa 2 não muda.Correções no lexer C, encontradas pela equivalência
'é'passa a ser aceito como um caractere, como no Python.Organização e documentação
ref/(enunciado, scripts etestes-oficiais/testes-semanticos-20). Antes disso, o material das aulas 14 e 15 já tinha sido organizado.docs/semantica.mdtraz as regras, as decisões de projeto e o catálogo completo de mensagens.docs/resultados-etapa3.mdregistra os resultados. READMEs,docs/etapas.mdePENDENCIAS.mdforam atualizados.minic.ccom-Werror.Testes (CI, Ubuntu + gcc)
testes_semanticos_py.sh/testes_semanticos_c.sh(oficiais AP 2)tests/run_semantic_tests.py(oficiais + 16 próprios + equivalência em 103 programas)tests/run_parser_tests.pyLC_ALL=C)🤖 Generated with Claude Code