wiki:Documentazione

Version 2 (modified by soujak, 18 years ago) (diff)

--

Variante 1 - Prodotti estendibili

Introduzione

  • una sorta di framework per lo sviluppo di linguaggi a partire da MiniScheme?
  • prodotti aggiungibili a run-time come a tempo di compilazione -> (prototype factory and old factory) under template factory
    • unica interfaccia esposta al cliente per la creazione dei prodotti
  • riduzione del consumo di memoria: singleton per il factory manager (non per il prototype, cosi il cliente ...) cosiccome per l'old-factory.
  • facilitazione della configurazione dei prodotti al solo tempo di costruzione: ai vari metodi create e' sempre passata una lista di argomenti. Per quanto concerne la necessita' di configurare i prototipi sara' il cliente stesso a provvedere ridefinendo il metodo create della prototype factory.

Variante 2 - Operazioni estendibili

Introduzione

  • una sorta di framework per lo sviluppo di interpreti per il linguaggio Minischeme
  • estendibilita' delle operazioni -> rendere indipendente il modello dalle relative operazioni (attaccare il concetto di incapsulamento fra dati e operazioni, croce e delizia del paradigma a oggetti) -> mezzi utilizzati: esternare ogni algoritmo dal modello e dove possibile, rendere le operazioni modualari

Modello

  • numero di costrutti non soggetto a cambiamenti -> factory under singleton
  • le api di manipolazione permettono al visitor l'attraversamento dell'albero
  • (albero eterogeneo && obiettivi di iterazione e visita polimorfica) -> aggiunta di Entity per permettere al cliente completa liberta' sebbene all'Interpreter interessino solo Expression (e Definition?)
  • implementazioni di default come per Value
  • api di manipolazione generica implementate con enumerazioni invece che con index per aumentare la tipizzazione

Visitor

  • la visita e' gestita in maniera autonoma dal visitor, che restituisce il controllo soltanto una volta terminato per intero la visita
  • uso di campi interni per permettere il passaggio dell'ambiente di valutazione (un'informazione indispensabile)
  • metodo visit() overloaded in modo da demandare alla vm la selezione dei metodi nel caso si voglia trattare con Entity

Iterator

  • iterator esterni il cliente ha in mano il controllo dell'iterazione
  • l'algoritmo di attraversamento risiede all'interno dell'iterator e non all'interno del modello per perseguire l'estendibilita' delle operazioni richieste
  • modularizzato in ModelIterator (iteratore sull'intero modello) ed EntityIterator (iteratore sui figli di una entita')