Dit is de opdracht yaccplan9 die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
yacc - nog een andere compiler-compiler
KORTE INHOUD
jacc [ optie ... ] Grammatica
PRODUCTBESCHRIJVING
Jacc converteert een contextvrije grammatica en vertaalcode naar een set tabellen voor een
LR(1) parser en vertaler. De grammatica kan dubbelzinnig zijn; gespecificeerde voorrangsregels zijn
gebruikt om onduidelijkheden te doorbreken.
Het uitvoerbestand, y.tab.c, moet door de C-compiler worden gecompileerd om een programma This te produceren
programma moet worden geladen met een lexicale analysatorfunctie, yylex(nietig) (vaak gegenereerd door
lex(1)), met een belangrijkste (int argc, verkolen *argv[]) programma, en met een foutafhandelingsroutine,
jjfout(char*).
De opties zijn:
-o uitgang Directe uitvoer naar het opgegeven bestand in plaats van y.tab.c.
-Dn Bestand maken y.debug, met diagnostische berichten. Om ze in te verwerken
de parser, compileer het met het preprocessor-symbool yydebug bepaald. Het bedrag van
diagnostische uitvoer van de parser wordt geregeld op basis van waarde n. De waarde 0 meldt
fouten; 1 rapporteert reducties; hogere waarden (maximaal 4) bevatten meer informatie
over staatstransities.
-v Bestand maken y.uitvoer, met een beschrijving van de parseertabellen en van
conflicten die voortkomen uit dubbelzinnigheden in de grammatica.
-d Bestand maken y.tab.h, met #define uitspraken die verband houden jacc-toegewezen
`tokencodes' met door de gebruiker opgegeven `tokennamen'. Neem het op in bronbestanden
dan y.tab.c om toegang te geven tot de tokencodes.
-s stengel Wijzig het voorvoegsel van de bestandsnamen y.tab.c, y.tab.h, y.debug en y.uitvoer naar
stengel.
-S Schrijf een parser die Stdio gebruikt in plaats van de print routines in libc.
-l Schakel #line-richtlijnen uit in de gegenereerde parser.
-a Genereer een parser die een argument van het type Yyarg neemt en dit argument doorgeeft
bij elke aanroep van de lexer-functie, yylex. Yyarg bevat per exemplaar
state en een enkel voor de gebruiker zichtbaar lid, arg, van het type void*.
De specificatie van jacc zelf is in wezen hetzelfde als de UNIX-versie die wordt beschreven in
onderstaande referenties. naast de -D optie, de belangrijkste relevante verschillen zijn:
De interface met de C-omgeving is standaard via dan
; de -S optie keert dit om.
De parser accepteert UTF-invoertekst (zie utf(7)), wat een aantal effecten heeft.
Ten eerste de retourwaarde van yylex() past niet meer in a kort; ten tweede, het starten
waarde voor niet-terminals is nu 0xE000 in plaats van 257.
De gegenereerde parser kan recursief zijn: acties kunnen oproepen Jawel, bijvoorbeeld om
een soort implementeren #include verklaring in een tolk.
Ten slotte zijn enkele ongedocumenteerde interne werkingen van de parser gewijzigd
kan van invloed zijn op programma's die te veel weten over de structuur ervan.
Gebruik yaccplan9 online met behulp van onworks.net-services