Package jay [Slovak]

0
111

Original in English by Axel T. Schreiner

Toto je domovská stránka Jay, LALR (1) parser generátor: Berkley yacc © revidovaná na C # a Java.

Vidieť:
Description

Súhrn class
dummy fake class, triggers javadoc.

Balíček jay popis

Používanie

jay číta špecifikáciu gramatiky zo súboru a generuje LALR (1) analyzátor pre neho. Parser sa skladá zo súboru parsovanie tabuliek a bežné vodiča z kostry, ktorá sa číta zo štandardného vstupu. Existujú vhodné kostry pre Java a C #. Tabuľky a vodič sa zapisujú na štandardný výstup.

 jay [-ctv] [-b file-prefix] grammar skeleton|<skeleton
  java -jar jay.jar [-ctv] [-b file-prefix] grammar skeleton|<skeleton

K dispozícii sú nasledujúce možnosti:

-b file-prefix zmení predponu predradiť pred druhotným názvami výstupného súboru do reťazca označenej súboru prefixom. Predvolený prefix je znak y.
-c zariadi smerníc preprocesor #line C by mala byť začlenená do výstupu. To je vhodný len pre C#.
-t zariadi pre ladenie informácií by sa mala zahrnúť do výstupu. Aktuálne informácie je riadený jay.yydebug.
-v spôsobí opis človeka čitateľný vytvoreného analyzátora má byť zapísaná do súboru file_prefix.output.

Ak jeden z premenných prostredia TMPDIR, TMP alebo TEMP je nastavený reťazec z premennej prostredia bude použitý ako názov adresára, kde sa vytvára dočasné súbory.

Vstupný formát

Vstupný formát a LALR (1) algoritmus neboli zmenené z yacc. Jeden by sa mal poradiť s rozsiahlou literatúru o yacc Podrobné informácie o písaní a ladenie gramatiky, zotavenie z chýb, stratégie na akcie, atď

Jediné rozdiely sú hodnoty stack, zakotvenie generovaného analyzátora v triede, a rozhranie skenera. Všetky z nich možno zmeniť úpravou proti kostre súbory. Zvyšok tejto časti je založených na skelete súbory distribuované s Jay.

