Modulo per il supporto della lingua italiana, utilizzabile indipendentemente dalla Libreria Standard. Non presente nell’originale ALAN Standard Library v2.1 di Anssi Räisänen. Creato da Tristano Ajmone, © 2018, Artistic License 2.1.

Introduzione

Questo modulo della libreria è il cuore del supporto della lingua italiana in Alan. È stato progettato come un modulo a sé stante, indipendente dal resto della libreria, di modo che possa essere utilizzato anche al di fuori di essa per creare avventure in italiano senza l’infrastruttura della libreria standard, usufruendo solo del codice base per la grammatica italiana.

Per i suddetti motivi, tutti il codice necessario per implementare la lingua italiana è contenuto in questo modulo.

Dato che questo modulo è concepito per essere usato anche al di fuori della libreria, verrà inclusa una documentazione dettagliata su come utilizzarlo.

Guida all’uso

Per poter utilizzare correttamente la lingua italiana in Alan è necessario comprendere come funziona internamente questo modulo.

La documentazione non è ancora completa…​

Attributi grammaticali delle entità

Questo modulo definisce una serie di attributi sulla classe entity che serviranno a tracciare il genere ed il numero di ciascuna istanza, ed altre informazioni grammaticali utili ai fini di una messaggistica dell’avventura corretta. Essendo questi definiti sulla classe entity, saranno eridati automaticamente da ognuna delle classi native di Alan, e quindi presenti su ogni instanza del gioco (cose, oggetti, attori, luoghi) e finanche sulle classi letterali literal, string, e integer.

Ai fini pratici di un’avventura, le classi di maggior interesse per un autore saranno ovviamente gli oggetti e gli attori, le cui instanze dovranno sempre essere inizializzate correttamente per garantire una messaggistica consona al loro genere e numero. In casi meno frequenti, ci si troverà anche a dover impostare gli attributi grammaticali su istanze di entità e/o luoghi. Le classi letterali (che non ammettono né instanze né sottoclassi) non hanno rilevanza pratica ai fini della grammatica italiana, sebbene esse eriditino tali attributi di riflesso in quanto sottoclassi di entity.

La necessità di definire questi attributi direttamente su entity è anche dettata dal fatto che per poter usufruire di essi nelle clausole sintattiche dei verbi (e in altri contesti di esecuzione condizionale) è indispensabile garantire che siano presenti in ogni possibile istanza assoggettabile a quel contesto d’esecuzione.

Valori predefiniti

I valori predefiniti su entità sono quelli di un oggetto maschile singolare con articolo “il”. Fatta eccezione per alcune classi specializzate della libreria, che definiscono articoli con numero e/o genere diversi (femmina = "la", maschi = "i", femmine = "le"), l’onere di specificare un corretto articolo su ogni istanza dell’avventura ricade sull’autore.

ADD TO EVERY ENTITY

  IS NOT plurale.
  IS NOT femminile.

  HAS NOT nome_proprio.

  HAS articolo "il".

  HAS vocale "o".

  HAS prep_DI "del".
  HAS prep_A  "al".
  HAS prep_DA "dal".
  HAS prep_IN "nel".
  HAS prep_SU "sul".

Fatta eccezione per gli attributi articolo e nome_proprio, questi attributi sono destinati alla sola lettura, poiché i loro valori saranno settati automaticamente su ciascuna istanza durante l’inizializzazione, in base ai valori di articolo e nome_proprio della medesima.

Ora spiegheremo nel dettaglio la funzione di questi attributi e come debbano essere usati dagli autori di avventure.

Articolo di riferimento

Ogni istanza possiede l’attributo articolo che ne specifica l’articolo determinativo ad essa associato. Questo attributo viene utilizzato dalla libreria per inizializzare le istanze del gioco: in base ad esso il modulo Italian sarà in grado di dedurre il genere ed il numero dell’istanza, e imposterà tutte le sue proprietà grammaticali con i valori appropriati.

L’autore deve semplicemente specficare l’articolo determinativo del sostantivo, e la libreria farà tutto il resto. L’unica eccezione è l’articolo "l'", che può rifererirsi sia a un sostantivo maschile che femminile; per questo articolo l’autore dovrà specificare IS femminile nel caso di sostantivi femminili, altrimenti la libreria presumerà che si tratti di un sostantivo maschile.

Dopo l’inizializzazione, l’attributo articolo non viene più utlizzato in alcun modo.

La libreria non ricorre mai all’attributo articolo per stampare l’articolo di un istanza nei messaggi, e neanche gli autori dovrebbero farlo. L’attributo articolo è solo un mezzo per inizializzare correttamente tutta una serie di attributi e proprietà delle istanze, tra cui anche DEFINITE/INDEFINITE ARTICLE.

