İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

gvpr - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında gvpr çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen gvpr komutudur.

Program:

ADI


gvpr - grafik desen tarama ve işleme dili

SİNOPSİS


gvpr [-icnqV?] [ -o dış dosya ] [ -a args ] [ 'prog' | -f profil dosyası ] [ Dosyaları ]

TANIM


gvpr (Önceden bilinen gpr) esinlenen bir grafik akışı düzenleyicisidir. awk. Girişi kopyalar
grafikleri çıktısına, muhtemelen yapılarını ve niteliklerini dönüştürerek, yeni
grafikler veya isteğe bağlı bilgileri yazdırma. Grafik modeli, tarafından sağlanan
kitap grafiği(3). Özellikle, gvpr nokta dilini kullanarak grafikleri okur ve yazar.

Temel olarak, gvpr ile gösterilen her bir giriş grafiğini çaprazlar. $G, her bir düğümü ve kenarı ziyaret ederek,
giriş programında sağlanan yüklem-eylem kurallarıyla eşleştirme. kurallar
sırayla değerlendirilir. Doğru olarak değerlendirilen her yüklem için karşılık gelen eylem
gerçekleştirildi. Geçiş sırasında, ziyaret edilen mevcut düğüm veya kenar ile gösterilir. $.

Her girdi grafiği için, ile gösterilen bir hedef alt grafiği vardır. $T, başlangıçta boş ve kullanılmış
seçilen varlıkları ve bir çıktı grafiğini biriktirmek için, $O, son işleme için kullanılır ve daha sonra
çıktı olarak yazılır. Varsayılan olarak, çıktı grafiği hedef grafiktir. çıktı grafiği
programda veya sınırlı bir anlamda komut satırında ayarlanabilir.

SEÇENEKLER


Aşağıdaki seçenekler desteklenir:

-a args
Dize args bireysel olarak boşlukla ayrılmış belirteçlere bölünür.
dizeler olarak kullanılabilir belirteçler gvpr program olarak ARGV[0],...,ARGV[ARGC-1].
Tek veya çift tırnaklı alt dizeler içindeki veya öncesinde bir boşluk karakteri olan boşluk karakterleri
ters eğik çizgi, ayırıcı olarak yoksayılır. Genel olarak, bir ters eğik çizgi karakteri kapanır
aşağıdaki karakterin herhangi bir özel anlamı. Şundan türetilen belirteçlerin
çoklu -a bayraklar birleştirilir.

-c Kaynak grafiği çıktı grafiği olarak kullanın.

-i Bağlamda çıktı grafiğinin düğüm kaynaklı alt grafik uzantısını türet
onun kök grafiği.

-o dış dosya
Çıktı akışının belirtilen dosyaya yazılmasına neden olur; varsayılan olarak, çıktı
yazılır stdout'u.

-f profil dosyası
Girdi üzerinde yürütülecek program olarak belirtilen dosyanın içeriğini kullanın. Eğer
profil dosyası eğik çizgi karakteri içeriyorsa, ad dosyanın yol adı olarak alınır.
Aksi takdirde, gvpr ortam değişkeninde belirtilen dizinleri kullanacak
GVPRPAT dosyayı aramak için. Eğer -f verilmez, gvpr ilk olmayanı kullanacak
program olarak seçenek argümanı.

-q Uyarı mesajlarını kapatır.

-n İleri okuma grafiğini kapatır. Varsayılan olarak, değişken $NG sonraki grafiğe ayarlandı
işlenecek. Bu işlemden önce bir sonraki grafiğin okunmasını gerektirir.
Bir sonraki grafiğin yalnızca aşağıdakilere yanıt olarak oluşturulması durumunda bloke olabilen mevcut grafik
mevcut grafiğin işlenmesiyle ilgili bazı eylemler.

-V Programın sürüm bilgilerini yazdırmasına ve çıkmasına neden olur.

-? Programın kullanım bilgilerini yazdırmasına ve çıkmasına neden olur.

İŞLENENLER


Aşağıdaki işlenen desteklenir:

Dosyaları Nokta dilinde 1 veya daha fazla grafik içeren dosyaların adları. Eğer hayırsa -f seçenek
verildiğinde, ilk isim listeden çıkarılır ve giriş programı olarak kullanılır.
Dosya listesi boşsa, stdin kullanılacaktır.

PROGRAMLAR


A gvpr program, aşağıdaki şekillerden birine sahip olan bir yüklem-eylem cümlecikleri listesinden oluşur:

BAŞLA { aksiyon }

BEG_G { aksiyon }

N [ yüklem ] { aksiyon }

E [ yüklem ] { aksiyon }

END_G { aksiyon }

END { aksiyon }

Bir program, her birinden en fazla birini içerebilir. BAŞLA, END_G ve END maddeleri. olabilir
herhangi bir sayıda olmak BEG_G, N ve E ifadeler, ilki grafiklere uygulanır, ikincisi
düğümler, üçüncü kenarlar. Bunlar, bir bloktan oluşan bir blok olan bloklara ayrılır.
isteğe bağlı BEG_G açıklama ve hepsi N ve E sonrakine kadar ifadeler BEG_G ifade, eğer
herhangi. En üst düzey anlambilim gvpr program:

Değerlendir BAŞLA varsa cümlesi.
Her giriş grafiği için G {
Her blok için {
set G geçerli grafik ve geçerli nesne olarak.
Değerlendir BEG_G varsa cümlesi.
Her düğüm ve kenar için G {
Düğümü veya kenarı geçerli nesne olarak ayarlayın.
Değerlendir N or E uygun olan hükümler.
}
}
set G geçerli nesne olarak.
Değerlendir END_G varsa cümlesi.
}
Değerlendir END varsa cümlesi.

Eylemleri BAŞLA, BEG_G, END_G ve END cümlecikler, cümlecikler yapıldığında gerçekleştirilir.
değerlendirildi. İçin N or E yan tümceler, yüklem veya eylem atlanabilir. eğer varsa
eylemle ilgili bir yüklem değildir, eylem her düğümde veya kenarda gerçekleştirilir,
uygun. Eylem yoksa ve yüklem doğru olarak değerlendirilirse, ilişkili
hedef grafiğe düğüm veya kenar eklenir.