Smernica% zväz bol odstránený. jay využíva objekt (alebo System.Object v C #) pre hodnotu zásobníka. V dôsledku toho je názov v štítkom notáciu <názov> odkazuje na triedu alebo rozhranie.

To má vplyv na odliatkov, ktoré Jay generuje: Ani C #, ani priradenie Java povolenie na liatych premenných. Z tohto dôvodu, notácie $$ odkazuje na objekt bez obsadenia pretože $$ je zvyčajne priradená. Ak $$ sa používa na iné účely, zvyčajne bude musieť zamestnávať explicitné typu $ <name> $, ktorý sa obrátil na obsadenie názvu.

Podobne, zápis $ n je zriedka priradená. Z tohto dôvodu bude Jay generovať obsadenie ak zápis $ <> n sa používa na zabránenie odlievanie.

jay nevyžaruje odliatky do objektu. Tieto odliatky sú väčšinou zbytočné a táto stratégia sa vyhýba veľa varovných správ, ale to by mohlo spôsobiť prekvapenie v preťažovania situácii.

jay nemá potuchy o dedičstve. To môže viesť k neoprávneným varovných správ sťažujú pochybných úloh. Domnievali sa, že tieto správy sú všeobecne užitočné, aj keď niektoré z nich sú chybné.

Generics

Tabuľky a kostra súbory Jay nepoužívajú parametrické typy. jay.yydebug je kódovaný bez parametrizované typy; Avšak, zdroje obsahujú kód generík v riadkoch, ktoré v tomto bode sú komentár.

Zápis <tag> môže obsahovať vnorené uholníky a v nich znaky [] prázdny? Okrem obvyklých alfanumerické znaky a. $ _. Avšak, odkazy na hodnotu zásobníka $ n sú odliate s použitím príslušnej značky a obsadenie do parametrické typu budú čerpať nekontrolovanou varovania v Jave.

Trieda parser by mohol byť komentovaný sSuppressWarnings (“nekontrolovaných”); Avšak, keď to môže byť spôsob života pre Java 5 je to múdre.

Skeleton Files

Binárne alebo zdroj na prevzatie obsahuje dva kostru súbory pre Javu a jeden pre C #. Kostra súbor riadi formát vytvorených tabuliek a zahŕňa skutočné analyzátor algoritmus, ktorý interpretuje tabuľky. Tieto algoritmy sú rovnaké vo všetkých distribuovaných súboroch, ale skeleton.tables inicializuje rôznych tabuliek čítaním súboru prostriedkov v čase vykonávania; to zabraňuje limit, ktorý systém Java ukladá na veľkosti kódu segmentu pre triedu.

Ak chcete vytvoriť súbor prostriedkov, generovať analyzátor pomocou skeleton.tables. Zo zdroja parsera extrahovať presne riadky začínajúce // rr a odstrániť práve túto predponu. Výsledný súbor by mal byť umiestnený v rovnakom adresári ako súbor triedy na analyzátora a musí používať názov triedy analyzátora a prípony .tables.

To by nemalo byť potrebné zmeniť kostre súbory, ale len v prípade, že sú značne poznamenal. Súbory sú line-orientované. Postava v prvom stĺpci určuje, čo sa stane na linke: # označuje komentár a linka je ignorovaný. , označí linku, ktorá je kopírovaná bez vedúci obdobia.

t označí riadok, ktorý je relevantný pre monitorovanie. Zvyčajne to je skopírovaný s predným // t; Ak je nastavená voľba -t linka kopírovať bez vedúceho t.

A konečne, linka s prednou polotovaru obsahuje príkaz, ktorý má za následok produkciu niektorých informácií tabuľky, a ktoré možno použiť zvyšok riadku ako parameter.

actions vydávať kód z akcií, ako tela spínača.
epilog vydávať text po druhej%%.
local vydávať text v%{ %} po prvej %%.
prolog vydávať text v%{ %} pred prvou %%.
tokens prefix vysielajú každý tokenu hodnotu ako inicializovaná identifikátor sa zvyškom linky ako prefix.
version comment vydávať // pripomienky sa zvyškom linky.
yyCheck prefix
yyDefRed prefix
yyDgoto prefix
yyGindex prefix
yyLen prefix
yyLhs prefix
yyRindex prefix
yySindex prefix
yyTable prefix
emitujú telo príslušnej tabuľky sa zvyškom linky ako prefix pre každý výstupný linky.
yyFinal prefix vydávať hodnotu ako Inicializátory sa zvyškom linky ako prefix.
yyNames prefix vydávať tabuľku ako zoznam slov s zvyšku riadku ako prefix pre každý výstupný linky.
yyNames-strings vydávať tabuľky ako zoznam sláčikových inicializáciu.
yyRule prefix vydávať tabuľku ako zoznam liniek s zvyšku riadku ako prefix pre každý výstupný linky.
yyRule-strings vydávať tabuľky ako zoznam sláčikových inicializáciu.

Každá tabuľka vovedie komentár s informáciami dimenzie.

Vedenie Class

Návrh súboru kostra musí vziať do úvahy dva problémy: ako vložiť analyzátor v triede a ako sa rozhranie k skeneru.

Distribuované kostra súbory očakávať, že používateľ dodať prológ v% {%} obsahujúci záhlavie triedy a dodávať doslovu po druhom %%, ktorý uzatvára túto triedu. jay nepozná názov triedy analyzátora.

Rozhranie pre vstup skenera je generovaný ako člen každého analyzátora triedy; to môže alebo nemusí byť dobrá voľba. Existujú tri spôsoby: záloha nemá žiadne argumenty a musia vracať logickú hodnotu indikujúca, že skener úspešne extrahuje ďalšie symbol vstupu; Token nemá žiadne argumenty a musia vrátiť aktuálny vstupný symbol ako celočíselnú hodnotu, ktorá parser očakáva; Hodnota nemá žiadne argumenty a môže vrátiť hodnotu objektu majú byť uvedené na štátnej / hodnota zásobníka pre symbol vstupu. Trasovanie očakáva tokenu a hodnotu za konštantnú funkcie medzi jednotlivými volania vopred.

Explicitné hodnôt prvkov sú generované ako konštanty v triede analyzátor. Jednotlivé znaky predstavujú samy; Avšak, pre tých Jay veria v ASCII skôr než znakovú sadu Unicode. To by mohlo byť lepšie definovať konštanty v rozhraní skenera, ale očakáva sa, že snímač je implementovaný ako vnútorné triedy analyzátora. pj podporuje tento názor, aj keď skener je výslovne vyrobené pomocou JLex.

Súbory na stiahnutie

Verzia:

  • 1.1.1, jún 2006.

Autor:

LEAVE A REPLY

Please enter your comment!
Please enter your name here