Yazoo è una riga di comando, interpretato linguaggio di scripting che fornisce un ambiente già pronto per il C o C ++ funzioni. & Nbsp; Un utente incorpora le proprie routine nella lingua da loro riferimento in uno dei file sorgenti di Yazoo, poi ricompilazione Yazoo. Quando viene eseguito Yazoo, si aprirà un prompt dei comandi in cui l'utente può definire e manipolare le variabili, array, funzioni script, leggere e scrivere file, ecc - e, richiamare le sue funzioni integrate. Dal momento che vengono utilizzate solo le librerie C standard, Yazoo dovrebbe funzionare praticamente su qualsiasi piattaforma.
Scripting Yazoo è un affare minimalista: classi, gruppi, funzioni, gli argomenti della funzione, ecc sono tutti la stessa cosa. La semplicità di questo sistema facilita la curva di apprendimento. Ma acquista anche la lingua un sacco di generalità - Yazoo permette molti costrutti di programmazione esotiche che sono rare in un linguaggio di scripting, ma hanno dimostrato eminentemente utile nelle mani dell'autore.
Il download Yazoo è composto da: file sorgente C / C ++; un Makefile; essenziali script ".zoo"; e la documentazione
Cosa c'è di nuovo in questa versione:.
- Bugs fisso:
- problemi che definiscono i membri del proxy durante il ridimensionamento della matrice; per esempio. proxy_array [+1] @ :: {}
- 'q ritorno' ora funziona quando 'q' è nulla
- un problema in cui i grandi numeri interi senza segno sarebbe stampare come '0'
- go () potrebbe rimanere bloccato all'interno elementi di campo
- read_string () (e ReadTable ()) non sapeva leggere esponenti con segno più (ad esempio, 1e + 1)
- problemi di lettura e scrittura numeri vicino al limite underflow doppia precisione
- un problema con ReadTable () quando si tenta di ridimensionare le liste
- un problema con ReadTable () quando una tabella a due dimensioni ha un solo elemento
- un problema utilizzando SaveTable () con tavoli nulli
- una copia () crash quando il primo argomento era primitivo e il secondo argomento era composito
- un problema con go (), che strisciava in cui è stato introdotto l'operatore #
- incidente occasionale quando start.zoo cercato di bandiera un errore
- un messaggio di avviso in alcuni compilatori (extrnl.c)
- SaveTable () ora fa in modo di de-alias tavoli se si chiama impropriamente
- un errore in SaveTable () quando ha approvato una 'tavola' non-composito
- un errore contrassegnato nella posizione sbagliata li>
- un errore goffamente battente bandiera quando la calcolatrice tentato di stampare un oggetto autoreferenziale
- Miglioramenti:
- rimosso il 'presente'. prefisso quando si definiscono le variabili. Questo può causare problemi nelle procedure che definiscono le variabili con lo stesso nome di variabili globali!
- a =b ora funziona quando b è nullo. Ciò significa che 'trap (x)' non è più il modo di rilevare membri nulli; usare 'se x ==nothing' invece.
- ha aggiunto un codice di avviso runtime 'underflow'
- aggiunto cat () per user.zoo
- aggiunto Save (), che cerca tutti i percorsi di directory (è analogo a carico ())
- SaveTable () ora cerca tutti i percorsi di directory
- ls () che mostra le variabili nella directory corrente aggiunto
- aggiunto compile_and_do_in () per user.zoo
- aggiunto round (), che lavora per più vicino intero
- accelerato ridimensionamento delle tabelle usando ReadTable ()
Cosa c'è di nuovo in versione 1.4:
- Bugs fisso:
- migliorato run () s 'trattamento tra maiuscole e minuscole dei nomi di file quando run.CleanUp è impostato
- true
- messaggio di errore errato in uscita o di ritorno da user.zoo
- bug nel ReadTable () che comportano il ridimensionamento delle tabelle
- problemi in messaggi di errore da ReadTable ()
- Miglioramenti:
- aggiunto # all'operatore di sostituire EseguiCodice (), RunConstructor ()
- aggiunto ';' come simbolo alternativo per 'code'
- calcolatrice di default per 'on'
- aggiungere minuscolo () / maiuscolo () per user.zoo
- aggiunto codici di errore per ReadTable ()
Cosa c'è di nuovo nella versione 1.3.1:
- Una correzione di una lunga bug che a volte si è schiantato il programma quando si usa go ().
- La nuova funzione di auto-pulizia di run (), introdotto nell'ultima distacco, sta avendo problemi irriproducibili ed è possibile che questo bug-fix si occupa anche di questo.
- Due miglioramenti migliorano considerevolmente la calcolatrice: 1) l'uso di sprint () piuttosto che di stampa (), e 2) l'introduzione di variabili, come spesso si trova in ambienti scientifici-programmazione un 'ans.
Cosa c'è di nuovo in versione 1.3.0.1:
- Fixed un bug.
Cosa c'è di nuovo nella versione 1.3:
- Bugs fisso:
- un problema potenzialmente fatale di trascurare il carattere null alla fine del start.zoo o altro script di partenza
- load () e save () sono stati incautamente utilizzando la modalità ASCII anziché binario, che ha causato problemi su PC
- due più le perdite di memoria e un errore di riferimento (potenziale terzo mem. Perdita)
- la calcolatrice non ha funzionato nella versione precedente
- più bug che coinvolgono [^ ..], [+ ..], + [..], =! o chiamate di funzione a sinistra di una definizione / equiparare-in / etc. operatore
- problemi in cui la [+ ..] / + [..] gli operatori dovrebbero aggiungere ai membri nascosti
- incidenti che coinvolgono size-0 array di proxy
- problemi w / i registri di stampa calcolatrice (mascherato da precedenti calc. Problema, ma questo problema nelle versioni precedenti e)
- un problema che ha causato lento ridimensionamento di grandi array
- smontare () stampato i nomi delle variabili sbagliate su macchine a 64-bit
- ridimensionare () consente ora un ultimo argomento vuoto
- un errore imbarazzante smontato quando i tipi di & quot; utente restituiscono my_array [a, b] & quot; dal prompt dei comandi
- crollo del prompt dei comandi dopo il ritorno più indici di un array
- un problema bandiera errori sulle linee che iniziano con | ** | Commenti -style
- smontare () è caduto quando somministrato script nulli
- Miglioramenti:
- configurato Yazoo in modo che possa essere incorporato in / invocato da codice C; eseguire anche ricorsivamente all'interno Yazoo
- su rieseguire uno script, eseguire () cancella prima i membri è definita l'ultima volta: non più trap (rimuovere ..) necessaria
- go aggiunto () / pwd per cambiare / visualizzazione variabile spazio di lavoro del prompt dei comandi
- aggiunto operatori di confronto di riferimento: '== @' e '/ = @'
- aggiunge un operatore di proxy-definire: '# ::'
- fatta carico () più veloce e più efficiente della memoria
- stringhe di stampa ' D n' come un unico end-of-line
- run () può restituire il risultato della dichiarazione ritorno di uno script
- sum aggiunto (), media () per user.zoo
- char aggiunto (), C_string () per user.zoo
- transform () consente ora all'utente di personalizzare il percorso di ricerca di codice trasformato
- throw () in grado di adattare la posizione dell'errore gettato e lanciare avvertimenti e
- run () permetterà avvertenze nello script a comparire nella riga di comando (assumendo nessun trap intervenire () dopo l'avvertimento)
- smontare () può saltare espressioni in bytecode compilato
- sostituito RunHobbish () con un do_in () di routine più funzionale in user.zoo
- aggiunto RunCode () in user.zoo; RunConstructor () è ora un caso particolare di questa routine
- costantemente lettura bytecode come slongs
- ora correttamente utilizzando il puntatore NULL, anziché 0 nel codice C
- migliorati alcuni messaggi di errore
- Varie:
- cambiato le parole bytecode per gli operatori array-inserimento ([+ ..], + [..]) ed eliminare
- eliminato CheckType () da user.zoo - & quot; trap (a =b) & quot; di solito è meglio
- eliminato esiste () da user.zoo - & quot; esiste (& quot; a & quot;) & quot; era in gran parte ridondante con & quot; trap (a) & quot;
Cosa c'è di nuovo in versione 1.2:
- La versione 1.2 di Yazoo è stato appena consegnato pre-termine dopo una serie di errori fatali su macchine a 64-bit è venuto alla luce la settimana scorsa. Yazoo è una riga di comando interpretato linguaggio di scripting, che l'utente ha lo scopo di personalizzare inserendo le proprie routine C o C ++ nella lingua. La novità di sceneggiatura Yazoo è il modo in cui le regole di base della sua sintassi conservatore-looking possono essere estrapolati per la produzione di molti costrutti di scripting rari e utili, che l'autore non ha incontrato in altre lingue.
- Il cambiamento davvero critica nella versione attuale è stata la rimozione di quei presupposti sui formati interi che hanno causato incidenti immediati. Questo ha reso necessario un altro aggiustamento significativo: il registro R_ulong è passato da unsigned al sottoscritto, e così rinominato R_slong. La ridenominazione può in linea di principio causare problemi di compatibilità col passato, anche se per fortuna il registro intero deve raramente essere invocato esplicitamente. Infine, per quanto riguarda qualcosa di interessante per la maggior parte degli utenti, ma rinnovamento stilistico per l'autore che richiede tempo, il C / C ++ file di origine sono stati sottoposti:. Sono stati (finalmente) ha commentato, e la loro formattazione è stata migliorata li>
- Poiché questo autore faccia rossa strapazzate un po 'di pubblicare la versione attuale, è possibile che i bug a 64 bit si nascondono ancora nel codice. Se è così, poi un altro, la versione modificata sarà probabilmente essere imminente in pochi giorni, come l'autore usa il suo programma avidamente.
Cosa c'è di nuovo nella versione 1.1:
- Bugs fisso:
- erroneamente battente bandiera messaggi di errore in quasi ogni script con costanti inline
- l'operatore append-code ':' non funzionava correttamente in determinati contesti, ad esempio, all'interno di un operatore di codice di sostituzione
- forzata equiparare non copiare gli elementi dell'array nel giusto ordine quando più gli indici sono stati dati in modo esplicito (ad esempio un [*] =! ..., ... = B [1, 2])
- problemi numerici quando si stampa i numeri sul bordo della risoluzione doppia precisione
- i messaggi di errore non corretto battenti bandiera seguenti endif, ENDF o endw
- I nomi dei membri sbagliati a errori utente-non-trovati dai file gestiti da user.zoo
- il primo numero restituito da casuale () non era del tutto casuale
- copy () non controlla per l'auto-riferimenti
- un errore in SaveTable () quando la seconda dimensione di un tavolo era dimensionato a zero
- sort () ha gettato un errore inutile per lunghezza-0 liste
- fraintendimento del commento null '| *** |' con un numero dispari di '*' s
- Miglioramenti:
- percorsi di ricerca di nuovi {} definizioni ora andare sempre attraverso lo script che lo ha definito, non necessariamente lo script racchiude ***
- resize aggiunto () per user.zoo
- aggiunto min (), max () per user.zoo
- sort () ora ordina elenchi, tabelle
- new () accetta diverse variabili di origine per il tipo di dati e
- copy () restituisce un codice di errore
- verifica di SaveTable () meglio l'argomento
I commenti non trovato