Bloklar oluştukları sırayla değerlendirilir. Bir blok içinde, N cümlecikleri
(E cümleleri, sırasıyla) meydana gelme sırasına göre değerlendirilir. Yine de not edin,
bir blok içinde, N or E yan tümceler geçiş sırasına bağlı olarak iç içe geçebilir.

Tahminler ve eylemler, C lehçesinde tarafından desteklenen ifade dizileridir.
İfade(3) kitaplık. Yüklemler ve eylemler arasındaki tek fark, öncekinin
doğru veya yanlış olarak yorumlanabilecek bir türe sahip olmalıdır. Burada her zamanki C
sıfırdan farklı bir değerin doğru kabul edildiği bir kural izlenir. Bu şunları içerir:
boş olmayan dizeler ve düğümlere, kenarlara vb. boş olmayan referanslar.
bir tam sayıya dönüştürülmek istendiğinde bu değer kullanılır.

Her zamanki C temel türlerine ek olarak (geçersiz, int, tank, şamandıra, ve kazandırdı, imzasız ve çift),
gvpr sağlar dizi eşanlamlı olarak karakter*ve grafik tabanlı türler düğüm_t, kenar_t,
grafik_t ve nesne_t. nesne_t tip, diğer 3 betonun bir süper tipi olarak görülebilir.
türleri; doğru temel türü dinamik olarak korunur. Bu baz tiplerinin yanı sıra,
yalnızca desteklenen diğer tür ifadeleri (ilişkisel) dizilerdir.

Sabitler C sözdizimini takip eder, ancak dizeler ikisinden biri ile alıntılanabilir "..." or '...'. gvpr
C++ yorumlarının yanı sıra cpp tipi yorumları da kabul eder. İkincisi için, bir satır ile başlarsa
bir '#' karakteri, satırın geri kalanı yok sayılır.

Bir ifade, bir işlevin, bir değişkenin veya bir dizinin bildirimi veya yürütülebilir bir dosya olabilir.
Beyan. Bildirimler için tek bir kapsam vardır. Dizi bildirimleri şu şekildedir:

tip dizi [ type0 ]

nerede type0 İsteğe bağlı. Sağlanırsa, ayrıştırıcı tüm diziyi zorlar.
abonelikler belirtilen türe sahiptir. Tedarik edilmezse, her türden nesne
alt simge olarak kullanılır. C'de olduğu gibi, değişkenler ve diziler bildirilmelidir. Özellikle, bir
bildirilmemiş değişken, bir düğümün, kenarın veya bir özniteliğin adı olarak yorumlanacaktır.
Bağlama bağlı olarak grafik.

Yürütülebilir ifadeler aşağıdakilerden biri olabilir:

{ [ ifade ... ] }
ifade // yaygın olarak var = ifade
Eğer( ifade ) ifade [ başka ifade ]
için( ifade ; ifade ; ifade ) ifade
için( dizi [ var ]) ifade
forr( dizi [ var ]) ifade
süre ( ifade ) ifade
değiştirmek ( ifade ) dava ifadeleri
kırılma [ ifade ]
devam etmek [ ifade ]
dönüş [ ifade ]
Parantez içindeki öğeler isteğe bağlıdır.

İkinci formda ise için açıklama ve için ifade, değişken var ayarlandı
belirtilen dizide bir dizin olarak kullanılan her değer ve ardından ilişkili ifade is
değerlendirildi. Sayısal ve dizi dizinler için dizinler artan biçimde döndürülür.
(azalan) için sayısal veya sözlüksel sıralama için (için, sırasıyla). Bu kullanılabilir
sıralama için.

İşlev tanımları yalnızca BAŞLA fıkra.

İfadeler, olağan C ifadelerini içerir. kullanarak dize karşılaştırmaları == ve != tedavi et
düzenli ifade eşleştirme amacıyla bir model olarak sağ işlenen. desenler
kullanım ksh(1) dosya eşleme deseni sözdizimi. (Basit dizi eşitliği için strcmp
fonksiyonu.

gvpr bir ifadeyi uygun şekilde bir dize veya sayısal değer olarak kullanmaya çalışır. Her ikisi de
C benzeri yayınlar ve işlev şablonları, mümkünse dönüştürmelerin yapılmasına neden olacaktır.

Grafik türündeki ifadeler (örn. grafik_t, düğüm_t, kenar_t, nesne_t) takip edebilir
şeklinde alan referansı .isim. Ortaya çıkan değer, özelliğin değeridir.
adlı isim verilen nesnenin Ayrıca, belirli bağlamlarda bildirilmemiş,
değiştirilmemiş tanımlayıcı bir öznitelik adı olarak alınır. Spesifik olarak, bu tür tanımlayıcılar
sırasıyla, mevcut düğümün veya kenarın özniteliklerini gösterir. N ve E hükümler ve
mevcut grafik BEG_G ve END_G maddeleri.

her zamanki gibi kitap grafiği(3) model, nitelikler dize değerlidir. Ek olarak, gvpr
grafik nesnelerinin belirli sözde özniteliklerini destekler, dize değerli olması gerekmez. Bunlar
grafik nesnelerinin içsel özelliklerini yansıtır ve kullanıcı tarafından ayarlanamaz.

baş : düğüm_t
bir kenarın başı.

kuyruk : düğüm_t
bir kenarın kuyruğu.

isim : dizi
bir kenarın, düğümün veya grafiğin adı. Bir kenarın adı şu şekildedir: "<kuyruk-
isim>[]", nerede dır-dir "->"Ya da"--" bağlı olarak
grafiğin yönlendirilip yönlendirilmediği. braket parçası [] yalnızca görünürse
kenar önemsiz olmayan bir anahtara sahiptir.

derece : int
bir düğümün derecesi.

üstünlük : int
bir düğümün derecesi.

derece : int
düğüm derecesi.

kök : grafik_t
bir nesnenin kök grafiği. Kök grafiğin kökü kendisidir.

ebeveyn : grafik_t
bir alt grafiğin ana grafiği. Bir kök grafiğin ebeveyni NULL

n_edges : int
grafikteki kenar sayısı

n_node'lar : int
grafikteki düğüm sayısı

yönlendirilmiş : int
grafik yönlendirilirse true (sıfır olmayan)

sıkı : int
grafik katı ise true (sıfır olmayan)

ANKASTRE FONKSİYONLAR


Aşağıdaki işlevler yerleşiktir gvpr. Referansları grafiğe döndüren bu işlevler
nesneler geri döner NULL başarısızlık durumunda.

Grafikler ve alt grafiğinin
grafik(s : dizi, t : dizi) grafik_t
adında bir grafik oluşturur s ve türü dize tarafından belirtilen t.
Büyük/küçük harf dikkate alınmaz, karakterler U, D, S, N yorumun yönlendirilmemiş olması,
sırasıyla yönlendirilmiş, katı ve katı olmayan. Eğer t boş, yönlendirilmiş, olmayan
katı grafik oluşturulur.

alt(g : grafik_t, s : dizi) grafik_t
grafikte bir alt grafik oluşturur g isimle s. Alt grafik zaten mevcutsa,
iade.

isSubg(g : grafik_t, s : dizi) grafik_t
alt grafiği grafikte döndürür g isimle s, varsa veya NULL aksi takdirde.

fstsubg(g : grafik_t) grafik_t
grafikteki ilk alt grafiği döndürür gya da NULL eğer hiçbiri mevcut değilse.

Nxtsubg(sg : grafik_t) grafik_t
sonraki alt grafiği döndürür sgya da NULL.

Doğrudan(g : grafik_t) int
ancak ve ancak doğruysa true döndürür g Yönlendirilmiş.

sıkı(g : grafik_t) int
ancak ve ancak doğruysa true döndürür g katıdır.

nDüğümler(g : grafik_t) int
içindeki düğüm sayısını döndürür g.

kenarlar(g : grafik_t) int
içindeki kenar sayısını döndürür g.

Nodes
düğüm(sg : grafik_t, s : dizi) düğüm_t
grafikte bir düğüm oluşturur g isim s. Böyle bir düğüm zaten varsa, döndürülür.

alt düğüm(sg : grafik_t, n : düğüm_t) düğüm_t
düğümü ekler n alt yazıya g. Düğümü döndürür.

fstnode(g : grafik_t) düğüm_t
grafikteki ilk düğümü döndürür gya da NULL eğer hiçbiri mevcut değilse.

nxtnode(n : düğüm_t) düğüm_t
sonraki düğümü döndürür n kök grafikte veya NULL.

nxtnode_sg(sg : grafik_t, n : düğüm_t) düğüm_t
sonraki düğümü döndürür n in sgya da NULL.

isNode(sg : grafik_t, s : dizi) düğüm_t
(alt) grafikte bir düğüm arar sg isim s. Böyle bir düğüm varsa, döndürülür.
Aksi takdirde, NULL Iade edildi.

alt düğüm(sg : grafik_t, n : düğüm_t) int
düğüm ise sıfırdan farklı bir değer döndürür n (alt) grafikte sg, veya aksi takdirde sıfır.

derece(sg : grafik_t, n : düğüm_t) int
düğüm derecesini döndürür n (alt) grafikte sg.

dereceOf(sg : grafik_t, n : düğüm_t) int
düğümün derecesini döndürür n (alt) grafikte sg.

derecesi(sg : grafik_t, n : düğüm_t) int
düğüm derecesini döndürür n (alt) grafikte sg.

kenarlar
kenar(t : düğüm_t, h : düğüm_t, s : dizi) kenar_t
kuyruk düğümü ile bir kenar oluşturur t, baş düğüm h ve isim s kök grafiğinde. Eğer
grafik yönsüzdür, baş ve kuyruk düğümleri arasındaki ayrım önemsizdir.
Böyle bir kenar zaten varsa, döndürülür.

kenar_sg(sg : grafik_t, t : düğüm_t, h : düğüm_t, s : dizi) kenar_t
kuyruk düğümü ile bir kenar oluşturur t, baş düğüm h ve isim s (alt) grafikte sg (ve tüm
ana grafikler). Grafik yönsüz ise, baş ve kuyruk arasındaki ayrım
düğümler önemsizdir. Böyle bir kenar zaten varsa, döndürülür.

alt kenar(g : grafik_t, e : kenar_t) kenar_t
kenarı ekler e alt yazıya g. Kenarı döndürür.

Kenar(t : düğüm_t, h : düğüm_t, s : dizi) kenar_t
kuyruk düğümü olan bir kenar arar t, baş düğüm h ve isim s. grafik ise
yönsüz, baş ve kuyruk düğümleri arasındaki ayrım önemsizdir. eğer böyle bir
kenar var, döndürülür. Aksi halde, NULL Iade edildi.

isEdge_sg(sg : grafik_t, t : düğüm_t, h : düğüm_t, s : dizi) kenar_t
kuyruk düğümü olan bir kenar arar t, baş düğüm h ve isim s (alt) grafikte sg. Eğer
grafik yönsüzdür, baş ve kuyruk düğümleri arasındaki ayrım önemsizdir.
Böyle bir kenar varsa, döndürülür. Aksi halde, NULL Iade edildi.

isSubeddge(g : grafik_t, e : kenar_t) int
kenar ise sıfırdan farklı bir değer döndürür e (alt) grafikte sg, veya aksi takdirde sıfır.

fstout(n : düğüm_t) kenar_t
düğümün ilk çıkışını döndürür n kök grafiğinde.

fstout_sg(sg : grafik_t, n : düğüm_t) kenar_t
düğümün ilk çıkışını döndürür n (alt) grafikte sg.

nxtout(e : kenar_t) kenar_t
sonraki çıkışı döndürür e kök grafiğinde.

nxtout_sg(sg : grafik_t, e : kenar_t) kenar_t
sonraki çıkışı döndürür e grafikte sg.

fstin(n : düğüm_t) kenar_t
düğümün ilk kenarını döndürür n kök grafiğinde.

fstin_sg(sg : grafik_t, n : düğüm_t) kenar_t
düğümün ilk kenarını döndürür n grafikte sg.

nxtin(e : kenar_t) kenar_t
sonraki kenarı döndürür e kök grafiğinde.

nxtin_sg(sg : grafik_t, e : kenar_t) kenar_t
sonraki kenarı döndürür e grafikte sg.

kızak(n : düğüm_t) kenar_t
düğümün ilk kenarını döndürür n kök grafiğinde.

fstedge_sg(sg : grafik_t, n : düğüm_t) kenar_t
düğümün ilk kenarını döndürür n grafikte sg.

nxtedge(e : kenar_t, düğüm_t) kenar_t
sonraki kenarı döndürür e kök grafiğinde.

nxtedge_sg(sg : grafik_t, e : kenar_t, düğüm_t) kenar_t
sonraki kenarı döndürür e grafikte sg.

opp(e : kenar_t, düğüm_t) düğüm_t
kenardaki düğümü döndürür e eşit değil n. Eğer NULL döndürür n düğümü değil
e. Bu, kullanırken yararlı olabilir kızak ve nxtedge komşuları saymak
n.

grafik I / O
yazmak(g : grafik_t) geçersiz
baskılar g çıkış akışına nokta biçiminde.

yazmak(g : grafik_t, isim : dizi) geçersiz
baskılar g dosyanın içine nokta biçiminde isim.

fyazG(g : grafik_t, fd : int) geçersiz
baskılar g tamsayı ile gösterilen açık akış üzerine nokta biçiminde fd.

oku(isim : dizi) grafik_t
dosyadan okunan bir grafik döndürür isim. Grafik nokta biçiminde olmalıdır. Eğer hayırsa
grafik okunabilir, NULL Iade edildi.

ekmek(fd : int) grafik_t
açık akıştan okunan bir sonraki grafiği döndürür fd. İadeler NULL dosyanın sonunda.

grafik derleme
silmek(g : grafik_t, x : nesne_t) geçersiz
nesneyi siler x grafikten g. Eğer g is NULL, fonksiyon kök grafiğini kullanır
x. Eğer x bir grafik veya alt grafik ise, kapalı olmadıkça x kilitli.

içinde(g : grafik_t, x : nesne_t) int
eğer true döndürür x alt yazı içinde g.

klonG(g : grafik_t, s : dizi) grafik_t
bir grafik klonu oluşturur g adıyla s. Eğer s "" ise, oluşturulan grafikte
aynı isim g.

clone(g : grafik_t, x : nesne_t) nesne_t
nesnenin bir klonunu oluşturur x grafikte g. Özellikle, yeni nesne aynı
orijinal nesne olarak ad/değer nitelikleri ve yapı. ile bir nesne ise
aynı anahtar x zaten mevcutsa, nitelikleri, x ve
nesne döndürülür. Bir kenar klonlanırsa, her iki uç nokta da dolaylı olarak klonlanır.
Bir grafik klonlanırsa, tüm düğümler, kenarlar ve alt grafikler dolaylı olarak klonlanır. Eğer x
bir grafiktir, g olabilir NULL, bu durumda klonlanan nesne yeni bir kök olacaktır
grafik. Bu durumda, çağrı eşdeğerdir klonG(x,"").

kopya(g : grafik_t, x : nesne_t) nesne_t
nesnenin bir kopyasını oluşturur x grafikte g, burada yeni nesne aynı ada/değere sahiptir
Öznitelikler orijinal nesne olarak. Aynı anahtara sahip bir nesne ise x zaten
var ise, nitelikleri aşağıdakilerle örtüşür. x ve nesne döndürülür. Not
Bunun sığ bir kopya olduğunu. Eğer x bir grafiktir, düğümlerinden, kenarlarından veya alt grafiklerinden hiçbiri
yeni grafiğe kopyalanır. Eğer x bir kenar ise, uç noktalar oluşturulur
gereklidir, ancak klonlanmazlar. Eğer x bir grafiktir, g olabilir NULL, bu durumda
klonlanan nesne yeni bir kök grafiği olacaktır.

kopyaA(src : nesne_t, tgt : nesne_t) int
nesnenin niteliklerini kopyalar src itiraz etmek tgt, herhangi bir öznitelik değerinin üzerine yazma
tgt başlangıçta sahip olabilir.

uyarmak(g : grafik_t) geçersiz
uzanır g kök grafiğindeki düğüm kaynaklı alt grafik uzantısına.

hasAttr(src : nesne_t, isim : dizi) int
nesne ise sıfırdan farklı bir değer döndürür src adında bir özelliği var isim. 0 döndürür
aksi takdirde.

isAttr(g : grafik_t, tür : dizi, isim : dizi) int
bir öznitelik ise sıfırdan farklı bir değer döndürür isim içinde tanımlandı g nesneleri için
verilmiş tür. Düğümler, kenarlar ve grafikler için, tür "N", "E" ve "G" olmalıdır,
sırasıyla. Aksi takdirde 0 döndürür.

yaş(src : nesne_t, isim : dizi) dizi
özniteliğin değerini döndürür isim nesnede src. Bu, bu durumlar için yararlıdır
ne zaman isim "head" veya "root" gibi anahtar kelimelerden biriyle çakışıyor. Eğer
öznitelik grafikte bildirilmedi, işlev onu şununla başlatacak
varsayılan bir "" değeri. Bunu önlemek için, bir kişi kullanmalıdır. hasAttr or isAttr işlev
özniteliğin var olup olmadığını kontrol etmek için.

aset(src : nesne_t, isim : dizi, değer : dizi) int
özniteliğin değerini ayarlar isim nesnede src için değer. Başarı durumunda 0 döndürür,
başarısızlıkta sıfır değil. Görmek yaş yukarıdaki.

getDflt(g : grafik_t, tür : dizi, isim : dizi) dizi
özniteliğin varsayılan değerini döndürür isim nesnelerde g verilenlerin tür. Için
düğümler, kenarlar ve grafikler, tür sırasıyla "N", "E" ve "G" olmalıdır. Eğer
öznitelik grafikte bildirilmedi, işlev onu şununla başlatacak
varsayılan bir "" değeri. Bunu önlemek için, bir kişi kullanmalıdır. isAttr kontrol etme işlevi
özniteliğin var olduğunu.

setDflt(g : grafik_t, tür : dizi, isim : dizi, değer : dizi) int
özniteliğin varsayılan değerini ayarlar isim için değer nesnelerde g verilenlerin
tür. Düğümler, kenarlar ve grafikler için, tür sırasıyla "N", "E" ve "G" olmalıdır.
Başarıda 0, başarısızlıkta sıfırdan farklı bir değer döndürür. Görmek getDflt yukarıdaki.

fstAttr(g : grafik_t, tür : dizi) dizi
içindeki nesnelerin ilk özniteliğinin adını döndürür g verilenlerin tür. Için
düğümler, kenarlar ve grafikler, tür sırasıyla "N", "E" ve "G" olmalıdır. eğer varsa
öznitelik yok, "" dizesi döndürülür.

nxtAttr(g : grafik_t, tür : dizi, isim : dizi) dizi
içindeki nesnelerin sonraki özniteliğinin adını döndürür g verilenlerin tür sonra
nitelik isim. Argüman isim mevcut bir özelliğin adı olmalıdır; o
tipik olarak önceki bir çağrının dönüş değeri olacaktır. fstAttr or nxtAttr. Için
düğümler, kenarlar ve grafikler, tür sırasıyla "N", "E" ve "G" olmalıdır. eğer varsa
öznitelik kalmadıysa, "" dizesi döndürülür.

kompozisyon(g : grafik_t, n : düğüm_t) grafik_t
grafiğin bağlı bileşenini döndürür g içeren düğüm n, bir alt yazısı olarak
g. Alt grafik yalnızca düğümleri içerir. Biri kullanabilir uyarmak Kenarları eklemek için NS
işlev başarısız olur ve geri döner NULL if n içinde değil g. Bağlantı, aşağıdakilere dayanmaktadır:
altında yatan yönsüz grafik g.

türü(obj : nesne_t) dizi
türünün bir göstergesini döndürür obj. Düğümler, kenarlar ve grafikler için şunu döndürür:
Sırasıyla "N", "E" ve "G".

kilitlemek(g : grafik_t, v : int) int
kök grafiklerde grafik kilitleme uygular. tamsayı ise v pozitif, grafik
gelecekteki aramalar için ayarlayın silmek hemen etkisi yoktur. Eğer v sıfır,
grafiğin kilidi açıldı. Grafiğin silinmesi için bir çağrı yapılmışsa
kilitli, grafik kapalı. Eğer v olumsuz, hiçbir şey yapılmadı. Her durumda,
önceki kilit değeri döndürülür.

Dizeler
sprintf(fmt : dizi, ...) dizi
ifadelerin değerlerinin biçimlendirilmesinden elde edilen dizeyi döndürür
sonra meydana gelen fmt göre printf(3) biçim fmt

gsub(str : dizi, okşama : dizi) dizi

gsub(str : dizi, okşama : dizi, rep : dizi) dizi
İade str eşleşen tüm alt dizelerle okşama silindi veya değiştirildi rep,
respectivamente.

alt(str : dizi, okşama : dizi) dizi

alt(str : dizi, okşama : dizi, rep : dizi) dizi
İade str en soldaki alt dize eşleşmesiyle okşama silindi veya değiştirildi rep,
sırasıyla. Başında ve sonunda '^' ve '$' karakterleri kullanılabilir,
sırasıyla okşama deseni başına veya sonuna sabitlemek için str.

substr(str : dizi, kimlik : int) dizi

substr(str : dizi, kimlik : int, len : int) dizi
alt dizesini döndürür str pozisyonda başlayan kimlik dizenin sonuna veya
uzunluk len, sırasıyla. İndeksleme 0'dan başlar. kimlik negatif veya kimlik is
uzunluğundan daha büyük str, önemli bir hata oluşur. Benzer şekilde, ikinci
durumda, eğer len negatif veya kimlik + len uzunluğundan daha büyüktür str, ölümcül
Hata oluştu.

strcmp(s1 : dizi, s2 : dizi) int
standart C işlevini sağlar strcmp(3).

uzunluk(s : dizi) int
dizenin uzunluğunu döndürür s.

indeks(s : dizi, t : dizi) int

hayvan(s : dizi, t : dizi) int
dizedeki karakterin dizinini döndürür s en soldaki (en sağdaki) kopyanın bulunduğu yer
ipin t bulunabilir veya -1 ise t bir alt dizisi değil s.

maç(s : dizi, p : dizi) int
dizedeki karakterin dizinini döndürür s desenin en soldaki eşleşmesi nerede
p bulunabilir veya alt dizesi yoksa -1 s maçlar p.

tokmak(s : dizi) dizi
bir sürümünü döndürür s alfabetik karakterler büyük harfe dönüştürülmüştür.

daha düşük(s : dizi) dizi
bir sürümünü döndürür s alfabetik karakterler küçük harfe dönüştürülmüştür.

kanon(s : dizi) dizi
bir sürümünü döndürür s nokta dosyasında tanımlayıcı olarak kullanılmaya uygundur.

html(g : grafik_t, s : dizi) dizi
'sihirli' bir versiyonunu döndürür s HTML dizesi olarak. Bu tipik olarak
bir grafik nesnesine HTML benzeri bir etiket ekleyin. Döndürülen dizenin içinde yaşadığını unutmayın
g. Özellikle, ne zaman serbest bırakılacak g kapalıdır ve bir HTML dizesi olarak işlev görmesi için,
bir nesne ile kullanılmalıdır g. Ayrıca, köşeli ayraç
alıntılar parçası olmamalıdır s. Bunlar varsa eklenecektir g beton DOT ile yazılmıştır
biçimi.

ishtml(s : dizi) int
ancak ve ancak sıfırdan farklı bir değer döndürür s bir HTML dizesidir.

x Of(s : dizi) dizi
dizesini döndürür "x" Eğer s şeklindedir"x,y", nerede hem x ve y sayısaldır.

y Of(s : dizi) dizi
dizesini döndürür "y" Eğer s şeklindedir"x,y", nerede hem x ve y sayısaldır.

llOf(s : dizi) dizi
dizesini döndürür "llx,lly" Eğer s şeklindedir"llx,lly,urx,Ury", nerede hepsi llx,
lly, urx, ve Ury sayısaldır.

urOf(s)
urOf(s : dizi) dizi dizesini döndürür "urx,Ury" Eğer s forma sahip
"llx,lly,urx,Ury", nerede hepsi llx, lly, urx, ve Ury sayısaldır.

tarama(s : dizi, fmt : dizi, ...) int
dizeyi tarar sdeğerlerine göre çıkarılması, tarama(3) biçim fmt.
değerler aşağıdaki adreslerde saklanır fmt, forma sahip adresler &v,
nerede v doğru tipte bazı beyan edilmiş değişkendir. Öğe sayısını döndürür
başarıyla tarandı.

bölmek(s : dizi, arr : dizi, Eylül : dizi) int

bölmek(s : dizi, arr : dizi) int

token kazanabilirsiniz.(s : dizi, arr : dizi, Eylül : dizi) int

token kazanabilirsiniz.(s : dizi, arr : dizi) int
The bölmek işlev dizeyi keser s alanlara girerken, token kazanabilirsiniz. işlev
dizeyi belirteçlere ayırır. Bir alan, ayırıcı olmayan tüm karakterlerden oluşur
iki ayırıcı karakter veya dizenin başı veya sonu arasında. Böylece, bir
alan boş dize olabilir. Belirteç, maksimum, boş olmayan bir alt dizedir.
bir ayırıcı karakter içerir. Ayırıcı karakterler,
Eylül argüman. Eğer Eylül sağlanmaz, varsayılan değer " \t\n"'dir. NS
işlevler, alanların veya belirteçlerin sayısını döndürür.

Alanlar ve belirteçler, bağımsız değişken dizisinde saklanır. dizi olmalı dizi-
değerlidir ve bir dizin türü belirtilmişse, int. Girişler indekslendi
0'dan başlayarak ardışık tamsayılarla. Dizide önceden saklanan tüm değerler
üzerine yazılabilir veya işlev döndükten sonra hala mevcut olabilir.

I / O
baskı(...) geçersiz
Yazdır( İfade, ... ) sırayla her argümanın bir dize temsilini yazdırır
stdout'u, ardından yeni bir satır.

printf(fmt : dizi, ...) int

printf(fd : int, fmt : dizi, ...) int
aşağıdaki ifadelerin değerlerinin biçimlendirilmesinden elde edilen dizeyi yazdırır
fmt göre printf(3) biçim fmt. Başarı durumunda 0 döndürür. Varsayılan olarak,
üzerine yazdırır stdout'u. isteğe bağlı tamsayı ise fd verilir, çıktı yazılır
ile ilişkili açık akış fd.

scanf(fmt : dizi, ...) int

scanf(fd : int, fmt : dizi, ...) int
göre bir giriş akışından değerleri tarar scanf(3) biçim fmt.
değerler aşağıdaki adreslerde saklanır fmt, forma sahip adresler &v,
nerede v doğru tipte bazı beyan edilmiş değişkendir. Varsayılan olarak, şuradan okur:
stdin. isteğe bağlı tamsayı ise fd verilir, giriş açık akıştan okunur
ile ilişkili fd. Başarıyla taranan öğelerin sayısını döndürür.

açıkF(s : dizi, t : dizi) int
dosyayı açar s G/Ç akışı olarak. dize argümanı t dosyanın nasıl olduğunu belirtir
açıldı. Argümanlar C işleviyle aynıdır açık(3). bir döner
akışı gösteren tamsayı veya hata durumunda -1.

Her zamanki gibi, 0, 1 ve 2 akışları zaten şu şekilde açık: stdin, stdout'u, ve Stderr,
sırasıyla. Dan beri gvpr kullanabilir stdin giriş grafiklerini okumak için kullanıcı
bu akışı kullanmaktan kaçının.

kapatF(fd : int) int
tamsayı ile gösterilen açık akışı kapatır fd. 0, 1 ve 2 akışları olamaz
kapalı. Başarı durumunda 0 döndürür.

oku(fd : int) dizi
giriş akışından okunan sonraki satırı döndürür fd. Boş "" dizesini döndürür
dosyanın sonunda. Yeni satır karakterinin döndürülen dizgede kaldığını unutmayın.

Matematik
exp(d : çift) çift
e'ye döndürür dgüç.

log(d : çift) çift
doğal günlüğünü döndürür d.

sqrt(d : çift) çift
çiftin karekökünü döndürür d.

pow(d : çift, x : çift) çift
İade d yükseltildi xgüç.

araba(d : çift) çift
kosinüsünü döndürür d.

günah(d : çift) çift
sinüsünü döndürür d.

atan2(y : çift, x : çift) çift
arktanjantını döndürür y / x -pi ila pi aralığında.

MIN(y : çift, x : çift) çift
minimumunu döndürür y ve x.

MAX(y : çift, x : çift) çift
maksimum değerini döndürür y ve x.

çağrışımsal Diziler
# arr : int
dizideki eleman sayısını döndürür arr.

kimlik in arr : int
dizin için bir değer ayarlanmışsa 1 döndürür kimlik dizide arr. 0 döndürür
aksi takdirde.

ayarlanmazsa(v : dizi, kimlik) int
tarafından dizine eklenen öğeyi kaldırır kimlik. Öğe varsa 1, değilse 0 döndürür.

ayarlanmazsa(v : dizi) geçersiz
diziyi yeniden başlatır.

Diğer
çıkış(v : int) geçersiz
nedenleri gvpr çıkış koduyla çıkmak için v.

sistem(cmd : dizi) int
standart C işlevini sağlar sistem(3). yürütür cmd kullanıcının kabuğunda
ortam ve kabuğun çıkış durumunu döndürür.

tüm(): çift
0 ile 1 arasında sözde rasgele bir çift döndürür.

Srand(): int

Srand(v : int) int
rasgele sayı üreteci için bir tohum ayarlar. İsteğe bağlı bağımsız değişken, çekirdeği verir;
atlanırsa, geçerli saat kullanılır. Önceki tohum değeri döndürülür.
Srand herhangi bir aramadan önce aranmalıdır tüm.

renkx(renk : dizi, fmt : dizi) dizi
bir rengi bir biçimden diğerine çevirir. NS renk argüman bir renk olmalıdır
tanınan dize temsillerinden birinde. NS fmt değer şunlardan biri olmalıdır
"RGB", "RGBA", "HSV" veya "HSVA". Hata durumunda boş bir dize döndürülür.

ANKASTRE DEĞİŞKENLER


gvpr değerleri otomatik olarak ayarlanan belirli özel, yerleşik değişkenler sağlar.
gvpr bağlama bağlı olarak. Belirtilmedikçe, kullanıcı değerlerini değiştiremez.

$ : nesne_t
bağlama bağlı olarak geçerli nesneyi (düğüm, kenar, grafik) belirtir. O değil
uygun BAŞLA or END maddeleri.

$F : dizi
geçerli girdi dosyasının adıdır.

$G : grafik_t
işlenmekte olan mevcut grafiği belirtir. içinde mevcut değil BAŞLA or END
maddeleri.

$NG : grafik_t
işlenecek bir sonraki grafiği belirtir. Eğer $NG NULL, geçerli grafik $G olduğunu
son grafik. Girdi stdin'den geliyorsa, son grafiğin olamayacağına dikkat edin.
giriş borusu kapanana kadar belirlenir. içinde mevcut değil BAŞLA or END
maddeler veya eğer -n bayrak kullanılır.

$O : grafik_t
çıktı grafiğini ifade eder. Grafik geçişinden önce, hedefe başlatılır
grafik. Geçişten sonra ve herhangi bir END_G eylemler, boş olmayan bir grafiğe atıfta bulunuyorsa,
bu grafik çıktı akışına yazdırılır. Sadece içinde geçerlidir N, E ve END_G
maddeleri. Çıkış grafiği kullanıcı tarafından ayarlanabilir.

$T : grafik_t
geçerli hedef grafiği belirtir. bir alt yazısıdır $G ve yalnızca şurada mevcuttur:
N, E ve END_G maddeleri.

$tgtname : dizi
hedef grafiğin adını belirtir. Varsayılan olarak, "gvpr_sonucu". Eğer
yürütülmesi sırasında birden çok kez kullanılır. gvpr, ad bir ile eklenecektir
tamsayı. Bu değişken kullanıcı tarafından ayarlanabilir.

$ tvroot : düğüm_t
(yönlendirilmiş veya yönsüz) derinlik veya genişlik için başlangıç ​​düğümünü gösterir.
grafiğin ilk geçişi (bkz. $tv türü aşağıda). Varsayılan değer NULL için
Her giriş grafiği. Verilen kökte geçişten sonra, eğer değeri $ tvroot
değiştiyse, yeni değeriyle yeni bir geçiş başlayacak $ tvroot. Ayrıca, ayarla
$tvsonraki altında.

$tvsonraki : düğüm_t
(yönlendirilmiş veya yönsüz) derinlik için bir sonraki başlangıç ​​düğümünü gösterir - önce veya
grafiğin genişlik-birinci geçişi (bkz. $tv türü aşağıda). Bir geçiş biterse
ve $ tvroot sıfırlanmadı ama $tvsonraki ayarlandı ancak kullanılmadı, bu
düğüm için bir sonraki seçenek olarak kullanılacaktır $ tvroot. Varsayılan değer NULL için
Her giriş grafiği.

$twedge : kenar_t
BFS ve DFS geçişleri için bu, geçerli noktaya ulaşmak için kullanılan kenara ayarlanır.
düğüm veya kenar. Bir geçişin başlangıcında veya diğer geçiş türleri için,
değer şudur NULL.

$tv türü : tvtype_t
nasıl olduğunu gösterir gvpr bir grafiği geçer. Sadece sabit değerlerden birini alabilir.
aşağıda açıklanan "TV_" ön ekiyle. TV_flat varsayılandır.

Temeldeki grafik kitaplığında cgraf(3), yönsüz grafiklerde kenarlara bir
keyfi yön. Bu, geçişler için kullanılır, örneğin TV_fwd, gerektiren
yönlendirilmiş kenarlar

ARGC : int
tarafından belirtilen argüman sayısını belirtir. -a args komut satırı argümanı.

ARGV : dizi dizi
tarafından belirtilen argüman dizisini belirtir. -a args komut satırı argümanı. NS
iinci argüman tarafından verilir ARGV[i].

ANKASTRE SABİTLER


tarafından tanımlanan birkaç sembolik sabit vardır. gvpr.

NULL : nesne_t
0'a eşdeğer bir boş nesne başvurusu.

TV_flat : tvtype_t
görünüşte keyfi bir sırada ziyaret edilen grafik nesneleri ile basit, düz bir geçiş.

TV_ne : tvtype_t
önce tüm düğümleri, ardından tüm kenarları ziyaret eden bir geçiş.

TV_tr : tvtype_t
önce tüm kenarları, ardından tüm düğümleri ziyaret eden bir geçiş.

TV_dfs : tvtype_t
TV_postdfs : tvtype_t
TV_prepostdfs : tvtype_t
altta yatan yönsüz üzerinde bir derinlik öncelikli arama kullanarak grafiğin bir geçişi
grafik. Geçiş yapmak için, gvpr değerini kontrol edecek $ tvroot. bu varsa
daha önce sahip olduğu değerin aynısı (başlangıçta, önceki değer başlatılır
için NULL.) gvpr sadece ziyaret edilmemiş bir düğümü arayacak ve bağlı olduğu düğümü geçecek
bileşen. Öte yandan, eğer $ tvroot değişti, bağlı bileşeni değişecek
daha önce ziyaret edilmediği varsayılarak veya $ tvroot is NULL,
geçiş duracaktır. kullanarak unutmayın TV_dfs ve $ tvroot, oluşturmak mümkündür
sonsuz bir döngü.

Varsayılan olarak, geçiş ön siparişte yapılır. Yani, bir düğüm daha önce ziyaret edilir.
tüm ziyaret edilmemiş kenarları. İçin TV_postdfs, bir düğümün ziyaret edilmeyen tüm kenarları
düğümden önce ziyaret edildi. İçin TV_prepostdfs, bir düğüm iki kez ziyaret edilir, önce ve
tüm ziyaret edilmemiş kenarlarından sonra.

TV_fwd : tvtype_t
TV_postfwd : tvtype_t
TV_prepostfwd : tvtype_t
Yalnızca aşağıdaki grafikte derinlik öncelikli arama kullanılarak grafiğin bir geçişi
ileri yaylar. Geçiş için köklerin seçimi için açıklananla aynıdır.
TV_dfs üstünde. tarafından belirtilen farklı ziyaret sırası TV_fwd, TV_postfwd
ve TV_prepostfwd benzer geçişler tarafından belirtilenlerle aynıdır
TV_dfs, TV_postdfs ve TV_prepostdfs.

TV_rev : tvtype_t
TV_postrev : tvtype_t
TV_prepostrev : tvtype_t
Yalnızca aşağıdaki grafikte derinlik öncelikli arama kullanılarak grafiğin bir geçişi
ters yaylar. Geçiş için köklerin seçimi için açıklananla aynıdır.
TV_dfs üstünde. tarafından belirtilen farklı ziyaret sırası TV_rev, TV_postrev
ve TV_prepostrev benzer geçişler tarafından belirtilenlerle aynıdır
TV_dfs, TV_postdfs ve TV_prepostdfs.

TV_bfs : tvtype_t
Kenarı yok sayarak grafikte genişlik öncelikli arama kullanarak grafiğin çapraz geçişi
talimatlar. üzerindeki öğeye bakın TV_dfs rolü için yukarıda $ tvroot.

ÖRNEKLER


gvpr -i 'N[renk=="mavi"]' dosya.gv

Tüm düğümlerin düğüm kaynaklı alt grafiğini mavi renkle oluşturun.

gvpr -c 'N[color=="mavi"]{renk = "kırmızı"}' dosya.gv

Tüm mavi düğümleri kırmızı yapın.

BAŞLA { int n, e; int tot_n = 0; int taşımak = 0; }
BEG_G {
n = nDüğümler($G);
e = nKenarlar($G);
printf ("%NS düğümler %d kenarları %s\n", n, e, $G.adı);
tot_n += n;
taşımak += e;
}
END { printf ("%NS düğümler %d kenarları toplam\n", tot_n, taşımak) }

Programın sürümü gc.

gvpr -c ""

Eşittir nop.

BEG_G { grafik_t g = grafik ("birleştirmek", "S"); }
E {
düğüm_t h = klon(g,$.head);
düğüm_t t = klon(g,$.kuyruk);
kenar_t e = kenar(t,h,"");
e.ağırlık = e.ağırlık + 1;
}
END_G { $O = g; }

Bir kenarın ağırlık özniteliğinin olduğu giriş grafiğinin katı bir sürümünü üretir.
kenarın giriş grafiğinden kaç kenarı temsil ettiğini gösterir.

BAŞLA {düğüm_t n; int derece[]}
E{der[kafa]++; derece[kuyruk]++; }
END_G {
için (derece[n]) {
printf ("derece[%s] = %d\n", isim, derece[n]);
}
}

Kenarlı düğümlerin derecelerini hesaplar.

BAŞLA {
int i, girinti;
int görülen[dize];
geçersiz prInd (int cnt) {
için (i = 0; i < cnt; ben++) printf (" ");
}
}
BEG_G {

$tv türü = TV_prepostfwd;
$ tvroot = düğüm($,ARGV[0]);
}
N {
if (görüldü[$.name]) girinti--;
başka {
prInd(girinti);
baskı ($.isim);
görüldü[$.name] = 1;
girinti++;
}
}

Adı olan düğümden başlayarak, grafiğin derinlik öncelikli geçişini yazdırır.
ARGV[0], girintili bir liste olarak.

ÇEVRE


GVPRPAT
tarafından belirtilen dosyayı bulmak için aranacak dizinlerin iki nokta üst üste ayrılmış listesi
-f seçeneği. gvpr yerleşik bir varsayılan listeye sahiptir. GVPRPAT tanımlı değil,
varsayılan liste kullanılır. Eğer GVPRPAT iki nokta üst üste ile başlar, liste tarafından oluşturulur
ekleme GVPRPAT varsayılan listeye. Eğer GVPRPAT iki nokta üst üste ile biter, liste
varsayılan liste eklenerek oluşturulur GVPRPAT. Aksi takdirde, GVPRPAT için kullanılır
liste.

Windows sistemlerinde, önceki paragrafta "iki nokta üst üste"yi "noktalı virgül" ile değiştirin.

onworks.net hizmetlerini kullanarak gvpr'yi çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    CalcTools
    CalcTools
    olarak hizmet etmesi amaçlanan Java kaynağı
    hem matematik hem de öğretim için bağlantı noktası
    hesaplama için yazılım çözümleri
    yinelemeli denklemler. Genel arayüzler
    izin ver...
    CalcTools'u indirin
  • 2
    Rocket.Chat Masaüstü İstemcisi
    Rocket.Chat Masaüstü İstemcisi
    Rocket.Chat Masaüstü istemcisi
    Rocket.Chat için resmi masaüstü uygulaması,
    basit ama güçlü açık kaynak web
    sohbet platformu. macOS'ta test edilmiştir,
    Pencereler ...
    Rocket.Chat Masaüstü İstemcisini İndirin
  • 3
    OfisKat
    OfisKat
    OfficeFloor, tersine çevrilmesini sağlar
    aşağıdakilerle birlikte kuplaj kontrolü: - bağımlılık
    enjeksiyon - devam enjeksiyonu -
    Daha fazla bilgi için iplik enjeksiyonu
    ziyaret edin...
    OfficeFloor'u İndirin
  • 4
    DivKit
    DivKit
    DivKit, açık kaynaklı, Sunucu Odaklı bir yazılımdır
    Kullanıcı arayüzü (SDUI) çerçevesi. Şunları yapmanızı sağlar:
    sunucu kaynaklı güncellemeleri kullanıma sunmak
    farklı uygulama sürümleri. Ayrıca olabilir
    için kullanılır...
    DivKit'i indirin
  • 5
    alt dönüştürücü
    alt dönüştürücü
    Çeşitli arasında dönüştürmek için yardımcı program
    abonelik biçimi. Shadowrocket kullanıcıları
    hedef olarak ss, ssr veya v2ray kullanmalıdır.
    &remark= ekleyebilirsiniz
    Telegram beğenilen HT...
    Alt dönüştürücüyü indir
  • 6
    YIKAMA
    YIKAMA
    SWASH, genel amaçlı bir sayısal
    kararsızlığı simüle etmek için araç,
    hidrostatik olmayan, serbest yüzey,
    rotasyonel akış ve taşıma olayları
    gibi kıyı sularında...
    SWASH'ı indirin
  • Daha fazla »

Linux komutları

Ad