Questo è il comando genparse che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre numerose workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online di Windows o emulatore online di MAC OS
PROGRAMMA:
NOME
genparse - generatore di parser da riga di comando
SINOSSI
analisi generale [Opzioni] file...
DESCRIZIONE
analisi generale è un generatore di parser generico da riga di comando. Da semplice e conciso
file di specifiche, è possibile definire i parametri della riga di comando e gli switch che si desidera
vorrei poter passare al tuo programma. Genparse crea il codice C, C++ o Java del
parser per te.
Genparse presuppone che GNU getopt_long(3) la funzione è integrata nella libreria C. Per
Java potrebbe essere necessario specificare un file jar appropriato per il compilatore Java.
VERSIONI
analisi generale accetta queste opzioni:
-c, --cppext estensione
Estensione file C++. (predefinita = cc)
-d Attiva la registrazione.
-f, --file di log Nome
Nome del file di registro. (predefinito = genparse.log)
-h, --Aiuto
Visualizza le informazioni di aiuto.
-g, --gnulib
Utilizzare la libreria di compatibilità GNU (Gnulib, vedere http://www.gnu.org/software/gnulib/).
Disponibile solo per l'output C. Consente altri tipi (unsigned long, intmax_t ecc.)
per i quali Gnulib fornisce funzioni di conversione.
-i, --internazionalizzare
Inserire la macro di internazionalizzazione _() attorno all'output di testo in modo che il programma generato
può essere internazionalizzato utilizzando il comando GNU gettext. Attualmente implementato solo
per l'uscita C.
-l, --linguaggio lang
Linguaggio di output. Sono supportati solo C, C++ e Java. Uno qualsiasi dei seguenti
indicano C++: "c++", "cpp", "cc" e "cxx". Per Java usare: "java" o "Java".
(predefinito = c)
-o, --file di uscita Nome
Nome del file di output. (predefinito = parse_cl)
-m, --membri lunghi
Utilizzare opzioni lunghe per i membri della classe parser (struct). L'impostazione predefinita è
utilizzare la rappresentazione breve, a meno che non sia definita solo una rappresentazione lunga
nel file genparse. Se questa opzione è impostata, il comportamento viene ripristinato.
viene utilizzata la rappresentazione lunga, a meno che non sia presente solo una rappresentazione breve
definito.
-o, --file di uscita Nome del file
Nome radice del file di output. L'estensione sarà determinata dalla lingua di output
e possibilmente da altre opzioni. Ad esempio, quando il linguaggio di output è C, fornendo
questa opzione, con l'argomento "file", darà come risultato nomi di file di output di "file.h",
"file.c" e "file_cb.c" rispettivamente per i file di intestazione, parser e callback.
Il valore predefinito è "parse_cl".
-p, --funzione di analisi func
Nome della funzione/classe di analisi. Questa opzione consente all'utente di specificare il nome
della funzione (per C) o della classe (per C++ e Java) che esegue il comando effettivo
analisi della riga (predefinito = "Cmdline").
-P, --molte stampe
Visualizzare il testo di aiuto per ogni parametro della riga di comando in un comando di stampa separato.
-q, --silenzioso
Modalità silenziosa: nessuna visualizzazione sullo schermo.
-s, --intestazioni statiche
Mantieni statica l'intestazione descrittiva in cima ai file generati. Senza questo
l'opzione genparse stampa la data e l'ora di creazione, la versione del kernel Linux, la build del kernel
ora, nome dell'architettura del computer, nome host e nome utente.
-v, --versione
Versione di uscita.
-D, --directory
Directory per l'archiviazione dei risultati.
INGRESSO RISORSE
Un file di specifiche genparse (solitamente chiamato semplicemente 'file genparse') è costituito da un numero
di voci, una per parametro della riga di comando, del formato:
nomi_brevi[*|!] [/ nome_lungo[*|!][=opt_name]] Digitare [ Opzioni ]
A nome corto è un singolo carattere (minuscolo o maiuscolo) o una singola cifra. nome_lungo è un
nome dell'opzione più lungo (più descrittivo). Sulla riga di comando verrà preceduto da un nome breve
da un singolo trattino (ad esempio '-a') e una versione lunga sarà preceduta da due trattini (ad esempio
'--all'). Se non è necessario un nome lungo per il parametro, è possibile specificare solo quello breve
(e la barra non deve apparire). Per specificare un parametro che ha solo una lunga
set di nomi nomi_brevi a NONEÈ possibile avere più opzioni brevi, quindi per
impostazione di esempio nome corto a 'aA' e nome_lungo a 'tutti' permetterebbe di specificare il
switch della riga di comando come '-a' o '-A' o '--all', tutti e tre svolgono la stessa funzione.
A * dopo nome corto or nome_lungo rende l'argomento facoltativo. Questo può essere specificato per
opzioni corte e lunghe separatamente.
A ! dopo nome corto or nome_lungo rende l'opzione booleana. Ciò consente di combinare un
opzione booleana breve con un'opzione lunga con un argomento facoltativo o obbligatorio o per
combinare un'opzione booleana lunga con un'opzione breve con un argomento facoltativo o obbligatorio.
A ! non ha senso se il tipo dell'opzione è bandiera.
Digitare deve essere uno di int galleggiante serbatoio stringa or bandieraI primi quattro dovrebbero essere auto-
esplicativo. L'ultima è un'opzione "switch" che non accetta argomenti. Per l'output C e if
--gnulib è impostato sulla riga di comando e sono inoltre consentiti i seguenti tipi: lungo
(per int lungo), lungo (per unsigned long int), intmax (per intmax_t, definito in Gnulib),
uintmax (per uintmax_t), doppio.
Le seguenti Opzioni sono supportati. Possono apparire in qualsiasi ordine e ad eccezione di
descrizioni per ogni opzione può essere definito solo uno di ciascun campo.
A difetto APPREZZIAMO per il parametro. Per una stringa questo è semplicemente il valore predefinito
valore, qualunque esso sia. Per le stringhe, un valore predefinito deve essere specificato tra parentesi graffe e
virgolette e possono includere spazi vuoti, ad esempio {"il mio valore predefinito"}. Per un carattere
parametro deve essere racchiuso tra virgolette singole, ad esempio 'a' o '\n'.
A gamma di valori tra parentesi. I valori basso e alto sono specificati tra un
specificatore di intervallo ('...' o '..'). Può essere sia il valore alto che quello basso
omesso per un intervallo limitato solo da un lato. Il parametro verrà controllato per
assicurarsi che rientri in questo intervallo.
A richiama funzioneQuesta funzione viene chiamata dopo ogni controllo dell'intervallo
eseguito. Lo scopo del callback è quello di effettuare un controllo di validità che è più
più complicato di quanto possa essere specificato nel file genparse. Ad esempio, potresti
scrivere un programma che richiede come input numeri primi, stringhe di un certo tipo
lunghezza, ecc.
A descrizione tra virgolette doppie. È stampato da utilizzo() funzione. Se uno
riga non è sufficiente, quindi specificare più descrizioni, una per riga e ciascuna di
tra virgolette doppie. Se la descrizione inizia nella prima colonna del Genparse
file, verrà stampato anche nella prima colonna nel utilizzo() funzione.
A #gp_include la direttiva istruirà genparse a includere un altro file genparse,
per esempio #gp_include un altro.gp. Sono consentite solo le definizioni dei parametri incluse
file, nessuna direttiva globale.
An __ERR_MSG__(err_txt) direttiva. Specifica il messaggio di errore che viene stampato
quando l'argomento non può essere convertito. Esempio: __ERR_MSG__("%s: invalido
discussione")Questo messaggio verrà stampato quando la funzione di conversione
fallito o quando l'argomento era fuori intervallo. Presuppone che ne contenga uno %s che sarà
essere sostituito con l'argument che non è stato possibile convertire. Disponibile solo quando
Genparse viene invocato con --gnulib, altrimenti ignorato.
Facoltativamente è possibile aggiungere una funzione di conversione come secondo argomento, ad esempio
__ERR_MSG__("%s: invalido discussione", citazionearg)Ciò porterebbe a un messaggio di errore
piace errore (USCITA_FALLITA, 0, "%S: invalido discussione", citazionearg (optind)).
An __AGGIUNGI_FLAG__ direttiva. Ha senso solo se il parametro della riga di comando non è
già un flag, in questo caso viene aggiunto un parametro flag aggiuntivo che sarà
impostato se il parametro della riga di comando è stato specificato sulla riga di comando. Questa opzione
viene impostato automaticamente se un parametro ha un argomento facoltativo.
A __CODE__(istruzioni) direttiva. Le istruzioni di codice specificate vengono copiate
letteralmente. Esempio: __CODE__(printf ("Parametro x Prima impostato");)Il codice specificato
può estendersi su più di una riga. Per dare a Genparse la possibilità di
rientrare il codice correttamente, non mescolare spazi e tabulazioni in uno __CODICE__
.
A __STORE_LONGINDEX__ direttiva. Indica a Genparse di aggiungere un campo di tipo interer
alla classe risultato che verrà impostata sulla variabile longindex (ultimo argomento in
la chiamata a @code{getopt_long()}). Questo nuovo campo avrà lo stesso nome di
campo risultato a cui è correlato ma con un _li suffisso.
Le seguenti globale direttive sono supportati. Possono apparire in qualsiasi ordine.
An #includere la direttiva istruirà genparse a copiare la suddetta istruzione include
nel codice C o C++ generato da genparse, ma non in alcun file di intestazione o callback
File.
A #obbligatorio La direttiva può essere utilizzata per rendere più gradevoli le chiamate alla funzione usage(). Permette
per specificare parametri obbligatori della riga di comando che potrebbero seguire gli switch. Nota
che Genparse non controlla i parametri obbligatori, vengono solo stampati nel
uso () funzione con il __OBBLIGATORI__ Direttiva. Deprecato: aggiungere obbligatorio
parametri in , il #utilizzo pagina anziché.
An #valore_di_uscita direttiva che specifica il valore di uscita in caso di errore.
Il valore predefinito è EXIT_FAILURE.
A #linee_di_interruzione direttiva che specifica la larghezza alla quale le linee devono essere interrotte
nella schermata di aiuto. Se no #linee_di_interruzione la direttiva è specificata, quindi le linee saranno
stampato esattamente come indicato nel file genparse.
If #nessuna_struttura è specificato allora non verrà definita alcuna struttura che verrà riempita con
i parametri della riga di comando nel parser generato. Questo può essere utile se
vuoi aggiungere il tuo codice con __CODICE__ invece istruzioni. Supportato solo per C
produzione.
A #export_long_options direttiva. Se #export_long_options è definito allora un
funzione #get_long_options() viene aggiunto che esporta l'array longoptions utilizzato da
#getopt_long()Questa direttiva è disponibile solo per l'output C, per altri linguaggi
viene ignorato.
A globale richiama funzioneQuesta funzione è utile per verificare le interdipendenze
tra i parametri. Le interdipendenze non possono essere verificate all'interno di ogni singolo
funzione di callback perché l'ordine in cui queste funzioni verranno chiamate varia,
a seconda dell'ordine dei parametri sulla riga di comando.
Genparse genera anche un utilizzo() funzione che stampa un testo di aiuto su stdout riguardo a
utilizzo del programma per il quale Genparse sta generando il parser. Può essere personalizzato da
specificando una sezione di utilizzo in fondo al file Genparse. Se tale sezione non è presente
specificato che il valore predefinito è
#inizio_uso
utilizzo: __NOME_PROGRAMMA__ __OPZIONI_BREVE__ __OBBLIGATORIE__
__GLOSSARIO__
#fine_utilizzo
La sezione sull'utilizzo inizia con #inizio_uso e finisce con #fine_utilizzo. Qualsiasi testo tra è
stampato letteralmente, ad eccezione delle seguenti parole chiave, che verranno sostituite come elencato
sotto:
__NOME_PROGRAMMA__: Il nome del programma. In C e C++ il nome del programma è dato in
argv[0].
__OPZIONI_BREVE__: Un elenco di opzioni abbreviate disponibili, ad esempio [ -abc ].
__OBBLIGATORI__: Un elenco di tutti i parametri obbligatori come definiti con #mandatory
comandi. Deprecato: Lista obbligatorio parametri qui direttamente.
__GLOSSARIO__: Una descrizione di tutte le opzioni della riga di comando. Queste sono le informazioni
fornito per le definizioni dei parametri in forma leggibile. Include il
tipo di parametro, predefinito, intervallo ed eventuali commenti. Una riga che contiene
__GLOSSARIO__ è sostituito dal glossario dei parametri, qualsiasi altro testo nel
la stessa riga viene ignorata.
__GLOSSARIO_GNU__: Uguale a __GLOSSARIO__ ma in stile GNU. Facoltativamente seguito da un
intero tra parentesi che specifica il rientro del testo descrittivo (ad esempio
__GLOSSARIO__(30)). Il rientro predefinito è 24.
__STRINGA__(s): Una costante stringa, in C probabilmente una macro stringa definita con
#define comando del preprocessore. Questa macro può essere importata da un altro file utilizzando
la direttiva include nel file genparse. Ignorata durante la generazione dell'output Java.
__INT__(x): Una costante intera, in C probabilmente una macro intera definita con
#define comando del preprocessore. Questa macro può essere importata da un altro file utilizzando
la direttiva include nel file genparse. Ignorata durante la generazione dell'output Java.
__CODE__(istruzioni): Come per le opzioni dei parametri, vedere sopra.
__NON_DOCUMENTARE__: Qualsiasi riga che contiene questa macro non verrà stampata nel
utilizzo() funzione. Può essere utilizzato per implementare parametri della riga di comando senza
elencandoli nella schermata di aiuto.
__NL__: Nuova riga. Utile per interrompere manualmente le righe durante l'interruzione automatica.
è acceso (vedi #linee_di_interruzione). Ignorato durante la generazione dell'output Java.
__NUOVA_STAMPA__: Chiude il comando di stampa attivo e ne avvia uno nuovo.
__COMMENTO__(testo): Commentare il codice per stampare il testo di utilizzo.
le opzioni lunghe possono essere seguite da un segno = e da una designazione facoltativa opt_name quale puo
essere menzionato nella seguente descrizione. Sarà utilizzato nel utilizzo() funzione
solo. Ad esempio la seguente riga genparse
s / block-size=SIZE int "usa blocchi di SIZE-byte"
porterà alla seguente riga nella schermata di aiuto
[ -s ] [ --block-size=DIMENSIONE ] (tipo=INTEGER)
usa blocchi SIZE-byte
in stile genparse (__GLOSSARIO__) o puoi
-s, --block-size=SIZE usa blocchi di SIZE-byte
in stile GNU (__GLOSSARIO_GNU__).
È anche possibile mettere le parentesi quadre attorno al nome facoltativo per indicare
che l'argomento è facoltativo. Tuttavia, questo non ha alcun significato per il parser generato. Utilizzare
* suffissi per rendere un argomento facoltativo.
s* / block*[=SIZE] int "usa blocchi."
"Se SIZE non viene specificato, verrà assegnata una dimensione di 1 kB."
porterà alla seguente riga nella schermata di aiuto
-s, --block[=SIZE] usa i blocchi.
Se non viene specificata la dimensione, la dimensione sarà di 1 kB.
ESEMPIO
Ecco un esempio di file genparse:
#include
/* commento */
my_callback()
i / iterazioni int 100 [10...1000] iter_callback()
"Numero di iterazioni da eseguire."
/*
* Commento
*/
n / nome stringa {"mike"} name_cb() "Nome dell'utente"
s / str string "stringa di prova"
f flag "una bandiera stupida!"
#inizio_uso
utilizzo: __NOME_PROGRAMMA__ __OPZIONI_BREVE__ nome file
Questo è solo uno stupido programma di prova.
__GLOSSARIO__
#fine_utilizzo
Utilizza genparse online utilizzando i servizi onworks.net