EngelsFransSpaans

Ad


OnWorks-favicon

gvpr - Online in de cloud

Voer gvpr uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht gvpr 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


gvpr - taal voor het scannen en verwerken van grafiekpatronen

KORTE INHOUD


gvpr [-icnqV?] [ -o uitbestand ] [ -a betoogt ] [ 'prog' | -f profiel ] [ bestanden ]

PRODUCTBESCHRIJVING


gvpr (Voorheen bekend als gpr) is een grafiekstroomeditor geïnspireerd door awk. Het kopieert invoer
grafieken naar zijn uitvoer, waarbij mogelijk hun structuur en attributen worden getransformeerd en nieuwe worden gecreëerd
grafieken of het afdrukken van willekeurige informatie. Het grafiekmodel is dat van
libcgraaf(3). In het bijzonder, gvpr leest en schrijft grafieken met behulp van de punttaal.

Eigenlijk, gvpr doorloopt elke invoergrafiek, aangeduid met $G, waarbij we elk knooppunt en elke rand bezoeken,
het matchen met de predicaat-actieregels die in het invoerprogramma worden geleverd. De regels zijn
op volgorde beoordeeld. Voor elk predikaat dat als waar wordt beoordeeld, geldt de bijbehorende actie
uitgevoerd. Tijdens het doorlopen wordt het huidige knooppunt of de rand die wordt bezocht aangegeven met $.

Voor elke invoergrafiek is er een doel-subgrafiek, aangegeven met $T, aanvankelijk leeg en gebruikt
om gekozen entiteiten te verzamelen, en een uitvoergrafiek, $O, gebruikt voor de eindverwerking en vervolgens
geschreven naar uitvoer. Standaard is de uitvoergrafiek de doelgrafiek. De uitvoergrafiek
kan worden ingesteld in het programma of, in beperkte zin, op de opdrachtregel.

OPTIES


De volgende opties worden ondersteund:

-a betoogt
De snaar betoogt wordt opgesplitst in door witruimte gescheiden tokens, met het individu
tokens beschikbaar als strings in de gvpr programmeer als ARGV[0],...,ARGV[ARGC-1].
Witruimtetekens binnen subtekenreeksen met enkele of dubbele aanhalingstekens, of voorafgegaan door een
backslash, worden genegeerd als scheidingstekens. Over het algemeen wordt een backslash-teken uitgeschakeld
elke speciale betekenis van het volgende teken. Merk op dat de tokens zijn afgeleid van
meervoudig -a vlaggen zijn aaneengeschakeld.

-c Gebruik de brongrafiek als de uitvoergrafiek.

-i Leid de door knooppunten geïnduceerde subgraafuitbreiding van de uitvoergrafiek af in de context van
zijn wortelgrafiek.

-o uitbestand
Zorgt ervoor dat de uitvoerstroom naar het opgegeven bestand wordt geschreven; standaard is de uitvoer
geschreven stdout.

-f profiel
Gebruik de inhoud van het opgegeven bestand als het programma dat op de invoer moet worden uitgevoerd. Als
profiel een schuine streep bevat, wordt de naam genomen als de padnaam van het bestand.
Anders, gvpr gebruikt de mappen die zijn opgegeven in de omgevingsvariabele
GVPRPATH om het bestand te zoeken. Als -f wordt niet gegeven, gvpr gebruikt de eerste niet‐
optie-argument als het programma.

-q Schakelt waarschuwingsberichten uit.

-n Schakelt het vooruitlezen van grafieken uit. Standaard de variabele $NG wordt ingesteld op de volgende grafiek
te verwerken. Hiervoor moet de volgende grafiek worden gelezen voordat de
huidige grafiek, die kan blokkeren als de volgende grafiek alleen wordt gegenereerd als reactie op
enige actie met betrekking tot de verwerking van de huidige grafiek.

-V Zorgt ervoor dat het programma versie-informatie afdrukt en afsluit.

-? Zorgt ervoor dat het programma gebruiksinformatie afdrukt en afsluit.

OPERANDEN


De volgende operand wordt ondersteund:

bestanden Namen van bestanden met 1 of meer grafieken in de punttaal. Als Nee -f optie
wordt gegeven, wordt de voornaam uit de lijst verwijderd en als invoerprogramma gebruikt.
Als de lijst met bestanden leeg is, stdin gebruikt.

PROGRAMMA'S


A gvpr programma bestaat uit een lijst van predikaat-actieclausules, met een van de volgende vormen:

BEGINNEN { actie }

BEG_G { actie }

N [ predikaat ] { actie }

E [ predikaat ] { actie }

END_G { actie }

EINDE { actie }

Een programma kan maximaal één van elk van de volgende bevatten BEGINNEN, END_G en EINDE clausules. Er kan
een willekeurig aantal zijn BEG_G, N en E uitspraken, de eerste toegepast op grafieken, de tweede op
knopen, de derde naar randen. Deze zijn onderverdeeld in blokken, een blok bestaande uit een
optioneel BEG_G verklaring en al N en E verklaringen tot de volgende BEG_G verklaring, indien
elk. De semantiek op het hoogste niveau van a gvpr programma zijn:

Evalueer de BEGINNEN clausule, indien aanwezig.
Voor elke invoergrafiek G {
Voor elk blok {
Zet de G als de huidige grafiek en het huidige object.
Evalueer de BEG_G clausule, indien aanwezig.
Voor elk knooppunt en elke rand in G {
Stel het knooppunt of de rand in als het huidige object.
Evalueer de N or E clausules, indien van toepassing.
}
}
Zet de G als het huidige object.
Evalueer de END_G clausule, indien aanwezig.
}
Evalueer de EINDE clausule, indien aanwezig.

De acties van de BEGINNEN, BEG_G, END_G en EINDE clausules worden uitgevoerd wanneer de clausules zijn
geëvalueerd. Voor N or E Bijzinnen kan het predikaat of de actie worden weggelaten. Als er
is geen predikaat met een actie, de actie wordt uitgevoerd op elk knooppunt of elke rand, zoals
gepast. Als er geen actie is en het predikaat evalueert naar waar, wordt de bijbehorende
knoop of rand wordt toegevoegd aan de doelgrafiek.

De blokken worden geëvalueerd in de volgorde waarin ze voorkomen. Binnen een blok, de N clausules
(E clausules) worden geëvalueerd in de volgorde waarin ze voorkomen. Houd er echter rekening mee dat
dat binnen een blok, N or E clausules kunnen worden geïnterlinieerd, afhankelijk van de doorloopvolgorde.

Predicaten en acties zijn reeksen uitspraken in het C-dialect, ondersteund door de
uitdrukken(3) bibliotheek. Het enige verschil tussen predicaten en acties is dat het eerste het geval is
moet een type hebben dat kan worden geïnterpreteerd als waar of onwaar. Hier de gebruikelijke C
Er wordt een conventie gevolgd, waarbij een waarde die niet nul is, als waar wordt beschouwd. Dit zou omvatten
niet-lege strings en niet-lege verwijzingen naar knooppunten, randen, enz. Maar als een string dat wel kan
worden geconverteerd naar een geheel getal, wordt deze waarde gebruikt.

Naast de gebruikelijke C-basistypes (komen te vervallen, int, verkolen, drijven, lang, Ongesigneerd en verdubbelen),
gvpr biedt snaar als synoniem voor teken*en de op grafieken gebaseerde typen knooppunt_t, rand_t,
grafiek_t en obj_t. De obj_t type kan worden gezien als een supertype van de andere 3 betonsoorten
soorten; het juiste basistype wordt dynamisch onderhouden. Naast deze basistypen zijn de
alleen andere ondersteunde type-expressies zijn (associatieve) arrays.

Constanten volgen de C-syntaxis, maar tekenreeksen kunnen tussen aanhalingstekens worden geplaatst "..." or '...'. gvpr
accepteert zowel C++-commentaar als cpp-type commentaar. Voor dit laatste, als een regel begint met
een '#'-teken, wordt de rest van de regel genegeerd.

Een statement kan een declaratie zijn van een functie, een variabele of een array, of een uitvoerbaar bestand
stelling. Voor declaraties is er één scope. Arraydeclaraties hebben de vorm:

type dan: reeks [ type0 ]

WAAR type0 is optioneel. Als dit wordt opgegeven, zal de parser die hele array afdwingen
subscripts hebben het opgegeven type. Als het niet wordt meegeleverd, kunnen allerlei soorten objecten dat wel zijn
gebruikt als onderschriften. Net als in C moeten variabelen en arrays worden gedeclareerd. In het bijzonder een
niet-gedeclareerde variabele wordt geïnterpreteerd als de naam van een attribuut van een knooppunt, rand of
grafiek, afhankelijk van de context.

Uitvoerbare instructies kunnen een van de volgende zijn:

{ [ verklaring ... ] }
uitdrukking // algemeen var = uitdrukking
als( uitdrukking ) verklaring [ anders verklaring ]
voor( uitdrukking ; uitdrukking ; uitdrukking ) verklaring
voor( reeks [ var ]) verklaring
voor( reeks [ var ]) verklaring
terwijl ( uitdrukking ) verklaring
schakelaar ( uitdrukking ) geval verklaringen
breken [ uitdrukking ]
voortzetten [ uitdrukking ]
terugkeer [ uitdrukking ]
Items tussen haakjes zijn optioneel.

In de tweede vorm van de For verklaring en de voor verklaring, de variabele var is ingesteld op
elke waarde wordt gebruikt als index in de opgegeven array en vervolgens de bijbehorende verklaring is
geëvalueerd. Voor numerieke en tekenreeksindexen worden de indices oplopend geretourneerd
(afnemende) numerieke of lexicografische volgorde voor For (voor, respectievelijk). Dit kan gebruikt worden
voor sorteren.

Functiedefinities kunnen alleen voorkomen in de BEGINNEN clausule.

Expressies omvatten de gebruikelijke C-expressies. Tekenreeksvergelijkingen met behulp van == en != behandel de
rechterhand operand als een patroon voor het matchen van reguliere expressies. Patronen
. ksh(1) syntaxis van bestandsovereenkomstpatronen. (Voor eenvoudige tekenreeksgelijkheid gebruikt u de strcmp
functie.

gvpr zal proberen een uitdrukking te gebruiken als tekenreeks of numerieke waarde, al naar gelang het geval. Beide
C-achtige casts en functiesjablonen zorgen ervoor dat conversies worden uitgevoerd, indien mogelijk.

Uitdrukkingen van grafisch type (dwz grafiek_t, knooppunt_t, edge_t, obj_t) kan worden gevolgd door een
veldverwijzing in de vorm van .naam. De resulterende waarde is de waarde van het attribuut
genoemd naam van het gegeven voorwerp. Bovendien kan in bepaalde contexten een niet-aangegeven,
ongewijzigde identificatie wordt beschouwd als een attribuutnaam. In het bijzonder dergelijke identificatiegegevens
geven attributen van respectievelijk het huidige knooppunt of de rand aan N en E clausules, en de
huidige grafiek in BEG_G en END_G clausules.

Zoals gewoonlijk in de libcgraaf(3) model, attributen hebben een stringwaarde. In aanvulling, gvpr
ondersteunt bepaalde pseudo-attributen van grafiekobjecten, die niet noodzakelijkerwijs een tekenreekswaarde hebben. Deze
weerspiegelen de intrinsieke eigenschappen van de grafiekobjecten en kunnen niet door de gebruiker worden ingesteld.

hoofd : knooppunt_t
de kop van een rand.

staart : knooppunt_t
de staart van een rand.

naam : snaar
de naam van een rand, knooppunt of grafiek. De naam van een rand heeft de vorm "<tail‐
naam>[]", waar is "->"Of"--" afhankelijk van
of de grafiek nu gericht is of niet. Het beugelgedeelte [] verschijnt alleen als de
edge heeft een niet-triviale sleutel.

ingraad : int
de helling van een knooppunt.

buitengraad : int
de buitengraad van een knooppunt.

mate : int
de graad van een knooppunt.

wortel : grafiek_t
de wortelgraaf van een object. De wortel van een wortelgraaf is zichzelf.

ouder : grafiek_t
de bovenliggende grafiek van een subgraaf. De ouder van een wortelgraaf is NULL

n_randen : int
het aantal randen in de grafiek

n_knooppunten : int
het aantal knooppunten in de grafiek

gerichte : int
waar (niet-nul) als de grafiek gericht is

streng : int
waar (niet-nul) als de grafiek strikt is

INGEBOUWD FUNCTIES


De volgende functies zijn ingebouwd gvpr. Deze functies retourneren verwijzingen naar de grafiek
voorwerpen keren terug NULL in geval van mislukking.

Grafieken en subgraaf
diagram(s : snaar, t : snaar): grafiek_t
maakt een grafiek waarvan de naam is s en waarvan het type wordt gespecificeerd door de string t.
Het negeren van hoofdlettergebruik, de karakters U, D, S, N de interpretatie ongericht hebben,
respectievelijk gericht, strikt en niet-strikt. Als t is leeg, een gericht, niet‐
strikte grafiek wordt gegenereerd.

ondertitel(g : grafiek_t, s : snaar): grafiek_t
maakt een subgraaf in grafiek g met naam s. Als de subgraaf al bestaat, is dat zo
teruggekeerd.

isSubg(g : grafiek_t, s : snaar): grafiek_t
retourneert de subgrafiek in de grafiek g met naam s, als het bestaat, of NULL anders.

fstsubg(g : grafiek_t): grafiek_t
retourneert de eerste subgrafiek in de grafiek gof NULL als er geen bestaat.

nxtsubg(sg : grafiek_t): grafiek_t
geeft de volgende subgraaf terug sgof NULL.

isDirect(g : grafiek_t): int
retourneert waar als en slechts als g is gericht.

isStreng(g : grafiek_t): int
retourneert waar als en slechts als g is streng.

nNodes(g : grafiek_t): int
geeft het aantal knooppunten terug g.

n Randen(g : grafiek_t): int
retourneert het aantal randen in g.

Nodes
knooppunt(sg : grafiek_t, s : snaar): knooppunt_t
creëert een knooppunt in de grafiek g van naam s. Als een dergelijk knooppunt al bestaat, wordt het geretourneerd.

subknooppunt(sg : grafiek_t, n : knooppunt_t): knooppunt_t
voegt het knooppunt in n in de subgraaf g. Retourneert het knooppunt.

fstknooppunt(g : grafiek_t): knooppunt_t
retourneert het eerste knooppunt in de grafiek gof NULL als er geen bestaat.

nxtknooppunt(n : knooppunt_t): knooppunt_t
retourneert het volgende knooppunt erna n in de wortelgrafiek, of NULL.

nxtnode_sg(sg : grafiek_t, n : knooppunt_t): knooppunt_t
retourneert het volgende knooppunt erna n in sgof NULL.

isNode(sg : grafiek_t, s : snaar): knooppunt_t
zoekt naar een knoop in (sub)grafiek sg van naam s. Als zo'n knooppunt bestaat, wordt het geretourneerd.
Anders, NULL wordt geretourneerd.

isSubknooppunt(sg : grafiek_t, n : knooppunt_t): int
retourneert niet-nul als knooppunt n staat in (sub)grafiek sg, of anders nul.

graad van(sg : grafiek_t, n : knooppunt_t): int
geeft de ingraad van het knooppunt terug n in (sub)grafiek sg.

buitengraadVan(sg : grafiek_t, n : knooppunt_t): int
retourneert de buitengraad van het knooppunt n in (sub)grafiek sg.

graad van(sg : grafiek_t, n : knooppunt_t): int
geeft de graad van het knooppunt terug n in (sub)grafiek sg.

randen
rand(t : knooppunt_t, h : knooppunt_t, s : snaar): rand_t
creëert een rand met een staartknooppunt t, hoofdknooppunt h en naam s in de wortelgrafiek. Als de
grafiek ongericht is, is het onderscheid tussen kop- en staartknopen onbelangrijk.
Als een dergelijke rand al bestaat, wordt deze geretourneerd.

edge_sg(sg : grafiek_t, t : knooppunt_t, h : knooppunt_t, s : snaar): rand_t
creëert een rand met een staartknooppunt t, hoofdknooppunt h en naam s in (sub)grafiek sg (en alles
bovenliggende grafieken). Als de grafiek ongericht is, het onderscheid tussen kop en staart
knooppunten is onbelangrijk. Als een dergelijke rand al bestaat, wordt deze geretourneerd.

onderduiken(g : grafiek_t, e : rand_t): rand_t
plaatst de rand e in de subgraaf g. Geeft de rand terug.

isEdge(t : knooppunt_t, h : knooppunt_t, s : snaar): rand_t
zoekt naar een rand met staartknooppunt t, hoofdknooppunt h en naam s. Als de grafiek is
ongericht, is het onderscheid tussen hoofd- en staartknooppunten onbelangrijk. Als zo'n
edge bestaat, wordt het geretourneerd. Anders, NULL wordt geretourneerd.

isEdge_sg(sg : grafiek_t, t : knooppunt_t, h : knooppunt_t, s : snaar): rand_t
zoekt naar een rand met staartknooppunt t, hoofdknooppunt h en naam s in (sub)grafiek sg. Indien de
grafiek ongericht is, is het onderscheid tussen kop- en staartknopen onbelangrijk.
Als een dergelijke rand bestaat, wordt deze geretourneerd. Anders, NULL wordt geretourneerd.

isSubrand(g : grafiek_t, e : rand_t): int
retourneert niet-nul als rand e staat in (sub)grafiek sg, of anders nul.

stoer(n : knooppunt_t): rand_t
retourneert de eerste buitenrand van het knooppunt n in de wortelgrafiek.

fstout_sg(sg : grafiek_t, n : knooppunt_t): rand_t
retourneert de eerste buitenrand van het knooppunt n in (sub)grafiek sg.

nxtuit(e : rand_t): rand_t
geeft de volgende outedge terug e in de wortelgrafiek.

nxtout_sg(sg : grafiek_t, e : rand_t): rand_t
geeft de volgende outedge terug e in grafiek sg.

fstin(n : knooppunt_t): rand_t
retourneert de eerste inedge van het knooppunt n in de wortelgrafiek.

fstin_sg(sg : grafiek_t, n : knooppunt_t): rand_t
retourneert de eerste inedge van het knooppunt n in grafiek sg.

nxtin(e : rand_t): rand_t
geeft de volgende rechte lijn erna terug e in de wortelgrafiek.

nxtin_sg(sg : grafiek_t, e : rand_t): rand_t
geeft de volgende rechte lijn erna terug e in grafiek sg.

fstege(n : knooppunt_t): rand_t
geeft de eerste rand van het knooppunt terug n in de wortelgrafiek.

fsedge_sg(sg : grafiek_t, n : knooppunt_t): rand_t
geeft de eerste rand van het knooppunt terug n in grafiek sg.

nxedge(e : rand_t, knooppunt_t): rand_t
geeft de volgende rand erna terug e in de wortelgrafiek.

nxedge_sg(sg : grafiek_t, e : rand_t, knooppunt_t): rand_t
geeft de volgende rand erna terug e in de grafiek sg.

omhoog(e : rand_t, knooppunt_t): knooppunt_t
retourneert het knooppunt op de rand e niet gelijk aan n. Retourneert NULL als n is geen knooppunt van
e. Dit kan handig zijn bij gebruik fstege en nxedge om de buren van op te sommen
n.

Diagram I / O
schrijven(g : grafiek_t): komen te vervallen
prints g in puntformaat op de uitvoerstroom.

schrijfG(g : grafiek_t, fnaam : snaar): komen te vervallen
prints g in puntformaat in het bestand fnaam.

fschrijvenG(g : grafiek_t, fd : int): komen te vervallen
prints g in puntformaat op de open stream die wordt aangeduid met het gehele getal fd.

leesG(fnaam : snaar): grafiek_t
retourneert een grafiek die uit het bestand is gelezen fnaam. De grafiek moet in puntindeling zijn. Als Nee
grafiek kan worden gelezen, NULL wordt geretourneerd.

freadG(fd : int): grafiek_t
geeft de volgende grafiek terug die uit de open stroom is gelezen fd. Geeft terug NULL aan het einde van het bestand.

Diagram diversen
verwijderen(g : grafiek_t, x : obj_t): komen te vervallen
verwijdert object x uit grafiek g. Indien g is NULL, gebruikt de functie de wortelgrafiek van
x. Indien x een grafiek of subgraaf is, is deze gesloten tenzij x is gesloten.

is in(g : grafiek_t, x : obj_t): int
retourneert waar als x staat in subgraaf g.

kloonG(g : grafiek_t, s : snaar): grafiek_t
creëert een kloon van de grafiek g met naam van s. Indien s is "", de gemaakte grafiek heeft de
dezelfde naam als g.

klonen(g : grafiek_t, x : obj_t): obj_t
creëert een kloon van een object x in grafiek g. In het bijzonder heeft het nieuwe object hetzelfde
naam/waarde-attributen en structuur als het originele object. Als een object met de
dezelfde sleutel als x al bestaat, worden de attributen ervan overlapt met die van x en
voorwerp wordt geretourneerd. Als een rand wordt gekloond, worden beide eindpunten impliciet gekloond.
Als een grafiek wordt gekloond, worden alle knooppunten, randen en subgrafieken impliciet gekloond. Als x
is een grafiek, g kan zijn NULL, in welk geval het gekloonde object een nieuwe root zal zijn
grafiek. In dit geval is de oproep gelijk aan kloonG(x,"").

kopiëren(g : grafiek_t, x : obj_t): obj_t
maakt een kopie van het object x in grafiek g, waarbij het nieuwe object dezelfde naam/waarde heeft
attributen als het oorspronkelijke object. Als een object met dezelfde sleutel als x al
bestaat, worden de attributen ervan overlapt met die van x en het object wordt geretourneerd. Opmerking
dat dit een oppervlakkige kopie is. Als x is een grafiek, geen van zijn knooppunten, randen of subgrafen
worden naar de nieuwe grafiek gekopieerd. Als x een rand is, worden de eindpunten gemaakt als
noodzakelijk, maar ze worden niet gekloond. Als x is een grafiek, g kan zijn NULL, in welk geval
het gekloonde object zal een nieuwe hoofdgrafiek zijn.

kopieA(src : obj_t, TGT : obj_t): int
kopieert de attributen van het object src Bezwaar maken TGT, waarbij alle attribuutwaarden worden overschreven
TGT in eerste instantie kan hebben.

induceren(g : grafiek_t): komen te vervallen
strekt g naar zijn knooppunt-geïnduceerde subgraafextensie in zijn wortelgraaf.

heeftAttr(src : obj_t, naam : snaar): int
retourneert niet-nul if-object src heeft een attribuut waarvan de naam is naam. Het retourneert 0
anders.

isAttr(g : grafiek_t, soort : snaar, naam : snaar): int
retourneert niet-nul als het een attribuut is naam is gedefinieerd in g voor objecten van de
gegeven soort. Voor knooppunten, randen en grafieken geldt: soort moet "N", "E" en "G" zijn,
respectievelijk. Anders wordt 0 geretourneerd.

leeftijd(src : obj_t, naam : snaar): snaar
retourneert de waarde van het attribuut naam in voorwerp src. Dit is handig voor die gevallen
wanneer naam conflicteert met een van de trefwoorden zoals "head" of "root". Als de
attribuut niet is gedeclareerd in de grafiek, zal de functie het initialiseren met
een standaardwaarde van "". Om dit te voorkomen, moet men de heeftAttr or isAttr functie
om te controleren of het attribuut bestaat.

een verzameling(src : obj_t, naam : snaar, waarde : snaar): int
stelt de waarde van het attribuut in naam in voorwerp src naar waarde. Retourneert 0 bij succes,
niet-nul bij falen. Zien leeftijd bovenstaand.

getDflt(g : grafiek_t, soort : snaar, naam : snaar): snaar
retourneert de standaardwaarde van het attribuut naam in objecten in g van het gegeven soort. Voor
knooppunten, randen en grafieken, soort moet respectievelijk "N", "E" en "G" zijn. Als de
attribuut niet is gedeclareerd in de grafiek, zal de functie het initialiseren met
een standaardwaarde van "". Om dit te voorkomen, moet men de isAttr functie om te controleren
dat het attribuut bestaat.

setDflt(g : grafiek_t, soort : snaar, naam : snaar, waarde : snaar): int
stelt de standaardwaarde van het attribuut in naam naar waarde in objecten in g van het gegeven
soort. Voor knooppunten, randen en grafieken geldt: soort moet respectievelijk "N", "E" en "G" zijn.
Retourneert 0 bij succes, niet-nul bij mislukking. Zien getDflt bovenstaand.

fstAttr(g : grafiek_t, soort : snaar): snaar
retourneert de naam van het eerste attribuut van objecten in g van het gegeven soort. Voor
knooppunten, randen en grafieken, soort moet respectievelijk "N", "E" en "G" zijn. Als er
geen attributen zijn, wordt de tekenreeks "" geretourneerd.

nxtAttr(g : grafiek_t, soort : snaar, naam : snaar): snaar
retourneert de naam van het volgende attribuut van objecten in g van het gegeven soort na de
attribuut naam. Het betoog naam moet de naam zijn van een bestaand attribuut; Het
is doorgaans de retourwaarde van een eerdere aanroep naar fstAttr or nxtAttr. Voor
knooppunten, randen en grafieken, soort moet respectievelijk "N", "E" en "G" zijn. Als er
zijn er geen attributen meer, dan wordt de string "" teruggegeven.

compOf(g : grafiek_t, n : knooppunt_t): grafiek_t
retourneert de verbonden component van de grafiek g knooppunt bevatten n, als een subgraaf van
g. De subgraaf bevat alleen de knooppunten. Men kan gebruiken induceren om de randen toe te voegen. De
functie mislukt en keert terug NULL if n is niet in g. Connectiviteit is gebaseerd op de
onderliggende ongerichte grafiek van g.

soort van(obj : obj_t): snaar
geeft een indicatie van het type van obj. Voor knooppunten, randen en grafieken keert het terug
"N", "E" en "G", respectievelijk.

slot(g : grafiek_t, v : int): int
implementeert grafiekvergrendeling op wortelgrafieken. Als het gehele getal v positief is, is de grafiek dat ook
zo instellen dat toekomstige oproepen naar verwijderen hebben geen onmiddellijk effect. Als v is nul, de
grafiek is ontgrendeld. Als er een oproep is geweest om de grafiek te verwijderen terwijl deze aanwezig was
vergrendeld, de grafiek is gesloten. Als v negatief is, wordt er niets gedaan. In alle gevallen is de
vorige vergrendelingswaarde wordt geretourneerd.

Strings
sprint(fmt : snaar, ...): snaar
retourneert de tekenreeks die resulteert uit het opmaken van de waarden van de expressies
optredend na fmt volgens de printf(3) formaat fmt

gsub(str : snaar, pat : snaar): snaar

gsub(str : snaar, pat : snaar, antwoord : snaar): snaar
Retourneren str waarbij alle substrings overeenkomen pat verwijderd of vervangen door antwoord,
respectievelijk.

beneden(str : snaar, pat : snaar): snaar

beneden(str : snaar, pat : snaar, antwoord : snaar): snaar
Retourneren str met de meest linkse subtekenreeks die overeenkomt pat verwijderd of vervangen door antwoord,
respectievelijk. De tekens '^' en '$' mogen aan het begin en einde worden gebruikt,
respectievelijk van pat om het patroon aan het begin of einde van te verankeren str.

substr(str : snaar, idx : int): snaar

substr(str : snaar, idx : int, len : int): snaar
retourneert de subtekenreeks van str beginnend bij positie idx naar het einde van de tekenreeks of
lengte len, respectievelijk. Indexeren begint bij 0. Als idx negatief is of idx is
groter dan de lengte van str, er treedt een fatale fout op. Zo ook in de tweede
geval, als len negatief is of idx + len groter is dan de lengte van str, een fatale
fout optreedt.

strcmp(s1 : snaar, s2 : snaar): int
biedt de standaard C-functie strcmp(3).

lengte(s : snaar): int
geeft de lengte van de tekenreeks terug s.

index(s : snaar, t : snaar): int

index(s : snaar, t : snaar): int
retourneert de index van het teken in de tekenreeks s waar de meest linkse (meest rechtse) kopie is
van touw t kan worden gevonden, of -1 als t is geen substring van s.

match(s : snaar, p : snaar): int
retourneert de index van het teken in de tekenreeks s waar de meest linkse overeenkomst van het patroon
p kan worden gevonden, of -1 als er geen subtekenreeks van is s lucifers p.

toupeer(s : snaar): snaar
geeft een versie terug van s waarbij de alfabetische tekens worden omgezet in hoofdletters.

verlagen(s : snaar): snaar
geeft een versie terug van s waarbij de alfabetische tekens worden omgezet in kleine letters.

canon(s : snaar): snaar
geeft een versie terug van s geschikt om te worden gebruikt als identificatie in een puntbestand.

html(g : grafiek_t, s : snaar): snaar
retourneert een ``magische'' versie van s als een HTML-tekenreeks. Dit zal normaal gesproken gewend zijn
voeg een HTML-achtig label toe aan een grafiekobject. Merk op dat de geretourneerde string leeft in
g. In het bijzonder zal het worden vrijgelaten wanneer g is gesloten, en om te fungeren als een HTML-string,
het moet worden gebruikt met een object van g. Merk bovendien op dat de hoekbeugel
citaten horen daar niet bij s. Deze worden toegevoegd als g is geschreven in concrete DOT
formaat.

ishtml(s : snaar): int
retourneert niet-nul als en slechts als s is een HTML-tekenreeks.

xOf(s : snaar): snaar
retourneert de tekenreeks "x" indien s heeft de vorm "x,y", waar beide x en y zijn numeriek.

jOf(s : snaar): snaar
retourneert de tekenreeks "y" indien s heeft de vorm "x,y", waar beide x en y zijn numeriek.

llvan(s : snaar): snaar
retourneert de tekenreeks "llx,lly" indien s heeft de vorm "llx,lly,ux,ury", waar alles llx,
lly, ux en ury zijn numeriek.

urOf(s)
van(s : snaar): snaar retourneert de tekenreeks "ux,ury" indien s heeft de vorm
"llx,lly,ux,ury", waar alles llx, lly, ux en ury zijn numeriek.

sscanf(s : snaar, fmt : snaar, ...): int
scant de string s, waarden extraheren volgens de sscanf(3) formaat fmt. De
waarden worden opgeslagen in de volgende adressen fmt, adressen met de vorm &v,
WAAR v is een gedeclareerde variabele van het juiste type. Retourneert het aantal items
succesvol gescand.

spleet(s : snaar, arr : reeks, sept : snaar): int

spleet(s : snaar, arr : reeks): int

penningen(s : snaar, arr : reeks, sept : snaar): int

penningen(s : snaar, arr : reeks): int
De spleet functie breekt de string s in velden, terwijl de penningen functie
verdeelt de string in tokens. Een veld bestaat uit allemaal niet-scheidingstekens
tussen twee scheidingstekens of het begin of einde van de tekenreeks. Zo kan een
veld mag de lege tekenreeks zijn. Een token is een maximale, niet-lege substring, niet
met een scheidingsteken. De scheidingstekens zijn de tekens die in de
sept argument. Indien sept niet is opgegeven, is de standaardwaarde "\t\n". De
functies retourneren het aantal velden of tokens.

De velden en tokens worden opgeslagen in de argumentarray. De array moet zijn snaar-
gewaardeerd en, als er een indextype is opgegeven, moet dit ook zo zijn int. De vermeldingen worden geïndexeerd
door opeenvolgende gehele getallen, beginnend bij 0. Alle waarden die al in de array zijn opgeslagen, zullen
overschreven worden, of nog steeds aanwezig zijn nadat de functie terugkeert.

I / O
print(...): komen te vervallen
afdrukken( uitdrukken, ... ) drukt achtereenvolgens een tekenreeksrepresentatie van elk argument af
stdout, gevolgd door een nieuwe regel.

printf(fmt : snaar, ...): int

printf(fd : int, fmt : snaar, ...): int
drukt de tekenreeks af die resulteert uit het opmaken van de waarden van de volgende expressies
fmt volgens de printf(3) formaat fmt. Retourneert 0 bij succes. Standaard is dit
afdrukken op stdout. Als het optionele gehele getal fd wordt gegeven, wordt de uitvoer geschreven op het
open stream geassocieerd met fd.

scanf(fmt : snaar, ...): int

scanf(fd : int, fmt : snaar, ...): int
scant in waarden van een invoerstroom volgens de scanf(3) formaat fmt. De
waarden worden opgeslagen in de volgende adressen fmt, adressen met de vorm &v,
WAAR v is een gedeclareerde variabele van het juiste type. Standaard leest het van
stdin. Als het optionele gehele getal fd wordt gegeven, wordt invoer uit de open stream gelezen
geassocieerd met fd. Retourneert het aantal items dat met succes is gescand.

openF(s : snaar, t : snaar): int
opent het bestand s als een I/O-stream. Het stringargument t geeft aan hoe het bestand is
geopend. De argumenten zijn dezelfde als voor de C-functie open(3). Het retourneert een
geheel getal dat de stream aangeeft, of -1 bij een fout.

Zoals gebruikelijk zijn streams 0, 1 en 2 al open as stdin, stdout en stderr,
respectievelijk. Sinds gvpr mag gebruiken stdin om de invoergrafieken te lezen, moet de gebruiker dat doen
vermijd het gebruik van deze stream.

sluitenF(fd : int): int
sluit de open stroom aangegeven door het gehele getal fd. Streams 0, 1 en 2 kunnen dat niet zijn
gesloten. Retourneert 0 bij succes.

leesL(fd : int): snaar
retourneert de volgende regel die is gelezen uit de invoerstroom fd. Het retourneert de lege tekenreeks ""
aan het einde van het bestand. Houd er rekening mee dat het teken voor de nieuwe regel in de geretourneerde tekenreeks blijft staan.

Math
exp(d : verdubbelen): verdubbelen
geeft e terug aan de dde macht.

inloggen(d : verdubbelen): verdubbelen
retourneert de natuurlijke log van d.

vierkante meter(d : verdubbelen): verdubbelen
geeft de vierkantswortel van het dubbele terug d.

pow(d : verdubbelen, x : verdubbelen): verdubbelen
Retourneren d verheven tot de xde macht.

cos(d : verdubbelen): verdubbelen
geeft de cosinus van d.

zonde(d : verdubbelen): verdubbelen
geeft de sinus van . terug d.

atan2(y : verdubbelen, x : verdubbelen): verdubbelen
geeft de boogtangens van y / x in het bereik -pi tot pi.

MIN(y : verdubbelen, x : verdubbelen): verdubbelen
geeft het minimum terug van y en x.

MAX(y : verdubbelen, x : verdubbelen): verdubbelen
geeft het maximum terug van y en x.

associatief arrays
# arr : int
retourneert het aantal elementen in de array arr.

idx in arr : int
retourneert 1 als er een waarde is ingesteld voor index idx in de reeks arr. Het retourneert 0
anders.

uitgeschakeld(v : reeks, idx): int
verwijdert het item geïndexeerd door idx. Het retourneert 1 als het item bestond, anders 0.

uitgeschakeld(v : reeks): komen te vervallen
initialiseert de array opnieuw.

Diversen
afrit(v : int): komen te vervallen
oorzaken gvpr om af te sluiten met de exitcode v.

system(cmd : snaar): int
biedt de standaard C-functie system(3). Het voert uit cmd in de shell van de gebruiker
omgeving en retourneert de afsluitstatus van de shell.

rand() : verdubbelen
retourneert een pseudo-willekeurig dubbel tussen 0 en 1.

zand() : int

zand(v : int): int
stelt een startpunt in voor de generator van willekeurige getallen. Het optionele argument geeft het zaad;
als het wordt weggelaten, wordt de huidige tijd gebruikt. De vorige startwaarde wordt geretourneerd.
zand moet worden gebeld voordat er wordt gebeld rand.

kleurx(kleur : snaar, fmt : snaar): snaar
vertaalt een kleur van het ene formaat naar het andere. De kleur argument moet een kleur zijn
in een van de herkende stringrepresentaties. De fmt waarde zou er een moeten zijn
"RGB", "RGBA", "HSV" of "HSVA". Bij een fout wordt een lege tekenreeks geretourneerd.

INGEBOUWD VARIABELEN


gvpr biedt bepaalde speciale, ingebouwde variabelen, waarvan de waarden automatisch worden ingesteld
gvpr afhankelijk van de context. Behalve zoals vermeld, kan de gebruiker zijn waarden niet wijzigen.

$ : obj_t
geeft het huidige object (knooppunt, rand, grafiek) aan, afhankelijk van de context. Het is niet
beschikbaar in BEGINNEN or EINDE clausules.

$F : snaar
is de naam van het huidige invoerbestand.

$G : grafiek_t
geeft de huidige grafiek aan die wordt verwerkt. Het is niet beschikbaar binnen BEGINNEN or EINDE
clausules.

$NG : grafiek_t
geeft de volgende grafiek aan die moet worden verwerkt. Als $NG is NULL, de huidige grafiek $G is de
laatste grafiek. Merk op dat als de invoer afkomstig is van stdin, de laatste grafiek dat niet kan zijn
bepaald totdat de invoerleiding gesloten is. Het is niet beschikbaar binnen BEGINNEN or EINDE
clausules, of als de -n vlag wordt gebruikt.

$O : grafiek_t
geeft de uitvoergrafiek aan. Voordat de grafiek wordt doorlopen, wordt deze geïnitialiseerd op het doel
grafiek. Na doortocht en eventuele END_G acties, als het verwijst naar een niet-lege grafiek,
die grafiek wordt afgedrukt op de uitvoerstroom. Het is alleen geldig in N, E en END_G
clausules. De uitvoergrafiek kan door de gebruiker worden ingesteld.

$T : grafiek_t
geeft de huidige doelgrafiek aan. Het is een subgraaf van $G en is alleen verkrijgbaar in
N, E en END_G clausules.

$tgtnaam : snaar
geeft de naam van de doelgrafiek aan. Standaard staat deze ingesteld op "gvpr_resultaat". Indien
meerdere keren gebruikt tijdens de uitvoering van gvpr, wordt de naam toegevoegd met een
geheel getal. Deze variabele kan door de gebruiker worden ingesteld.

$tvroot : knooppunt_t
geeft het beginknooppunt aan voor een (gerichte of ongerichte) diepte-eerst of breedte-
eerste doorgang van de grafiek (vgl. $tvtype onderstaand). De standaardwaarde is NULL For
elke invoergrafiek. Na het doorlopen bij de gegeven wortel, als de waarde van $tvroot
is veranderd, zal een nieuwe traversal beginnen met de nieuwe waarde van $tvroot. Ook instellen
$tvvolgende hieronder.

$tvvolgende : knooppunt_t
geeft het volgende startknooppunt aan voor een (gerichte of ongerichte) diepte-eerst of
breedte-eerste doorgang van de graaf (vgl. $tvtype onderstaand). Als een doortocht is voltooid
en $tvroot is niet gereset, maar de $tvvolgende is ingesteld maar niet gebruikt, dit
node zal worden gebruikt als de volgende keuze voor $tvroot. De standaardwaarde is NULL For
elke invoergrafiek.

$tvedge : rand_t
Voor BFS- en DFS-traversals wordt dit ingesteld op de rand die wordt gebruikt om de stroom te bereiken
knooppunt of rand. Aan het begin van een verplaatsing, of voor andere soorten verplaatsingen, wordt de
Waarde is NULL.

$tvtype : tvtype_t
geeft aan hoe gvpr doorkruist een grafiek. Er kan slechts één van de constante waarden worden aangenomen
met de voorvoegsel "TV_", hieronder beschreven. TV_flat is de standaard.

In de onderliggende grafiekbibliotheek cgraaf(3) krijgen randen in ongerichte grafieken een
willekeurige richting. Dit wordt gebruikt voor traversals, zoals TV_fwd, vereisend
gerichte randen.

ARGC : int
geeft het aantal argumenten aan dat is opgegeven door de -a betoogt opdrachtregelargument.

ARGV : snaar reeks
geeft de reeks argumenten aan die wordt gespecificeerd door de -a betoogt opdrachtregelargument. De
ie argument wordt gegeven door ARGV[i].

INGEBOUWD CONSTANTEN


Er zijn verschillende symbolische constanten gedefinieerd door gvpr.

NULL : obj_t
een nulobjectreferentie, gelijk aan 0.

TV_flat : tvtype_t
een eenvoudige, vlakke doorgang, waarbij grafiekobjecten in schijnbaar willekeurige volgorde worden bezocht.

TV_ne : tvtype_t
een traversal die eerst alle knooppunten bezoekt en vervolgens alle randen.

TV_nl : tvtype_t
een traversal die eerst alle randen bezoekt en vervolgens alle knooppunten.

TV_dfs : tvtype_t
TV_postdfs : tvtype_t
TV_prepostdfs : tvtype_t
een doortocht door de grafiek met behulp van een diepte-eerst-zoekopdracht op het onderliggende ongerichte
grafiek. Om de overtocht te maken, gvpr zal de waarde ervan controleren $tvroot. Als dit de
dezelfde waarde die het eerder had (aan het begin wordt de vorige waarde geïnitialiseerd
naar NULL.) gvpr zal eenvoudigweg op zoek gaan naar een niet-bezocht knooppunt en het verbonden knooppunt doorkruisen
bestanddeel. Aan de andere kant, als $tvroot is veranderd, zal het verbonden onderdeel dat ook doen
worden bezocht, ervan uitgaande dat het nog niet eerder is bezocht of, als $tvroot is NULL
de doortocht zal stoppen. Houd er rekening mee dat het gebruik van TV_dfs en $tvroot, het is mogelijk om te creëren
een oneindige lus.

Standaard wordt de doortocht uitgevoerd in pre-order. Dat wil zeggen dat een knooppunt eerder wordt bezocht
al zijn onbezochte randen. Voor TV_postdfs, zijn alle onbezochte randen van een knooppunt
bezocht vóór het knooppunt. Voor TV_prepostdfs, wordt een knooppunt tweemaal bezocht, vóór en
na al zijn onbezochte randen.

TV_fwd : tvtype_t
TV_postfwd : tvtype_t
TV_prepostfwd : tvtype_t
Een doorgang van de grafiek met behulp van een diepte-eerst-zoekopdracht, uitsluitend op de volgende grafiek
voorwaartse bogen. De keuze van de wortels voor de verplaatsing is dezelfde als beschreven voor
TV_dfs boven. De andere volgorde van bezoek gespecificeerd door TV_fwd, TV_postfwd
en TV_prepostfwd zijn dezelfde als die gespecificeerd door de analoge traversals
TV_dfs, TV_postdfs en TV_prepostdfs.

TV_rev : tvtype_t
TV_postrev : tvtype_t
TV_prepostrev : tvtype_t
Een doorgang van de grafiek met behulp van een diepte-eerst-zoekopdracht, uitsluitend op de volgende grafiek
omgekeerde bogen. De keuze van de wortels voor de verplaatsing is dezelfde als beschreven voor
TV_dfs boven. De andere volgorde van bezoek gespecificeerd door TV_rev, TV_postrev
en TV_prepostrev zijn dezelfde als die gespecificeerd door de analoge traversals
TV_dfs, TV_postdfs en TV_prepostdfs.

TV_bfs : tvtype_t
Een traversal van de grafiek met behulp van een breedte-eerste zoekopdracht op de grafiek waarbij de rand wordt genegeerd
routebeschrijving. Zie het item op TV_dfs hierboven voor de rol van $tvroot.

Voorbeelden


gvpr -i 'N[kleur=="blauw"]' bestand.gv

Genereer de knooppunt-geïnduceerde subgraaf van alle knooppunten met de kleur blauw.

gvpr -c 'N[color=="blauw"]{kleur = "rood"}' bestand.gv

Maak alle blauwe knooppunten rood.

BEGINNEN { int n, e; int tot_n = 0; int tot_e = 0; }
BEG_G {
n = nNodes($G);
e = nEdges($G);
printf ("%D knooppunten %d randen %s\n", n, e, $G.naam);
tot_n += n;
tot_e += e;
}
EINDE { printf ("%D knooppunten %d randen totaal\n", tot_n, tot_e) }

Versie van het programma gc.

gvpr -c ""

Gelijkwaardig aan nop.

BEG_G { grafiek_t g = diagram ("samenvoegen", "S"); }
E {
knooppunt_t h = kloon(g,$.head);
knooppunt_t t = kloon(g,$.tail);
rand_t e = rand(t,h,"");
e.gewicht = e.gewicht + 1;
}
END_G { $O = g; }

Produceert een strikte versie van de invoergrafiek, waarbij het gewichtsattribuut van een rand wordt weergegeven
geeft aan hoeveel randen uit de invoergrafiek de rand vertegenwoordigt.

BEGINNEN {knooppunt_t n; int graad[]}
E{graad[hoofd]++; deg[staart]++; }
END_G {
For (graden[n]) {
printf ("graden[%s] = %d\n", n.naam, graad[n]);
}
}

Berekent de graden van knooppunten met randen.

BEGINNEN {
int i, inspringen;
int gezien[string];
komen te vervallen prInd (int cnt) {
For (i = 0; i < cnt; ik++) printf (" ");
}
}
BEG_G {

$tvtype = TV_prepostfwd;
$tvroot = knooppunt($,ARGV[0]);
}
N {
if (gezien[$.name]) inspringen--;
anders {
prInd(streepje);
print ($.naam);
gezien[$.name] = 1;
streepje++;
}
}

Drukt de diepte-eerste verplaatsing van de grafiek af, te beginnen met het knooppunt waarvan de naam is
ARGV[0], als een ingesprongen lijst.

MILIEU


GVPRPATH
Door dubbele punten gescheiden lijst van mappen die moeten worden doorzocht om het bestand te vinden dat is opgegeven door
de -f optie. gvpr heeft een standaardlijst ingebouwd. If GVPRPATH is niet gedefinieerd, de
standaardlijst wordt gebruikt. Als GVPRPATH begint met een dubbele punt, de lijst wordt gevormd door
aanhangen GVPRPATH naar de standaardlijst. Als GVPRPATH eindigt met een dubbele punt, de lijst is
gevormd door de standaardlijst eraan toe te voegen GVPRPATH. Anders, GVPRPATH is gebruikt voor
de lijst.

Op Windows-systemen vervangt u ``dubbele punt'' door ``puntkomma'' in de vorige paragraaf.

Gebruik gvpr online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    CalcTools
    CalcTools
    Java-bron bedoeld om te dienen als een
    nexus voor het onderwijzen van zowel wiskunde als
    softwareoplossingen voor berekeningen op
    iteratieve vergelijkingen. Openbare interfaces
    laat een...
    CalcTools downloaden
  • 2
    Rocket.Chat Desktop-client
    Rocket.Chat Desktop-client
    Rocket.Chat Desktop-client is de
    officiële desktop-app voor Rocket.Chat,
    het simpele maar krachtige open source web
    chat-platform. Het is getest op macOS,
    Ramen...
    Download Rocket.Chat Desktop-client
  • 3
    KantoorVloer
    KantoorVloer
    OfficeFloor biedt inversie van
    koppelingsbesturing, met zijn: - afhankelijkheid
    injectie - vervolg injectie -
    schroefdraadinjectie Voor meer informatie
    bezoek de...
    OfficeFloor downloaden
  • 4
    DivKit
    DivKit
    DivKit is een open source servergestuurd programma
    UI (SDUI)-framework. Het staat je toe
    server-source updates uitrollen naar
    verschillende app-versies. Het kan ook zo zijn
    gebruikt voor...
    DivKit downloaden
  • 5
    subconverter
    subconverter
    Hulpprogramma om te converteren tussen verschillende
    abonnement formaat. Shadowrocket-gebruikers
    moet ss, ssr of v2ray als doel gebruiken.
    U kunt &opmerking= toevoegen aan
    Telegram-geliefde HT...
    Subconverter downloaden
  • 6
    SWASH
    SWASH
    SWASH is een numerieke waarde voor algemeen gebruik
    hulpmiddel voor het simuleren van instabiele,
    niet-hydrostatisch, vrij oppervlak,
    rotatiestroming en transportverschijnselen
    in kustwateren als ...
    SWASH downloaden
  • Meer "

Linux-commando's

Ad