Skip to content

Project 10 — Pointer and Reference Types#3

Open
rafael-pf wants to merge 11 commits into
rbonifacio:mainfrom
vlsmcin:main
Open

Project 10 — Pointer and Reference Types#3
rafael-pf wants to merge 11 commits into
rbonifacio:mainfrom
vlsmcin:main

Conversation

@rafael-pf
Copy link
Copy Markdown

Grupo

  • Daniel Silvestre
  • João Pedro Barbosa
  • Marcelo Arcoverde
  • Rafael Paz
  • Vinicius Lima

Contexto (Projeto 10 — fase Parser)

Este PR cobre o escopo da célula Parser em docs/09-projects.md (Projeto 10 — Pointer and Reference Types): notação T*, expressão de endereço &…, desreferência *… e atribuição através de desreferência.
Não implementa a semântica das células Type checker nem Interpreter da mesma tabela; nesses módulos, AddrOf e Deref falham de forma explícita até fases posteriores.

Parser e AST

  • Tipos ponteiro para escalares: int*, float*, bool*, str* (parâmetros, tipo de retorno e declarações), com Type::Pointer na AST.
  • Novos nós de expressão: AddrOf e Deref.
  • Operadores & e * na cadeia unária (coerente com a precedência existente, incluindo * multiplicativo vs. desreferência).
  • Nota: o parser ainda não impõe a regra do enunciado “só variáveis com &”; isso corresponde à fase Type checker no guia.

Atribuição (lvalue)

  • O parser aceita alvos de atribuição da forma *identificador (árvore como Deref(Ident)), suficiente para casos como *p = *p + 1 nos fixtures.
  • Nota: ainda não é o caso geral *expr com expressão arbitrária no lado esquerdo (por exemplo *(p) como lvalue composto além do padrão atual).

Type checker e interpretador

  • Ramos explícitos que devolvem erro claro para AddrOf / Deref (“not implemented yet”), alinhados ao roadmap em três estágios do projeto 10.

Testes e contrato

  • Testes unitários do parser (tests/parser.rs).
  • Testes de integração com tests/fixtures/pointer_init.minic, pointer_function.minic e pointer_feature.minic (tests/program.rs).
  • Especificação OpenSpec: openspec/specs/pointers/spec.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants