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>
30 lines
1.4 KiB
Markdown
30 lines
1.4 KiB
Markdown
# 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-record.md),
|
|
[`../formato-asm.md`](../formato-asm.md).
|