Un sistema completo per la traduzione di TypeScript nel linguaggio miniSL composto da tre componenti principali: Annotator, Extractor e Checker. Le componenti possono essere usate singolarmente o tutte insieme attraverso la pipeline definita.
prgTesi/
├── extractor/ # Componente per l'estrazione del codice miniSL
│ ├── annotatedCode/ # File di input annotati
│ ├── config.json # Configurazione extractor
│ ├── extractor.ts # Codice principale
│ └── output.txt # Output generato
├── annotator/ # Componente per l'annotazione automatica
│ ├── inputCode/ # File di input TypeScript
│ │ └── input.ts # File di input principale
│ ├── config.json # Configurazione annotator
│ ├── annotator.ts # Codice principale
│ └── output.txt # Annotazioni generate
├── miniSLChecker/ # Componente per la verifica del codice miniSL
│ ├── miniSLGrammar/ # Grammatica ANTLR
│ ├── checker.ts # Codice principale
│ └── miniSLCode.txt # Codice miniSL da verificare
├── .vscode/ # Configurazione VS Code
│ ├── launch.json # Configurazione debug
│ └── tasks.json # Task VS Code
├── package.json # Configurazione principale del progetto
├── Makefile # Automazione con Make (Windows/Linux/macOS)
├── build.bat # Script batch per Windows
├── .gitignore # File da ignorare in git
└── README.md # Questo file
Si consiglia l'utilizzo di VS Code, in quanto sicuramente supportato.
- Node.js (versione 16 o superiore)
- npm
- Make (per Linux/macOS/Windows con WSL o MinGW)
- Git (per version control)
Usando Make (raccomandato):
make setupManuale:
npm install
make install # Installa dipendenze di tutti i componenti
make build # Compila tutti i componentiEstrae il codice miniSL dal codice annotato TypeScript.
Uso singolo:
# Con Make
make build-extractor
make extract INPUT_FILE=../annotator/output.txt ENTRY_POINT=main
# Diretto
cd extractor
npm run build
node dist/extractor.js ../annotator/output.txt mainGenera automaticamente le annotazioni miniSL per il codice TypeScript.
Uso singolo:
# Con Make
make build-annotator
make annotate INPUT_FILE=inputCode/input.ts ENTRY_POINT=main
# Diretto
cd annotator
npm run build
node dist/annotator.js inputCode/input.ts output.txt mainNote: L'annotator prende in input file TypeScript parzialmente annotati (con solo call e defCall), un entry point specifico, e genera file completamente annotati salvati come output.txt.
Verifica la correttezza sintattica del codice miniSL.
Uso singolo:
# Con Make (file di default)
make build-checker
make check
# Con Make (file personalizzato)
make check INPUT_FILE=path/to/minisl/file.txt
# Diretto
cd miniSLChecker
npm run build
node dist/checker.js path/to/minisl/file.txtNote: Il checker accetta qualsiasi file contenente codice miniSL. Il file di default è l'output dell'extractor, ma può essere personalizzato per testare file miniSL specifici.
Il sistema miniSL segue questa pipeline integrata:
File TypeScript File TypeScript Codice miniSL
parzialmente annotato → completamente annotato → + Checking
(input.ts) (output.txt) (output.txt)
↓ ↓ ↓
ANNOTATOR → EXTRACTOR → CHECKER
Dettaglio del processo:
- ANNOTATOR:
input.ts→annotator/output.txt(annotazioni complete) - EXTRACTOR:
annotator/output.txt→extractor/output.txt(codice miniSL) - CHECKER:
extractor/output.txt→ verifica sintattica (output console)
Esegue tutti e tre i componenti in sequenza:
Usando Make:
make pipeline
# oppure con parametri personalizzati
make pipeline ENTRY_POINT=myFunctionManuale:
# Step 1: Annotazione completa (partial → complete annotations)
make annotate ENTRY_POINT=main
# Step 2: Estrazione miniSL (complete annotations → miniSL code)
make extract INPUT_FILE=../annotator/output.txt ENTRY_POINT=main
# Step 3: Verifica sintattica
make checkTutti i comandi sono stati testati e verificati su Windows con PowerShell.
| Comando | Descrizione | Esempio |
|---|---|---|
make help |
Mostra l'aiuto con tutti i comandi disponibili | make help |
make install |
Installa tutte le dipendenze | make install |
make build |
Compila tutti i componenti | make build |
make clean |
Pulisce i file di build | make clean |
make setup |
Installazione + build completo | make setup |
make pipeline |
Esegue la pipeline completa (annotate → extract → check) | make pipeline |
make annotate |
Esegue l'annotator con entry point specificato | make annotate ENTRY_POINT=main |
make extract |
Esegue l'extractor | make extract ENTRY_POINT=main |
make check |
Esegue il checker su file miniSL specificato | make check INPUT_FILE_CHECKER=myfile.txt |
make check-standalone |
Esegue il checker su miniSLCode.txt predefinito |
make check-standalone |
make dev-annotator |
Build + esecuzione rapida annotator | make dev-annotator |
make dev-extractor |
Build + esecuzione rapida extractor | make dev-extractor |
make dev-checker |
Build + esecuzione rapida checker | make dev-checker |
make test |
Esegue test completo su tutti i componenti | make test |
Nota: I comandi Make sono raccomandati. I comandi NPM sono disponibili per compatibilità ma potrebbero non gestire tutti i percorsi correttamente.
| Comando | Descrizione |
|---|---|
npm run build |
Compila tutti i componenti (usa make build invece) |
Il sistema supporta parametri flessibili per tutti i componenti.
| Variabile | Componente | Default | Descrizione |
|---|---|---|---|
INPUT_FILE |
Checker/Annotator/Extractor | myDir\myFileName.txt |
Path del file che fa da input al componente |
ENTRY_POINT |
Annotator/Extractor | main |
Funzione entry point per l'analisi |
Annotator con file personalizzato:
make annotate INPUT_FILE=./inputCode/input3.ts ENTRY_POINT=myFunctionExtractor con file personalizzato:
make extract INPUT_FILE=./myAnnotatedFile.ts ENTRY_POINT=customEntryChecker con file miniSL personalizzato:
make check INPUT_FILE=path/to/mycode.minislPipeline completa con entry point personalizzato:
make pipeline ENTRY_POINT=customFunctionCombinazione di parametri personalizzati:
make pipeline INPUT_FILE=./inputCode/input4.ts ENTRY_POINT=specialFunctionIl progetto include configurazioni per VS Code:
Configurazioni disponibili:
- Debug Annotator: Debug del processo di annotazione
- Debug Extractor: Debug del processo di estrazione
- Debug Checker: Debug del processo di verifica
Per usare il debug:
- Apri VS Code nella cartella del progetto
- Vai a "Run and Debug" (Ctrl+Shift+D)
- Seleziona la configurazione desiderata
- Premi F5 per avviare il debug
# Extractor
cd extractor && npm run build
# Annotator
cd annotator && npm run build
# Checker
cd miniSLChecker && npm run build# Build rapido + esecuzione
make dev-extractor
make dev-annotator
make dev-checkermake test # Testa tutti i componenti con file di esempioIl comando test Esegue:
- Build di tutti i componenti
- Test dell'annotator con file di default
- Test dell'extractor sull'output dell'annotator
- Test del checker sull'output dell'extractor
- Test standalone del checker su
miniSLCode.txt
Output di esempio del test:
- Annotator: genera annotazioni complete e salva in
output.txt - Extractor: estrae codice miniSL e salva in
output.txt - Checker: verifica sintattica con messaggio "Checking completed successfully" o errori riscontrati
annotator/inputCode/input.ts- File di input principale per l'annotatorannotator/inputCode/input4example.ts- Esempio di file parzialmente annotato
annotator/output.txt- Output dell'annotator (annotazioni complete)extractor/output.txt- Output dell'extractor (codice miniSL)
annotator/config.json- Configurazione per l'annotatorextractor/config.json- Configurazione per l'extractorminiSLChecker/miniSLGrammar/miniSLGrammar.g4- Grammatica ANTLR per miniSLannotator/dist/- Codice compilato dell'annotatorminiSLChecker/dist/- Codice compilato del checker- File di output personalizzabili tramite parametri
# Pulisci e ricompila
make clean
make build# Reinstalla tutte le dipendenze
make clean
make installMake è supportato su Windows con WSL, MinGW, o strumenti simili. Se non disponibile:
-
Installa Make tramite chocolatey:
choco install make
-
Oppure usa comandi diretti:
# Setup manuale npm install cd annotator && npm install && npm run build && cd .. cd extractor && npm install && npm run build && cd .. cd miniSLChecker && npm install && npm run build && cd ..
Il progetto include un .gitignore configurato per:
- File node_modules
- Directory di build (dist/)
- File di output della pipeline (*.txt)
- File temporanei e cache
- File di configurazione locali
Per inizializzare git:
git init
git add .
git commit -m "Initial Compiler setup"- Fork del repository
- Crea un branch per la tua feature (
git checkout -b feature/nuova-feature) - Testa le modifiche con
make testemake pipeline - Commit le modifiche (
git commit -am 'Aggiunge nuova feature') - Push al branch (
git push origin feature/nuova-feature) - Crea una pull request