EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

genparse - Online în cloud

Rulați genparse în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda genparse care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


genparse - generator de parser de linie de comandă

REZUMAT


genparse [Opțiuni] fișiere...

DESCRIERE


genparse este un generator de parser generic în linie de comandă. De la simplu și concis
fișier de specificații, puteți defini parametrii și comutatoarele liniei de comandă pe care le-ați face
îmi place să poți trece la programul tău. Genparse creează codul C, C++ sau Java al
analizator pentru tine.

Genparse presupune că GNU getopt_long(3) funcția este încorporată în biblioteca dvs. C. Pentru
Java poate fi necesar să specificați un fișier jar adecvat compilatorului Java.

OPŢIUNI


genparse acceptă aceste opțiuni:

-c, --cppext extensie
Extensie de fișier C++. (implicit = cc)

-d Activați înregistrarea.

-f, --fișier jurnal nume
Nume fișier jurnal. (implicit = genparse.log)

-h, --Ajutor
Afișează informații de ajutor.

-g, --gnulib
Utilizați biblioteca de compatibilitate GNU (Gnulib, vezi http://www.gnu.org/software/gnulib/).
Disponibil numai pentru ieșire C. Permite mai multe tipuri (unsigned long, intmax_t etc.)
pentru care Gnulib oferă funcții de conversie.

-i, --internationaliza
Puneți macrocomanda de internaționalizare _() în jurul textului, astfel încât programul generat
poate fi internaționalizat folosind comanda GNU gettext. Momentan doar implementat
pentru ieșire C.

-l, --limba lang
Limba de ieșire. Sunt acceptate doar C, C++ și Java. Oricare dintre următoarele
indicați C++: „c++”, „cpp”, „cc” și „cxx”. Pentru utilizarea Java: „java” sau „Java”.
(implicit = c)

-o, --outfile nume
Numele fișierului de ieșire. (implicit = parse_cl)

-m, --membri lungi
Utilizați opțiuni lungi pentru membrii clasei parser (struct). Valoarea implicită este să
utilizați reprezentarea scurtă, cu excepția cazului în care este definită doar o reprezentare lungă
în dosarul genparse. Dacă această opțiune este setată, comportamentul este inversat. The
atunci se folosește reprezentarea lungă, cu excepția cazului în care există doar o reprezentare scurtă
definit.

-o, --outfile nume de fișier
Numele rădăcină al fișierului de ieșire. Extensia va fi determinată de limba de ieșire
si eventual prin alte optiuni. De exemplu, când limbajul de ieșire este C, dând
această opțiune un argument de „fișier” va avea ca rezultat numele fișierelor de ieșire „fișier.h”,
„file.c” și „file_cb.c” pentru antetul, analizatorul și, respectiv, fișierele de apel invers.
Valoarea implicită este „parse_cl”.

-p, --parsefunc FUNC
Numele funcției/clasei de analiză. Această opțiune permite utilizatorului să specifice numele
a funcției (pentru C) sau a clasei (pentru C++ și Java) care face comanda efectivă
analiza liniei (implicit = "Cmdline").

-P, --multe amprente
Ieșiți text de ajutor pentru fiecare parametru de linie de comandă într-o comandă de imprimare separată.

-q, --Liniște
Mod silențios - fără ieșire pe ecran.

-s, --static-headers
Păstrați static antetul descriptiv deasupra fișierelor generate. Fără asta
opțiunea genparse afișează data și ora creării, versiunea kernel-ului Linux, construirea nucleului
ora, numele arhitecturii computerului, numele gazdei și numele utilizatorului.

-v, --versiune
Versiune de ieșire.

-D, --director
Director pentru stocarea rezultatelor.

INTRARE FILE


Un fișier de specificații genparse (numit de obicei doar „fișier genparse”) constă dintr-un număr
de intrări, una pe parametrul liniei de comandă, de forma:

nume_scurte[*|!] [/ nume_lung[*|!][=opt_name]] tip [ Opțiuni ]

A nume scurt este un singur caracter (mic sau majuscule) sau o singură cifră. nume_lung este
nume de opțiune mai lung (mai descriptiv). Pe linia de comandă va fi precedat un nume scurt
de o singură liniuță (de exemplu, „-a”) și o versiune lungă vor fi precedate de două liniuțe (de ex
'--toate'). Dacă nu este necesar un nume lung de parametru, îl puteți specifica doar pe cel scurt
(și bara oblică nu trebuie să apară). Pentru a specifica un parametru care are doar un lung
set de nume nume_scurte la NONE. Este posibil să aveți mai multe opțiuni scurte, deci pt
exemplu de setare nume scurt la „aA” și nume_lung la 'toate' ar permite să se specifice
comutați linia de comandă ca „-a” sau „-A” sau „--all”, toate făcând același lucru.

A * după nume scurt or nume_lung face argumentul opțional. Acest lucru poate fi specificat pentru
opțiuni scurte și lungi separat.

A ! după nume scurt or nume_lung face opțiunea booleană. Acest lucru vă permite să combinați a
opțiune booleană scurtă cu o opțiune lungă cu un argument opțional sau obligatoriu sau to
combinați o opțiune lungă booleană cu o opțiune scurtă cu un argument opțional sau obligatoriu.
A ! nu are sens dacă tipul opțiunii este pavilion.

tip trebuie să fie unul dintre int pluti car de război şir or pavilion. Primele patru ar trebui să fie auto-
explicativ. Ultima este o opțiune „switch” care nu ia argumente. Pentru ieșirea C și dacă
--gnulib este setat pe linia de comandă și sunt permise următoarele tipuri: lung
(pentru lung int), ulong (pentru int lung nesemnat), intmax (pentru intmax_t, definit în Gnulib),
uintmax (pentru uintmax_t), dubla.

Următoarele Opțiuni sunt suportate. Ele pot apărea în orice ordine și cu excepția
descrieri numai unul din fiecare câmp poate fi definit per opțiune.

A lipsă valoare pentru parametru. Pentru un șir, acesta este doar standardul simplu
valoare, oricare ar fi aceasta. Pentru șiruri, trebuie specificată o valoare implicită între acolade și
ghilimele și pot include spații albe, de exemplu {"valoarea mea implicită"}. Pentru un char
parametrul trebuie să fie cuprins între ghilimele simple, de exemplu „a” sau „\n”.

A gamă de valori între paranteze. Valorile scăzute și ridicate sunt specificate între a
specificator de interval (fie „...” fie „..”). Fie valoarea ridicată, fie valoarea scăzută poate fi
omis pentru un interval delimitat doar pe o latură. Parametrul va fi verificat
asigurați-vă că se află în acest interval.

A suna inapoi funcţie. Această funcție este apelată după orice verificare a intervalului
efectuat. Scopul apelului invers de a face verificarea validității este mai mult
complicat decât poate fi specificat în fișierul genparse. De exemplu, ai putea
scrieți un program care necesită intrare să fie numere prime, șiruri de caractere
lungime etc.

A descriere între ghilimele duble. Este tipărită de către utilizare() funcţie. Daca unul
linia nu este suficientă, atunci specificați mai multe descrieri, câte una pe linie și fiecare dintre ele
le între ghilimele duble. Dacă descrierea începe în prima coloană din Genparse
apoi va fi tipărit și în prima coloană din utilizare() Funcția.

A #gp_include directiva va instrui genparse să includă un alt fișier genparse,
de exemplu, #gp_include altul.gp. Doar definițiile parametrilor sunt permise în pachetul inclus
fișier, fără directive globale.

An __ERR_MSG__(err_txt) directivă. Specifică mesajul de eroare care este imprimat
când argumentul nu a putut fi convertit. Exemplu: __ERR_MSG__("%s: invalid
argument"). Acest mesaj va fi tipărit atunci când fie funcția de conversie
a eșuat sau când argumentul a fost în afara intervalului. Presupune că conține unul %s care va
fi înlocuit cu agrumentul care nu a putut fi convertit. Disponibil numai când
Genparse este invocat cu --gnulib, ignorat altfel.

Opțional, o funcție de conversie poate fi adăugată ca al doilea argument, de ex
__ERR_MSG__("%s: invalid argument", quotearg). Acest lucru ar duce la un mesaj de eroare
ca eroare (EXIT_FAILURE, 0, „%s: invalid argument", quotearg (optind)).

An __ADD_FLAG__ directivă. Are sens numai dacă parametrul liniei de comandă nu este
deja un flag, în acest caz se adaugă un parametru de flag suplimentar care va fi
setați dacă parametrul liniei de comandă a fost specificat pe linia de comandă. Această opțiune
este setat automat dacă un parametru are un argument opțional.

A __CODE__(instrucțiuni) directivă. Instrucțiunile de cod specificate sunt copiate
literalmente. Exemplu: __CODE__(printf ("Parametru x a fost a stabilit");). Codul specificat
se poate extinde pe mai mult de o linie. Pentru a-i oferi lui Genparse șansa să
indentați corect codul, nu amestecați spațiul și indentările de file într-una singură __COD__
afirmație.

A __STORE_LONGINDEX__ directivă. Instruiește Genparse să adauge un câmp de tip interer
la clasa rezultat care va fi setată la variabila longindex (ultimul argument în
apelul la @code{getopt_long()}). Acest câmp nou va primi același nume ca și
câmpul rezultat cu care este legat, dar cu un _li postfix.

Următoarele global instrucțiuni sunt suportate. Ele pot apărea în orice ordine.

An #include directiva va instrui genparse să copieze declarația include menționată
în codul C sau C++ generat de genparse, dar nu orice fișiere de antet sau apel invers
fișiere.

A #obligatoriu directiva poate fi folosită pentru a face apelurile funcției usage() mai frumoase. Permite
trebuie să specificați parametrii obligatorii ai liniei de comandă care ar putea urma comutatoarele. Notă
că Genparse nu verifică parametrii obligatorii, ei sunt doar tipăriți în
folosire () funcţionează cu __OBLIGATORII__ directivă. Învechit: adăuga obligatoriu
parametrii in il #utilizare secțiune in schimb.

An #exit_value directivă care specifică valoarea de ieșire în cazul unei erori.
Implicit este EXIT_FAILURE.

A #break_lines directivă care specifică lățimea la care liniile vor fi întrerupte
pe ecranul de ajutor. Daca nu #break_lines directiva este specificată, atunci liniile vor fi
tipărit exact așa cum este dat în fișierul genparse.

If #no_struct este specificat, atunci nu va fi definită nicio structură cu care va fi completată
parametrii liniei de comandă din parserul generat. Acest lucru poate fi util dacă dvs
doriți să adăugați propriul cod cu __COD__ declarații în schimb. Acceptat doar pentru C
ieșire.

A #export_long_options directivă. Dacă #export_long_options este definit atunci a
funcţie #get_long_options() se adaugă care exportă tabloul longoptions folosit de
#getopt_long(). Această directivă este disponibilă numai pentru ieșirea C, pentru alte limbi
este ignorat.

A global suna inapoi funcţie. Această funcție este utilă pentru verificarea interdependențelor
între parametri. Interdependențele nu pot fi verificate în cadrul fiecărui individ
funcția de apel invers deoarece ordinea în care aceste funcții vor fi apelate variază,
în funcţie de ordinea parametrilor de pe linia de comandă.

Genparse generează și a utilizare() funcție care imprimă un text de ajutor pentru stdout despre
utilizarea programului pentru care Genparse generează analizatorul. Poate fi personalizat de
specificând o secțiune de utilizare în partea de jos a fișierului Genparse. Dacă nu există o astfel de secțiune
specificat ca implicit

#usage_begin
utilizare: __PROGRAM_NAME__ __OPTIONS_SHORT__ __MANDATORIES__
__GLOSAR__
#usage_end

Secțiunea de utilizare începe cu #usage_begin și se termină cu #usage_end. Orice text între este
tipărit textual, cu excepția următoarelor cuvinte cheie, care vor fi înlocuite așa cum sunt enumerate
de mai jos:

__NUMELE PROGRAMULUI__: Numele programului. În C și C++ numele programului este dat în
argv[0].

__OPȚIUNI_SCURT__: O listă de opțiuni disponibile pentru formulare scurte, de exemplu [ -abc ].

__OBLIGATORII__: O listă cu toți parametrii obligatorii, așa cum sunt definiți cu #obligatoriu
comenzi. Învechit: Listă obligatoriu parametrii aici direct.

__GLOSAR__: O descriere a tuturor opțiunilor liniei de comandă. Aceasta este informația
dat pentru definițiile parametrilor în formă lizibilă de om. Acesta include
tip de parametru, implicit, interval și orice comentarii. O linie care conține
__GLOSAR__ se înlocuiește cu glosarul parametrilor, orice alt text din
aceeași linie este ignorată.

__GLOSAR_GNU__: La fel ca __GLOSAR__ dar în stil GNU. Urmat opțional de un
întreg între paranteze care specifică indentarea textului descriptiv (de ex
__GLOSAR__(30)). Indentarea implicită este 24.

__Siruri de caractere): O constantă șir, în C probabil o macrocomandă șir definită cu
#define comanda preprocesorului. Această macrocomandă poate fi importată dintr-un alt fișier folosind
directiva include în fișierul genparse. Ignorat la generarea ieșirii Java.

__INT__(x): O constantă întreagă, în C probabil o macrocomandă întreagă definită cu
#define comanda preprocesorului. Această macrocomandă poate fi importată dintr-un alt fișier folosind
directiva include în fișierul genparse. Ignorat la generarea ieșirii Java.

__CODE__(instrucțiuni): La fel ca și pentru opțiunile parametrilor, vezi mai sus.

__DO_NU_DOCUMENT__: Orice linie care conține această macrocomandă nu va fi tipărită în
utilizare() funcţie. Poate fi folosit pentru implementarea parametrilor liniei de comandă fără
listându-le pe ecranul de ajutor.

__NL__: Linie nouă. Util pentru ruperea manuală a liniilor în timp ce ruperea automată a liniilor
este pornit (vezi #break_lines). Ignorat la generarea ieșirii Java.

__NEW_PRINT__: Închideți comanda de imprimare activă și începeți una nouă.

__COMMENT__(text): Comentează codul pentru tipărirea textului de utilizare.

opțiunile lungi pot fi urmate de un semn = și o desemnare opțională opt_name care poate
se face referire în descrierea următoare. Va fi folosit în utilizare() funcţie
numai. De exemplu, următoarea linie genparse

s / block-size=SIZE int "utilizați blocuri SIZE-byte"

va duce la următoarea linie din ecranul de ajutor

[ -s ] [ --block-size=SIZE ] (tip=INTEGER)
utilizați blocuri SIZE-byte

în stil genparse (__GLOSAR__) Sau

-s, --block-size=SIZE utilizează blocuri SIZE-octeți

în stil GNU (__GLOSAR_GNU__).

De asemenea, este posibil să puneți acolade pătrate în jurul numelui opțional pentru a indica
că argumentul este opțional. Totuși, acest lucru nu are nicio semnificație pentru analizatorul generat. Utilizare
* postfixe pentru a face un argument opțional.

s* / block*[=SIZE] int „utilizați blocuri”.
„Dacă SIZE nu este dat, atunci vor primi o dimensiune de 1 kB.”

va duce la următoarea linie din ecranul de ajutor

-s, --block[=SIZE] folosesc blocuri.
Dacă SIZE nu este dat, atunci vor primi o dimensiune de 1 kB.

EXEMPLU


Iată un exemplu de fișier genparse:

#include

/* cometariu */
my_callback()

i / iterații int 100 [10...1000] iter_callback()
„Numărul de iterații pentru care să rulați.”

/*
* Cometariu
*/

n / șir de nume {"mike"} name_cb() "Numele utilizatorului"
s / str șir „șir de test”
f steag "un steag prost!"

#usage_begin
utilizare: __PROGRAM_NAME__ __OPTIONS_SHORT__ nume de fișier
Acesta este doar un program de testare stupid.
__GLOSAR__
#usage_end

Utilizați genparse online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

Comenzi Linux

Ad