|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Questa decisione spetta a Jocchan. Io vorrei che il linguaggio fosse leggibile come l'inglese e senza parentesi.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#42 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Perfettamente d'accordo. Vediamo cosa dice Jocchan prima di iniziare.
Io intanto mi studio ANTLR...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#43 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Io sono assolutamente per gli spazi come unico tipo di separatori, senza virgole nè parentesi (al limite solo un ";" al termine dei comandi, ma se possibile meglio non avere nemmeno quello).
Giusto per capirci, ecco un esempio: Codice:
show bg Ice show character 1 Josh 325 248 show character 2 Kathy 525 248 move character 1 450 248 3 dialogue Josh \"Ciao, hai impegni stasera?\" anim character 2 37 dialogue Kathy \"Anvedi questo...\" flash screen #FFFFFF 10 start battle Josh Kathy Quote:
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#44 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
OK. Unica cosa, eviterei \" per indicare l'inizio e la fine di una stringa: lascerei soltanto '"', che è più "naturale / intuitivo".
P.S. ANTLR è una gran figata.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
In realtà avevo inserito \" perchè apparissero delle virgolette nel testo, considerando già gli spazi come separatori (il riconoscimento sarebbe iniziato subito dopo il primo parametro, e sarebbe terminato con il ritorno a capo)...
Ora, riflettendoci bene, le virgolette sono più propenso ad escluderle dal testo a video. Magari per il parsing della stringa basta un " prima ed un " dopo, cosa che aumenta la leggibilità dello script
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. Ultima modifica di Jocchan : 28-11-2005 alle 09:35. |
|
|
|
|
|
#46 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Jocchan, è proprio necessario che i nomi dei comandi debbano contenere spazi? così le parti del nome successive alla prima si confondono coi parametri...
inoltre per favore quando hai pronta una lista di comandi anche provvisoria scrivila qui |
|
|
|
|
|
#47 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ho un'idea: siccome le istruzioni che abbiamo definito possono contenere come parametri solamente numeri e stringhe, per evitare confusioni tra parametri e parti del nome del comando basta correggere alcune cose nel tuo script di prova: i nomi dei personaggi (Josh e Kathy) mettili tra virgolette doppie; inoltre toglici il backslash dietro le virgolette
|
|
|
|
|
|
#48 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Vedrò di stilare una lista, nel frattempo potete prendere per buona quella vecchia (solo con il ritocco delle virgolette per le stringhe)
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#49 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Con Jocchan si pensava per i dialoghi a comandi di questa forma:
Codice:
Josh says fast Hello, how are you? Everything's fine? end
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
fek...messo in quel modo è molto facile e veloce da implementare...
Che ne dite di mettere ogni parametro in una nuova riga ? Per i comandi con parametri variabili si legge fino a 'end'... Una cosa di questo tipo: Codice:
wait 3000 show background personaggio Josh says fast Hello, how are you? Everything's fine? end show 0001 Josh move character 0001 328 100 1 Semplificherebbe molto il matching dei comandi ed il parsing delle stringhe... |
|
|
|
|
|
#51 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
ma senti, il parser lo devo committare nel repository? oppure tengo solo la mia copia locale e ve lo incollo in un post del forum quando è finito? |
|
|
|
|
|
|
#52 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#53 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
L'idea di separare i vari parametri nelle varie righe mi sembra buona, però ho paura che si perda in leggibilità, quindi per ora eviterei questa soluzione. Stavo riflettendo piuttosto sul fatto che non credo ci possano essere problemi con i comandi costituiti da due parole: la seconda infatti può essere sempre considerata come un parametro della prima. Mi spiego meglio: - move character - move picture Character e picture possono essere considerati come dei parametri per il comando "move". Idem per "show", "delete" e "anim" (per il quale il parametro picture non ha molto senso, ma va bene lo stesso con character). Io sarei molto più orientato per dei comandi su una sola linea, insomma, credo sia più sintetico e più comodo da leggere e da scrivere.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#54 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
poi ho scoperto una classe Java che ci aiuta moltissimo nel parsing, presente sia in Java 1.4.2 che nell'1.5: StreamTokenizer, che serve a dividere in tokens un InputStream e a leggerlo token per token; con questa classe e con una sintassi così semplice diventa tutto uno scherzo fek, va bene se il progetto lo committo nel repository in una nuova directory con questo percorso extras/Spikes/71104/CommandParser ? |
|
|
|
|
|
|
#55 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#56 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Però con con l'esempio che hai proposto sorgono problemi con i generatori di parser "canonici". Ad esempio, dopo il token "fast" il testo è da prendere così com'è, tenendo conto soltanto dell' "end" + new line per indicare al fine di questo tipo di parsing. Con yacc non sarebbe tanto problematica la cosa, perché il lex è un "modulo" a se stante, per cui è facile scrivere degli analizzatori lessicali che cambino anche radicalmente il loro comportamento in base al contesto attuale. Ad esempio, io ho sempre scritto i lex "a mano", passando i token al parser yacc, e potendo in qualsiasi momento mostrare o nascondere dei token "al volo". Ad esempio in linguaggi come il pascal, dov'è possibile definire roba come questa: Codice:
procedure Pippo; cdecl; external; begin end; Con ANTLR è un po' diverso, perché il lexer lo puoi generare direttamente nel file della grammatica del parser. Anzi, è esattamente quello che si fa normalmente: non ho ancora visto esempi di lexer "scritti a mano" e utilizzati dalla classe che del parser (darò un'altra occhiata alla documentazione e ai forum). Comunque in generale linguaggi "umani" comportano dei problemi quando si "mischiano" quelli che sono dei token da riconoscere dai "dati", questo è poco ma sicuro. Sul fatto di mettere Josh e Kathy come stringa, non sono molto d'accordo: se i personaggi sono "predefiniti", si possono includere nell'elenco dei token in modo da evitare l'uso di '"' per rappresentarli negli script. Inoltre in questo modo deleghiamo già al parser il compito di controllare se quello specificato è un character valido oppure no; altrimenti dovremmo farlo noi, a livello di codice, andando a controllare COMUNQUE se il nome immesso fa parte di una lista: cioé la stessa cosa che farebbe il parser normalmente. Per quanto detto, per adesso proporrei qualcosa del genere: Codice:
Josh says fast " Hello, how are you? Everything's fine?" Codice:
Josh says fast " Hello, how are you? Everything's fine?" Quanto ad ANTLR, è molto potente anche perché, a differenza di tool come YACC & derivati (che generano un automa a stati, che necessita di un certo tempo), genera dei parser di tipo recursive descendant: quindi MOLTO veloci nell'eseguire il parsing. Non è il nostro caso, ma è comunque utile saperlo (a me interessa moltissimo Trattandosi di spike e non di task, magari per il momento direi di lasciare un certo margine di flessibilità nel linguaggio da riconoscere. Discutiamone un po', magari cercando di non mettere dei paletti preventivamente. Vediamo di realizzare qualcosa di funzionante, anche soltanto a livello embrionale, e di decidere poco alla volta cosa aggiungere. Questo lo dico perché scrivere un parser per un linguaggio non è una cosa semplice, ma a volte lavorandoci saltano fuori delle problematiche derivante dal fatto che certe grammatiche sono difficili da implementare; è facile che magari aggiungendo un nuovo elemento al linguaggio sorgano dei conflitti.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#57 | |||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Non farti problemi nel presentare "comandi" che abbiano più di una parola: non è questo che rende difficoltoso il parsing del testo. Codice:
move character at 320 240 Quote:
Resta da definire se il case è significativo. Per il momento, per semplificare il parsing, proporrei di sì. Poi vediamo se è possibile rendere il parser case insensitive, che è sicuramente più "umano". Per il parser "scritto a mano" è un problema di semplice soluzione, ma per un parser con ANTLR non è banale.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
|
|
|
|
|
#58 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#59 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||
|
|
|
|
|
#60 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:53.




















