Aceasta este comanda yaccplan9 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
yacc - încă un alt compilator-compilator
REZUMAT
yacc [ opțiune ... ] gramatică
DESCRIERE
Yacc convertește o gramatică și un cod de traducere fără context într-un set de tabele pentru un
LR(1) analizator și traducător. Gramatica poate fi ambiguă; regulile de prioritate specificate sunt
folosit pentru a sparge ambiguitățile.
Fișierul de ieșire, y.tab.c, trebuie compilat de compilatorul C pentru a produce un program This
programul trebuie să fie încărcat cu o funcție de analizor lexical, yylex (gol) (generat adesea de
Lex(1)), cu a principal (int argc, car de război *argv[]) program și cu o rutină de gestionare a erorilor,
yyerror(car*).
Opțiunile sunt
-o producție Ieșire directă către fișierul specificat în loc de y.tab.c.
-Dn Creați fișier y.debug, care conțin mesaje de diagnosticare. Pentru a le incorpora in
analizatorul, compilați-l cu simbolul preprocesorului yydebug definit. Cantitatea de
ieșirea de diagnosticare de la parser este reglată de valoare n. Raportează valoarea 0
erori; 1 raportează reduceri; valorile mai mari (până la 4) includ mai multe informații
despre tranzițiile de stat.
-v Creați fișier y.ieşire, care conține o descriere a tabelelor de parsare și a
conflicte care decurg din ambiguităţile din gramatică.
-d Creați fișier y.tab.h, conținând #defini afirmaţii care asociază yacc-atribuit
„coduri de simboluri” cu „nume de simboluri” declarate de utilizator. Includeți-l în fișierele sursă
altele decât y.tab.c pentru a acorda acces la codurile token.
-s stăvili Schimbați prefixul numelor fișierelor y.tab.c, y.tab.h, y.debug, și y.ieşire la
stăvili.
-S Scrieți un parser care să folosească Stdio în loc de imprima rutine în libc.
-l Dezactivează directivele #line în parserul generat.
-a Generați un parser care preia un argument de tip Yyarg și transmite acest argument
la fiecare invocare a funcției lexer, yylex. Yyarg conține per-instanță
state și un singur membru vizibil de utilizator, arg, de tip void*.
Specificația yacc în sine este în esență aceeași cu versiunea UNIX descrisă în
referințele menționate mai jos. Pe langa -D opțiunea, principalele diferențe relevante sunt:
Interfața cu mediul C este implicit prin mai degrabă decât
; -S opțiunea inversează acest lucru.
Analizorul acceptă textul de intrare UTF (vezi utf(7)), care are câteva efecte.
În primul rând, valoarea returnată a yylex() nu se mai încadrează într-o mic de statura; al doilea, pornirea
valoarea pentru non-terminale este acum 0xE000, mai degrabă decât 257.
Analizatorul generat poate fi recursiv: acțiunile pot apela yyparse, de exemplu la
implementează un fel de #include declarație într-un interpret.
În cele din urmă, unele funcții interioare nedocumentate ale parserului au fost modificate, ceea ce
poate afecta programele care cunosc prea multe despre structura sa.
Utilizați yaccplan9 online folosind serviciile onworks.net