Esempi pratici

Supponiamo di voler creare i seguenti oggetti: un palloncino, una mela, un albero e un’arancia.

Per il palloncino non sarà necessario specificare l’articolo, dato che è il medesimo del predefinito (“il”):

The palloncino IsA object
End the.

Per creare la mela:

The mela IsA object
  Has articolo "la".
End the.

Quanto all’albero e l’arancia, entrambi hanno il medesimo articolo (“l'”), e in questo caso sarà necessario specificare il genere per l’arancia, altrimenti il modulo Italian presumerà si tratti di un oggetto maschile:

The albero IsA object
  Has articolo "l'".
End the.

The arancia IsA object
  Has articolo "l'".
  Is femminile.
End the.

L’articolo “l'” femminile è l’unico a richiedere di definire manualmente il genere dell’istanza, poiché il modulo non è in grado di distinguere tra maschile e femminile senza tale intervento.

Nome proprio

Sezione non ancora disponibile…​

Vocale per accordo aggettivi

Sezione non ancora completata…​

L’attributo vocale contiene la vocale finale di riferimento per gli aggettivi che seguono la forma “o/a i/e” nell’accordo di genere e numero.

Anche vocale sarà inizializzato automaticamente dalla libreria, basandosi sul valore di articolo dell’istanza.

Questo attributo semplifica molto la corretta rappresentazione di aggettivi nei vari messaggi della libreria poiché consente di stampare direttamente questo attributo come ultima vocale dell’aggetivo, aniziché dover eseguire controlli sul genere e sul numero dell’istanza in oggetto, riducendo quindi drasticamente la lunghezza del codice all’interno dei verbi. Inoltre, questo attributo potrà essere impiegato anche dagli autori stessi, poiché la sua utilità non è limitata all’uso interno che ne fa la libreria.

Preposizioni articolate

Grazie a questi attributi, nei messaggi della libreria (e delle avventure) è possibile recuperare le corrette preposizioni articolate da usare con ciascuna istanza.

Sezione non ancora completata…​

Inizializzazione attributi

Sezione non ancora disponibile…​

Predefined Player Words

Le predefined Player Words sono dei gruppi di vocaboli del giocatore predefiniti in Alan (ossia, integrate nel compilatore stesso). Le loro definizioni variano in ciascuna delle lingue supportate nativamente da Alan. La libreria italiana utilizza la lingua inglese come base di partenza.

Queste sono le Player Words predefinite per la lingua inglese, suddivise in gruppi di appartenenza:

ALL:   all everything
AND:   and then
BUT:   but except
THEM:  them
NOISE: go the

Le Player Words delle varie lingue sono definite nel file sorgente di Alan compiler/wrd.c (riga 182).

CONJUNCTION WORDS

AND: and then

Le conjunction words (parole di congiunzione) consentono al parser di interpretare correttamente i comandi del giocatore che fanno riferimento a più oggetti, o le sequenze di comandi indipendenti combinati in una sola riga di comando. Esempi:

  • "prendi la mela E la pera"

  • "prendi la mela E prendi la pera"

  • "prendi la mela POI prendi la pera"

  • "prendi la mela E POI prendi la pera"

SYNONYMS e, poi = 'and'.

NOISE WORDS

NOISE: go the

Le noise words (parole rumore) vengono ignorate dal parser che le tratta come rumore di sottofondo.

Articoli determinativi

Definiamo tutti gli articoli determinativi come sinonimi della noise word 'the' affinché vengano ignorati nel parsing dei comandi del giocatore, di modo che comandi come "prendi LA mela" vengano interpretati come "prendi mela".

Nel caso di articoli con l’apostrofo, che vanno a formare un singolo lessema con il sostantivo cui si riferiscono, il parser di Alan prima fallirà nel riconoscere il lessema (es. l’albero) ma, appurata la presenza di un apostrofo nel lessema, prima di generare un errore eseguirà un ulteriore tentativo spezzando in due il lessema originale nel punto successivo al primo apostrofo, e ritenterà il parsing dei due nuovi lessemi (l' + albero). Durante il secondo tentativo, l’articolo l' verrà soppresso in quanto noise word, e albero verrà ora riconosciuto come il nome dell’oggetto corrispondente.

SYNONYMS il, lo, la, 'l''', i, gli, le = 'the'.

ALL WORDS

ALL: all everything
SYNONYMS tutto, tutti, tutte = all.

EXCEPT WORDS

BUT: but except

Le except words (parole di eccezione) operano congiuntamente alle ALL words per escludere alcuni oggetti dall’insieme. Esempi:

  • "lascia TUTTO TRANNE la mela"

  • "lascia TUTTO ECCETTO la mela"

  • "lascia TUTTO ESCLUSA la mela"

  • "lascia TUTTO ESCLUSO il mango"

  • "lascia TUTTO ESCLUSI il mango e la mela"

  • "lascia TUTTO ESCLUSE la mela e la pera"

SYNONYMS tranne, eccetto, escluso, esclusa, esclusi, escluse = except.

THEM WORDS

THEM: them

Le them words rappresentano gli oggetti multipli utilizzati in un comando precedente. Esempio:

  • "remove the hat and the scarf then drop THEM"

Questo tipo di riferimento a oggetti multipli è consentito solo nei comandi che supportano parametri multipli. L’interprete restringerà il campo dei parametri idonei all’inclusione nel referente in base alle regole di scoping.

Preposizioni articolate

La libreria definisce dei sinonimi per trasformare le preposizioni articolate nelle corrispettive preposizioni semplici (es. delladi).

Solo alcune preposizioni (di|a|da|in|con|su) hanno un’applicazione practica nelle avventure testuali, e non tutte le forme contratte delle preposizioni articolate sono implementabili. La seguente tabella riporta tra parentesi le forme contratte non supportate, e in corsivo quelle che non subiscono sostituzioni nel parsing:

il lo la l' i gli le

di

del

dello

della

dell'

dei

degli

delle

a

al

allo

alla

all'

ai

agli

alle

da

dal

dallo

dalla

dall'

(dai)

dagli

dalle

in

nel

nello

nella

nell'

nei

negli

nelle

con

(col)

(collo)

(colla)

con l'

(coi)

(cogli)

(colle)

su

sul

sullo

sulla

sull'

sui

sugli

sulle

per

(pel)

(pello)

(pella)

(pell')

(pei)

(pegli)

(pelle)

Il mancato supporto di dai è dovuto a un conflitto con l’imperativo del verbo dare, e si sta cercando una soluzione a questo.

Le forme contratte di con+articolo sono state tralasciate per via dei potenziali conflitti con altri vocaboli: collo (parte del corpo), colla (adesiva), cogli (verbo), colle (collina). L’implementazione di queste forme come sinonimi avrebbe impedito l’uso di quei vocaboli nelle avventure.

Le varie preposizioni con per (pel, pello, ecc.) sono state omesse poiché raramente usate oggi, così come altre forme arcaiche (gl’, e affini).

Nell’implementazione attuale sussistono comunque potenziali conflitti: dei (divinità), dallo/a/e (verbo), Nello/a (nomi propri), nei (cutanei). Ma all’atto pratico questi non costituiscono un problema reale per le AT, e simili occorrenze sono più rare nelle AT di quanto non lo siano nella vita reale, ed eventuali loro conflitti dovrebbero essere comunque gestibili.

Sull’argomento, si veda l’eccellente articolo di Max Bianchi:

Adesso, definiamo i vari sinonimi.

“DI” + Articolo

SYNONYMS
  del, dello, della, 'dell''', dei, degli, delle = di.

“A” + Articolo

SYNONYMS
  al, allo, alla, 'all''', ai, agli, alle  = a.

“DA” + Articolo

SYNONYMS
  dal, dallo, dalla, 'dall''', dall, dagli, dalle  = da.

La preposizione dai è stata omessa dalla lista di sinonimi poiché creava conflitto con la forma imperativa del verbo “dare”, causando l’errore di compilazione:

333 E : The word 'dai' is defined to be both a synonym and another word class.

Sto ancora cercando una soluzione ottimale al problema.

“IN” + Articolo

SYNONYMS
  nel, nello, nella, 'nell''', nei, negli, nelle, dentro = 'in'.

“SU” + Articolo

SYNONYMS
  sul, sullo, sulla, 'sull''', sui, sugli, sulle, sopra = su.

TODO

Questa sezione contiene l’elenco delle cose da fare per completare il modulo della grammatica italiana.

Check-list generale

Lista della spesa per le varie cosucce da fare:

  • Risolvi conflitti con verbo dai_a che prevenie SYNONYMS dai = da..

Check-list per Doxter

Finisci di trasformare commenti in documentazione Doxter:

  • Aggiungi esempi pratici di codice:

    • Definizione articolo.

    • Uso attributi preposizioni (es. SAY mia_AT:prep_IN.).

    • Istanze attore con nome proprio.