Files
prep-step/docs/decisioni/0003-parser-esatto-con-fallback.md
T
davideandClaude Sonnet 5.5 ccfa00ff52 Aggiungi docs-as-code: indice Diátaxis, nuovi doc e controllo automatico
Nuovi doc: tutorial-primo-giro, risoluzione-problemi, sviluppo, rilascio,
glossario e registro delle decisioni (docs/decisioni, 6 ADR). docs/README.md
e' l'indice per categoria e la tabella delle fonti uniche; il README di
root rimanda a sviluppo/rilascio invece di duplicarli.

scripts/CheckDocs.cs verifica link e ancore, <Version> contro CHANGELOG,
copertura di architettura.md e presenza di ogni doc nell'indice;
.markdownlint-cli2.jsonc configura il lint Markdown.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 08:05:10 +02:00

1.4 KiB

0003 — Parser esatto dei .asm con fallback euristico

Stato: accettata

Contesto

Il .asm Creo è un binario proprietario non documentato. La prima soluzione, un'euristica testuale (AssemblyComponentScanner), contava le occorrenze di stringhe candidate e produceva falsi positivi (riferimenti fantasma, componenti soppressi con placement residuo).

Inoltre la lista dei componenti della distinta non coincide con i file necessari a Creo per aprire l'assieme: ne servono di più (soppressi, riferimenti esterni). Se ne manca uno Creo risponde solo [-4] Dati di input non completi.

Decisione

Per reverse engineering si è decodificata la struttura a record (AsmRecordReader), validata contro BOM esportate da Creo. È il metodo preferito. L'euristica resta come fallback quando il parser lancia InvalidDataException, perché la validazione copre solo un campione di file. La fase 4 tiene tre liste separate (distinta, soppressi, riferimenti esterni) con regole di ricorsione diverse.

Conseguenze

  • Estrazione esatta sui file che rispettano il formato; nessun falso positivo da conteggio.
  • Due implementazioni da mantenere, per ora; l'euristica serve anche a due script.
  • Ogni caso strano diventa un test minimale costruito byte per byte.
  • Dettagli: ../formato-asm-record.md, ../formato-asm.md.