EnglishFrenchSpanyol

Ad


Favicon OnWorks

gvpr - Dalam talian dalam Awan

Jalankan gvpr dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan gvpr yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


gvpr - bahasa imbasan dan pemprosesan corak graf

SINOPSIS


gvpr [-icnqV?] [ -o fail luar ] [ -a args ] [ 'prog' | -f progfile ] [ fail ]

DESCRIPTION


gvpr (Sebelum ini dikenali sebagai gpr) ialah editor aliran graf yang diilhamkan oleh awk. Ia menyalin input
graf kepada outputnya, mungkin mengubah struktur dan atributnya, mencipta baharu
graf, atau mencetak maklumat sewenang-wenangnya. Model graf ialah yang disediakan oleh
libcgraph(3). khususnya, gvpr membaca dan menulis graf menggunakan bahasa titik.

Pada dasarnya, gvpr merentasi setiap graf input, dilambangkan dengan $G, melawati setiap nod dan tepi,
memadankannya dengan peraturan tindakan predikat yang dibekalkan dalam program input. Peraturannya ialah
dinilai mengikut susunan. Bagi setiap predikat yang menilai kepada benar, tindakan yang sepadan ialah
dilakukan. Semasa traversal, nod semasa atau tepi yang dilawati dilambangkan dengan $.

Untuk setiap graf input, terdapat subgraf sasaran, dilambangkan dengan $T, pada mulanya kosong dan digunakan
untuk mengumpul entiti yang dipilih, dan graf keluaran, $O, digunakan untuk pemprosesan akhir dan kemudian
ditulis kepada output. Secara lalai, graf keluaran ialah graf sasaran. Graf keluaran
boleh ditetapkan dalam program atau, dalam erti kata yang terhad, pada baris arahan.

PILIHAN


Pilihan berikut disokong:

-a args
Tali itu args dibahagikan kepada token yang dipisahkan ruang putih, dengan individu
token tersedia sebagai rentetan dalam gvpr program sebagai ARGV[0],...,ARGV[ARGC-1].
Aksara ruang kosong dalam subrentetan petikan tunggal atau berganda, atau didahului dengan a
garis miring ke belakang, diabaikan sebagai pemisah. Secara amnya, watak sengkang terbalik dimatikan
sebarang makna khas bagi watak berikut. Ambil perhatian bahawa token diperoleh daripada
pelbagai -a bendera bercantum.

-c Gunakan graf sumber sebagai graf keluaran.

-i Terbitkan sambungan subgraf teraruh nod bagi graf keluaran dalam konteks
graf puncanya.

-o fail luar
Menyebabkan aliran keluaran ditulis ke fail yang ditentukan; secara lalai, output ialah
bertulis kepada stdout.

-f progfile
Gunakan kandungan fail yang ditentukan sebagai program untuk melaksanakan pada input. Jika
progfile mengandungi aksara slash, nama diambil sebagai nama laluan fail.
Jika tidak, gvpr akan menggunakan direktori yang ditentukan dalam pembolehubah persekitaran
GVPRPATH untuk mencari fail. Jika -f tidak diberikan, gvpr akan menggunakan bukan pertama
hujah pilihan sebagai program.

-q Mematikan mesej amaran.

-n Mematikan graf baca-depan. Secara lalai, pembolehubah $NG ditetapkan kepada graf seterusnya
untuk diproses. Ini memerlukan pembacaan graf seterusnya sebelum memproses
graf semasa, yang mungkin menyekat jika graf seterusnya hanya dijana sebagai tindak balas kepada
beberapa tindakan yang berkaitan dengan pemprosesan graf semasa.

-V Menyebabkan atur cara mencetak maklumat versi dan keluar.

-? Menyebabkan program mencetak maklumat penggunaan dan keluar.

OPERAND


Operan berikut disokong:

fail Nama fail yang mengandungi 1 atau lebih graf dalam bahasa titik. Jika tidak -f pilihan
diberikan, nama pertama dikeluarkan daripada senarai dan digunakan sebagai program input.
Jika senarai fail kosong, stdin akan digunakan.

PROGRAM


A gvpr program terdiri daripada senarai klausa tindakan predikat, yang mempunyai salah satu bentuk:

BEGIN { tindakan }

BEG_G { tindakan }

N [ predikat ] { tindakan }

E [ predikat ] { tindakan }

END_G { tindakan }

AKHIR { tindakan }

Sesuatu program boleh mengandungi paling banyak satu daripada setiap program BEGIN, END_G and AKHIR klausa. Ada boleh
menjadi sebarang nombor BEG_G, N and E pernyataan, yang pertama digunakan pada graf, yang kedua untuk
nod, ketiga ke tepi. Ini dipisahkan kepada blok, blok yang terdiri daripada satu
pilihan BEG_G kenyataan dan semua N and E kenyataan sehingga seterusnya BEG_G pernyataan, jika
mana-mana. Semantik peringkat atas a gvpr program adalah:

Menilai BEGIN klausa, jika ada.
Bagi setiap graf input G {
Bagi setiap blok {
Tetapkan G sebagai graf semasa dan objek semasa.
Menilai BEG_G klausa, jika ada.
Untuk setiap nod dan tepi masuk G {
Tetapkan nod atau tepi sebagai objek semasa.
Menilai N or E klausa, mengikut kesesuaian.
}
}
Tetapkan G sebagai objek semasa.
Menilai END_G klausa, jika ada.
}
Menilai AKHIR klausa, jika ada.

Tindakan daripada BEGIN, BEG_G, END_G and AKHIR klausa dilakukan apabila klausa tersebut
dinilai. Untuk N or E klausa, sama ada predikat atau tindakan boleh ditinggalkan. Jika ada
tiada predikat dengan tindakan, tindakan itu dilakukan pada setiap nod atau tepi, sebagai
sesuai. Jika tiada tindakan dan predikat bernilai benar, yang berkaitan
nod atau tepi ditambah pada graf sasaran.

Blok dinilai mengikut susunan ia berlaku. Dalam satu blok, the N fasal
(E klausa, masing-masing) dinilai mengikut susunan yang berlaku. Perhatikan, walaupun,
bahawa dalam satu blok, N or E klausa boleh dijalin, bergantung pada susunan traversal.

Predikat dan tindakan ialah urutan pernyataan dalam dialek C yang disokong oleh
expr(3) perpustakaan. Satu-satunya perbezaan antara predikat dan tindakan ialah yang pertama
mesti mempunyai jenis yang boleh ditafsirkan sebagai benar atau salah. Di sini C biasa
konvensyen diikuti, di mana nilai bukan sifar dianggap benar. Ini termasuk
rentetan bukan kosong dan rujukan bukan kosong kepada nod, tepi, dsb. Walau bagaimanapun, jika rentetan boleh
ditukar kepada integer, nilai ini digunakan.

Sebagai tambahan kepada jenis asas C biasa (membatalkan, int, tangki, terapung, lama, tidak ditandatangani and dua kali ganda),
gvpr menyediakan rentetan sebagai sinonim untuk char*, dan jenis berasaskan graf node_t, tepi_t,
graf_t and obj_t. Yang obj_t jenis boleh dilihat sebagai supertype daripada 3 konkrit yang lain
jenis; jenis asas yang betul dikekalkan secara dinamik. Selain jenis asas ini, yang
hanya ungkapan jenis disokong lain ialah tatasusunan (bersekutu).

Pemalar mengikut sintaks C, tetapi rentetan boleh dipetik dengan sama ada "..." or '...'. gvpr
menerima ulasan C++ serta ulasan jenis cpp. Untuk yang terakhir, jika baris bermula dengan
aksara '#', baris selebihnya diabaikan.

Pernyataan boleh menjadi pengisytiharan fungsi, pembolehubah atau tatasusunan, atau boleh laku
kenyataan. Untuk pengisytiharan, terdapat satu skop. Pengisytiharan tatasusunan mempunyai bentuk:

jenis pelbagai [ type0 ]

di mana type0 adalah pilihan. Jika ia dibekalkan, penghurai akan menguatkuasakan semua tatasusunan itu
subskrip mempunyai jenis yang ditentukan. Jika ia tidak dibekalkan, objek dari semua jenis boleh
digunakan sebagai subskrip. Seperti dalam C, pembolehubah dan tatasusunan mesti diisytiharkan. Khususnya, an
pembolehubah yang tidak diisytiharkan akan ditafsirkan sebagai nama atribut nod, tepi atau
graf, bergantung pada konteks.

Pernyataan boleh laku boleh menjadi salah satu daripada yang berikut:

{ [ kenyataan ... ] }
ungkapan // lazimnya var = ungkapan
sekiranya ( ungkapan ) kenyataan [ lagi kenyataan ]
untuk( ungkapan ; ungkapan ; ungkapan ) kenyataan
untuk( pelbagai [ var ]) kenyataan
forr( pelbagai [ var ]) kenyataan
sementara( ungkapan ) kenyataan
menukar ( ungkapan ) kes kenyataan
memecahkan [ ungkapan ]
terus [ ungkapan ]
pulangan [ ungkapan ]
Item dalam kurungan adalah pilihan.

Dalam bentuk kedua Untuk kenyataan dan forr pernyataan, pembolehubah var ditetapkan untuk
setiap nilai digunakan sebagai indeks dalam tatasusunan yang ditentukan dan kemudian yang berkaitan kenyataan is
dinilai. Untuk indeks angka dan rentetan, indeks dikembalikan dalam peningkatan
(menurun) susunan angka atau leksikografi untuk Untuk (forr, masing-masing). Ini boleh digunakan
untuk menyusun.

Takrif fungsi hanya boleh muncul dalam BEGIN Klausa.

Ungkapan termasuk ungkapan C biasa. Perbandingan rentetan menggunakan == and != merawat
operan tangan kanan sebagai corak untuk tujuan pemadanan ungkapan biasa. Corak
penggunaan ksh(1) sintaks corak padanan fail. (Untuk kesamaan rentetan mudah, gunakan strcmp
fungsi.

gvpr akan cuba menggunakan ungkapan sebagai rentetan atau nilai angka yang sesuai. kedua-duanya
Cast dan templat fungsi seperti C akan menyebabkan penukaran dilakukan, jika boleh.

Ungkapan jenis grafik (iaitu, graf_t, node_t, tepi_t, obj_t) boleh diikuti dengan a
rujukan lapangan dalam bentuk .nama. Nilai yang terhasil ialah nilai atribut
bernama nama daripada objek yang diberikan. Di samping itu, dalam konteks tertentu yang tidak diisytiharkan,
pengecam yang tidak diubah suai diambil sebagai nama atribut. Khususnya, pengecam sedemikian
menandakan atribut nod atau tepi semasa, masing-masing, dalam N and E klausa, dan
graf semasa dalam BEG_G and END_G fasal.

Seperti biasa dalam libcgraph(3) model, atribut bernilai rentetan. Sebagai tambahan, gvpr
menyokong atribut pseudo tertentu objek graf, tidak semestinya bernilai rentetan. Ini
mencerminkan sifat intrinsik objek graf dan tidak boleh ditetapkan oleh pengguna.

kepala : node_t
kepala tepi.

ekor : node_t
ekor tepi.

nama : rentetan
nama tepi, nod atau graf. Nama tepi mempunyai bentuk "<ekor-
nama>[]", di mana adalah "->"Atau"--" bergantung kepada
sama ada graf diarahkan atau tidak. Bahagian kurungan [] hanya muncul jika
edge mempunyai kunci bukan remeh.

tidak ijazah : int
tak darjah nod.

outdegree : int
tahap luar nod.

ijazah : int
darjah sesuatu nod.

akar : graf_t
graf punca sesuatu objek. Punca graf punca ialah dirinya sendiri.

ibu bapa : graf_t
graf induk subgraf. Induk bagi graf punca ialah NULL

n_edges : int
bilangan tepi dalam graf

n_nodes : int
bilangan nod dalam graf

diarahkan : int
benar (bukan sifar) jika graf diarahkan

ketat : int
benar (bukan sifar) jika graf adalah ketat

TERBINA FUNGSI


Fungsi berikut dibina ke dalam gvpr. Fungsi tersebut mengembalikan rujukan kepada graf
objek kembali NULL sekiranya berlaku kegagalan.

Graf and subgraf
graf(s : rentetan, t : rentetan): graf_t
mencipta graf yang namanya s dan jenisnya ditentukan oleh rentetan t.
Mengabaikan kes, watak-watak U, D, S, N mempunyai tafsiran tidak terarah,
diarahkan, ketat, dan tidak ketat, masing-masing. Jika t kosong, terarah, tidak
graf ketat dihasilkan.

subg(g : graf_t, s : rentetan): graf_t
mencipta subgraf dalam graf g dengan nama s. Jika subgraf sudah wujud, ia adalah
kembali.

isSubg(g : graf_t, s : rentetan): graf_t
mengembalikan subgraf dalam graf g dengan nama s, jika ia wujud, atau NULL sebaliknya.

fstsubg(g : graf_t): graf_t
mengembalikan subgraf pertama dalam graf g, Atau NULL jika tiada.

nxtsubg(sg : graf_t): graf_t
mengembalikan subgraf seterusnya selepas sg, Atau NULL.

isDirect(g : graf_t): int
kembali benar jika dan hanya jika g diarahkan.

adalah Ketat(g : graf_t): int
kembali benar jika dan hanya jika g tegas.

nNod(g : graf_t): int
mengembalikan bilangan nod masuk g.

nEdges(g : graf_t): int
mengembalikan bilangan tepi masuk g.

Nod
nod(sg : graf_t, s : rentetan): node_t
mencipta nod dalam graf g dari nama s. Jika nod sedemikian sudah wujud, ia dikembalikan.

subnod(sg : graf_t, n : node_t): node_t
memasukkan nod n ke dalam subgraf g. Mengembalikan nod.

fstnode(g : graf_t): node_t
mengembalikan nod pertama dalam graf g, Atau NULL jika tiada.

nxtnode(n : node_t): node_t
mengembalikan nod seterusnya selepas n dalam graf punca, atau NULL.

nxtnode_sg(sg : graf_t, n : node_t): node_t
mengembalikan nod seterusnya selepas n in sg, Atau NULL.

isNode(sg : graf_t, s : rentetan): node_t
mencari nod dalam (sub) graf sg dari nama s. Jika nod sedemikian wujud, ia dikembalikan.
Jika tidak, NULL dikembalikan.

isSubnode(sg : graf_t, n : node_t): int
mengembalikan bukan sifar jika nod n berada dalam (sub) graf sg, atau sifar sebaliknya.

indegreeOf(sg : graf_t, n : node_t): int
mengembalikan tak darjah nod n dalam (sub)graf sg.

outdegreeOf(sg : graf_t, n : node_t): int
mengembalikan darjah luar nod n dalam (sub)graf sg.

tahap(sg : graf_t, n : node_t): int
mengembalikan darjah nod n dalam (sub)graf sg.

Edges
kelebihan(t : node_t, h : node_t, s : rentetan): tepi_t
mencipta tepi dengan nod ekor t, nod kepala h dan nama s dalam graf punca. Sekiranya
graf tidak terarah, perbezaan antara nod kepala dan ekor adalah tidak penting.
Jika kelebihan sedemikian sudah wujud, ia dikembalikan.

tepi_sg(sg : graf_t, t : node_t, h : node_t, s : rentetan): tepi_t
mencipta tepi dengan nod ekor t, nod kepala h dan nama s dalam (sub)graf sg (dan semua
graf induk). Jika graf tidak terarah, perbezaan antara kepala dan ekor
nod tidak penting. Jika kelebihan sedemikian sudah wujud, ia dikembalikan.

terendam(g : graf_t, e : tepi_t): tepi_t
memasukkan tepi e ke dalam subgraf g. Mengembalikan tepi.

isEdge(t : node_t, h : node_t, s : rentetan): tepi_t
mencari tepi dengan nod ekor t, nod kepala h dan nama s. Jika graf ialah
tidak terarah, perbezaan antara nod kepala dan ekor adalah tidak penting. Jika sedemikian
tepi wujud, ia dikembalikan. Jika tidak, NULL dikembalikan.

isEdge_sg(sg : graf_t, t : node_t, h : node_t, s : rentetan): tepi_t
mencari tepi dengan nod ekor t, nod kepala h dan nama s dalam (sub)graf sg. Jika
graf tidak terarah, perbezaan antara nod kepala dan ekor adalah tidak penting.
Jika kelebihan sedemikian wujud, ia dikembalikan. Jika tidak, NULL dikembalikan.

isSubedge(g : graf_t, e : tepi_t): int
mengembalikan bukan sifar jika tepi e berada dalam (sub) graf sg, atau sifar sebaliknya.

fstout(n : node_t): tepi_t
mengembalikan tepi pertama nod n dalam graf punca.

fstout_sg(sg : graf_t, n : node_t): tepi_t
mengembalikan tepi pertama nod n dalam (sub)graf sg.

nxtout(e : tepi_t): tepi_t
mengembalikan kelebihan seterusnya selepas itu e dalam graf punca.

nxtout_sg(sg : graf_t, e : tepi_t): tepi_t
mengembalikan kelebihan seterusnya selepas itu e dalam graf sg.

fstin(n : node_t): tepi_t
mengembalikan inedge pertama nod n dalam graf punca.

fstin_sg(sg : graf_t, n : node_t): tepi_t
mengembalikan inedge pertama nod n dalam graf sg.

nxtin(e : tepi_t): tepi_t
mengembalikan inedge seterusnya selepas e dalam graf punca.

nxtin_sg(sg : graf_t, e : tepi_t): tepi_t
mengembalikan inedge seterusnya selepas e dalam graf sg.

fstedge(n : node_t): tepi_t
mengembalikan tepi pertama nod n dalam graf punca.

fstedge_sg(sg : graf_t, n : node_t): tepi_t
mengembalikan tepi pertama nod n dalam graf sg.

nxtedge(e : tepi_t, node_t): tepi_t
mengembalikan tepi seterusnya selepas e dalam graf punca.

nxtedge_sg(sg : graf_t, e : tepi_t, node_t): tepi_t
mengembalikan tepi seterusnya selepas e dalam graf sg.

opp(e : tepi_t, node_t): node_t
mengembalikan nod di tepi e tidak sama dengan n. Mengembalikan NULL jika n bukan nod daripada
e. Ini boleh berguna apabila menggunakan fstedge and nxtedge untuk menghitung jiran-jiran
n.

Grafik I / O
menulis(g : graf_t): membatalkan
cetakan g dalam format titik ke strim output.

tulisG(g : graf_t, nama keluarga : rentetan): membatalkan
cetakan g dalam format titik ke dalam fail nama keluarga.

fwriteG(g : graf_t, fd : int): membatalkan
cetakan g dalam format titik ke strim terbuka yang dilambangkan dengan integer fd.

bacaG(nama keluarga : rentetan): graf_t
mengembalikan graf yang dibaca daripada fail nama keluarga. Graf hendaklah dalam format titik. Jika tidak
graf boleh dibaca, NULL dikembalikan.

freadG(fd : int): graf_t
mengembalikan graf seterusnya yang dibaca daripada aliran terbuka fd. Pulangan NULL di hujung fail.

Grafik pelbagai
memadam(g : graf_t, x : obj_t): membatalkan
memadam objek x daripada graf g. Jika g is NULL, fungsi menggunakan graf punca bagi
x. Jika x ialah graf atau subgraf, ia ditutup melainkan x terkunci.

adalah dalam(g : graf_t, x : obj_t): int
kembali benar jika x berada dalam subgraf g.

klonG(g : graf_t, s : rentetan): graf_t
mencipta klon graf g dengan nama s. Jika s ialah "", graf yang dicipta mempunyai
nama yang sama dengan g.

mengklon(g : graf_t, x : obj_t): obj_t
mencipta klon objek x dalam graf g. Khususnya, objek baru mempunyai yang sama
nama/nilai atribut dan struktur sebagai objek asal. Jika objek dengan
kunci yang sama seperti x sudah wujud, sifat-sifatnya ditindih oleh mereka x dan juga
objek dikembalikan. Jika kelebihan diklon, kedua-dua titik akhir diklon secara tersirat.
Jika graf diklon, semua nod, tepi dan subgraf diklon secara tersirat. Jika x
ialah graf, g mungkin NULL, dalam hal ini objek yang diklon akan menjadi akar baharu
graf. Dalam kes ini, panggilan adalah bersamaan dengan klonG(x,"").

salinan(g : graf_t, x : obj_t): obj_t
mencipta salinan objek x dalam graf g, di mana objek baharu mempunyai nama/nilai yang sama
atribut sebagai objek asal. Jika objek dengan kunci yang sama seperti x sudah
wujud, sifat-sifatnya ditindih oleh sifat-sifat x dan objek dikembalikan. Nota
bahawa ini adalah salinan cetek. Jika x ialah graf, tiada nod, tepi atau subgrafnya
disalin ke dalam graf baharu. Jika x ialah kelebihan, titik akhir dicipta jika
perlu, tetapi ia tidak diklon. Jika x ialah graf, g mungkin NULL, dalam kes mana
objek klon akan menjadi graf punca baharu.

salinanA(src : obj_t, tgt : obj_t): int
menyalin atribut objek src untuk membantah tgt, menimpa sebarang nilai atribut
tgt mungkin pada mulanya mempunyai.

mendorong(g : graf_t): membatalkan
Memanjangkan g kepada sambungan subgraf teraruh nod dalam graf puncanya.

hasAttr(src : obj_t, nama : rentetan): int
mengembalikan bukan sifar jika objek src mempunyai atribut yang namanya nama. Ia mengembalikan 0
sebaliknya.

isAttr(g : graf_t, jenis : rentetan, nama : rentetan): int
mengembalikan bukan sifar jika atribut nama telah ditakrifkan dalam g untuk objek
diberikan jenis. Untuk nod, tepi dan graf, jenis hendaklah "N", "E", dan "G",
masing-masing. Ia mengembalikan 0 sebaliknya.

aget(src : obj_t, nama : rentetan): rentetan
mengembalikan nilai atribut nama dalam objek src. Ini berguna untuk kes tersebut
apabila nama bercanggah dengan salah satu kata kunci seperti "kepala" atau "akar". Sekiranya
atribut belum diisytiharkan dalam graf, fungsi akan memulakannya dengan
nilai lalai "". Untuk mengelakkan ini, seseorang harus menggunakan hasAttr or isAttr fungsi
untuk memeriksa sama ada atribut itu wujud.

satu set(src : obj_t, nama : rentetan, nilai : rentetan): int
menetapkan nilai atribut nama dalam objek src kepada nilai. Pulangan 0 pada kejayaan,
bukan sifar pada kegagalan. Lihat aget atas.

getDflt(g : graf_t, jenis : rentetan, nama : rentetan): rentetan
mengembalikan nilai lalai atribut nama dalam objek dalam g daripada yang diberikan jenis. Untuk
nod, tepi dan graf, jenis hendaklah "N", "E", dan "G", masing-masing. Sekiranya
atribut belum diisytiharkan dalam graf, fungsi akan memulakannya dengan
nilai lalai "". Untuk mengelakkan ini, seseorang harus menggunakan isAttr fungsi untuk menyemak
bahawa sifat itu wujud.

setDflt(g : graf_t, jenis : rentetan, nama : rentetan, nilai : rentetan): int
menetapkan nilai lalai atribut nama kepada nilai dalam objek dalam g daripada yang diberikan
jenis. Untuk nod, tepi dan graf, jenis hendaklah "N", "E", dan "G", masing-masing.
Mengembalikan 0 pada kejayaan, bukan sifar pada kegagalan. Lihat getDflt atas.

fstAttr(g : graf_t, jenis : rentetan): rentetan
mengembalikan nama atribut pertama objek dalam g daripada yang diberikan jenis. Untuk
nod, tepi dan graf, jenis hendaklah "N", "E", dan "G", masing-masing. Jika ada
tiada atribut, rentetan "" dikembalikan.

nxtAttr(g : graf_t, jenis : rentetan, nama : rentetan): rentetan
mengembalikan nama atribut seterusnya bagi objek dalam g daripada yang diberikan jenis selepas
atribut nama. Hujahnya nama mestilah nama atribut sedia ada; ia
lazimnya ialah nilai pulangan bagi panggilan sebelumnya fstAttr or nxtAttr. Untuk
nod, tepi dan graf, jenis hendaklah "N", "E", dan "G", masing-masing. Jika ada
tiada atribut yang tinggal, rentetan "" dikembalikan.

compOf(g : graf_t, n : node_t): graf_t
mengembalikan komponen graf yang disambungkan g yang mengandungi nod n, sebagai subgraf daripada
g. Subgraf hanya mengandungi nod. Satu boleh guna mendorong untuk menambah tepi. The
fungsi gagal dan kembali NULL if n tidak masuk g. Ketersambungan adalah berdasarkan
graf tidak terarah asas bagi g.

macam(obj : obj_t): rentetan
mengembalikan petunjuk jenis obj. Untuk nod, tepi dan graf, ia kembali
"N", "E", dan "G", masing-masing.

mengunci(g : graf_t, v : int): int
melaksanakan penguncian graf pada graf akar. Jika integer v adalah positif, graf ialah
ditetapkan supaya panggilan masa depan untuk memadam tiada kesan serta merta. Jika v ialah sifar, iaitu
graf tidak berkunci. Jika terdapat panggilan untuk memadamkan graf semasa ia berada
dikunci, graf ditutup. Jika v adalah negatif, tiada apa yang dilakukan. Dalam semua kes, yang
nilai kunci sebelumnya dikembalikan.

Rentetan
pecut(fmt : rentetan, ...): rentetan
mengembalikan rentetan yang terhasil daripada memformat nilai ungkapan
berlaku selepas fmt mengikut Printf(3) format fmt

gsub(str : rentetan, tepuk : rentetan): rentetan

gsub(str : rentetan, tepuk : rentetan, pengganti : rentetan): rentetan
pulangan str dengan semua subrentetan sepadan tepuk dipadam atau digantikan dengan pengganti,
masing-masing.

sub(str : rentetan, tepuk : rentetan): rentetan

sub(str : rentetan, tepuk : rentetan, pengganti : rentetan): rentetan
pulangan str dengan padanan subrentetan paling kiri tepuk dipadam atau digantikan dengan pengganti,
masing-masing. Aksara '^' dan '$' boleh digunakan pada permulaan dan akhir,
masing-masing, daripada tepuk untuk menambat corak pada permulaan atau akhir str.

substrat(str : rentetan, idx : int): rentetan

substrat(str : rentetan, idx : int, len : int): rentetan
mengembalikan subrentetan daripada str bermula pada kedudukan idx ke hujung rentetan atau
panjang len, masing-masing. Pengindeksan bermula pada 0. Jika idx adalah negatif atau idx is
lebih besar daripada panjang str, ralat maut berlaku. Begitu juga, pada yang kedua
kes, jika len adalah negatif atau idx + len adalah lebih besar daripada panjang str, membawa maut
ralat berlaku.

strcmp(s1 : rentetan, s2 : rentetan): int
menyediakan fungsi C standard strcmp(3).

panjang(s : rentetan): int
mengembalikan panjang rentetan s.

indeks(s : rentetan, t : rentetan): int

rindex(s : rentetan, t : rentetan): int
mengembalikan indeks aksara dalam rentetan s di mana salinan paling kiri (paling kanan).
daripada rentetan t boleh didapati, atau -1 jika t bukan subrentetan daripada s.

sepadan dengan(s : rentetan, p : rentetan): int
mengembalikan indeks aksara dalam rentetan s di mana padanan corak paling kiri
p boleh didapati, atau -1 jika tiada subrentetan daripada s perlawanan p.

topper(s : rentetan): rentetan
mengembalikan versi s dengan aksara abjad ditukar kepada huruf besar.

untuk rendahkan(s : rentetan): rentetan
mengembalikan versi s dengan aksara abjad ditukar kepada huruf kecil.

kanun(s : rentetan): rentetan
mengembalikan versi s sesuai untuk digunakan sebagai pengecam dalam fail titik.

html(g : graf_t, s : rentetan): rentetan
mengembalikan versi ``ajaib'' s sebagai rentetan HTML. Ini biasanya akan digunakan untuk
lampirkan label seperti HTML pada objek graf. Ambil perhatian bahawa rentetan yang dikembalikan tinggal di dalamnya
g. Khususnya, ia akan dibebaskan apabila g ditutup, dan bertindak sebagai rentetan HTML,
ia perlu digunakan dengan objek daripada g. Di samping itu, ambil perhatian bahawa kurungan sudut
petikan tidak sepatutnya menjadi sebahagian daripada s. Ini akan ditambah jika g ditulis dalam DOT konkrit
format.

ishtml(s : rentetan): int
mengembalikan bukan sifar jika dan hanya jika s ialah rentetan HTML.

xDaripada(s : rentetan): rentetan
mengembalikan rentetan "x"jika s mempunyai bentuk "x,y", di mana kedua-duanya x and y adalah angka.

yDaripada(s : rentetan): rentetan
mengembalikan rentetan "y"jika s mempunyai bentuk "x,y", di mana kedua-duanya x and y adalah angka.

llOf(s : rentetan): rentetan
mengembalikan rentetan "llx,lly"jika s mempunyai bentuk "llx,lly,urx,merungut", di mana semua llx,
lly, urx, dan merungut adalah angka.

urOf(s)
urOf(s : rentetan): rentetan mengembalikan rentetan "urx,merungut"jika s mempunyai bentuk
"llx,lly,urx,merungut", di mana semua llx, lly, urx, dan merungut adalah angka.

sscanf(s : rentetan, fmt : rentetan, ...): int
mengimbas rentetan s, mengekstrak nilai mengikut sscanf(3) format fmt. Yang
nilai disimpan dalam alamat berikut fmt, alamat yang mempunyai borang &v,
di mana v ialah beberapa pembolehubah yang diisytiharkan daripada jenis yang betul. Mengembalikan bilangan item
berjaya diimbas.

berpecah(s : rentetan, naik : pelbagai, sep : rentetan): int

berpecah(s : rentetan, naik : pelbagai): int

token(s : rentetan, naik : pelbagai, sep : rentetan): int

token(s : rentetan, naik : pelbagai): int
. berpecah fungsi memutuskan rentetan s ke dalam bidang, manakala token fungsi
memecahkan rentetan menjadi token. Medan terdiri daripada semua aksara bukan pemisah
antara dua aksara pemisah atau permulaan atau penghujung rentetan. Oleh itu, a
medan mungkin rentetan kosong. Token ialah subrentetan maksimum, bukan kosong bukan
mengandungi aksara pemisah. Aksara pemisah adalah yang diberikan dalam
sep hujah. Jika sep tidak disediakan, nilai lalai ialah " \t\n". The
fungsi mengembalikan bilangan medan atau token.

Medan dan token disimpan dalam tatasusunan hujah. Tatasusunan mestilah rentetan-
bernilai dan, jika jenis indeks ditentukan, ia mestilah int. Entri diindeks
dengan integer berturut-turut, bermula pada 0. Sebarang nilai yang telah disimpan dalam tatasusunan akan
sama ada ditimpa, atau masih ada selepas fungsi kembali.

I / O
cetak(...): membatalkan
cetak( expr, ... ) mencetak perwakilan rentetan setiap hujah pada gilirannya
stdout, diikuti dengan baris baharu.

Printf(fmt : rentetan, ...): int

Printf(fd : int, fmt : rentetan, ...): int
mencetak rentetan yang terhasil daripada memformat nilai ungkapan berikut
fmt mengikut Printf(3) format fmt. Mengembalikan 0 pada kejayaan. Secara lalai, ia
mencetak pada stdout. Jika integer pilihan fd diberikan, output ditulis pada
aliran terbuka yang dikaitkan dengan fd.

imbasan(fmt : rentetan, ...): int

imbasan(fd : int, fmt : rentetan, ...): int
mengimbas dalam nilai daripada aliran input mengikut imbasan(3) format fmt. Yang
nilai disimpan dalam alamat berikut fmt, alamat yang mempunyai borang &v,
di mana v ialah beberapa pembolehubah yang diisytiharkan daripada jenis yang betul. Secara lalai, ia dibaca daripada
stdin. Jika integer pilihan fd diberikan, input dibaca daripada aliran terbuka
Berkaitan dengan fd. Mengembalikan bilangan item yang berjaya diimbas.

terbukaF(s : rentetan, t : rentetan): int
membuka fail s sebagai aliran I/O. Hujah rentetan t menentukan bagaimana fail itu
dibuka. Argumen adalah sama seperti untuk fungsi C fopen(3). Ia mengembalikan an
integer menandakan strim, atau -1 pada ralat.

Seperti biasa, aliran 0, 1 dan 2 sudah dibuka seperti stdin, stdout, dan stderr,
masing-masing. Sejak gvpr mungkin menggunakan stdin untuk membaca graf input, pengguna harus
elakkan menggunakan aliran ini.

tutupF(fd : int): int
menutup aliran terbuka yang dilambangkan oleh integer fd. Strim 0, 1 dan 2 tidak boleh
tertutup. Mengembalikan 0 pada kejayaan.

bacaL(fd : int): rentetan
mengembalikan baris seterusnya dibaca daripada aliran input fd. Ia mengembalikan rentetan kosong ""
pada akhir fail. Ambil perhatian bahawa aksara baris baharu ditinggalkan dalam rentetan yang dikembalikan.

Matematik
exp(d : dua kali ganda): dua kali ganda
mengembalikan e kepada dkuasa ke.

log(d : dua kali ganda): dua kali ganda
mengembalikan log semula jadi bagi d.

persegi(d : dua kali ganda): dua kali ganda
mengembalikan punca kuasa dua bagi gandaan itu d.

pow(d : dua kali ganda, x : dua kali ganda): dua kali ganda
pulangan d dinaikkan kepada xkuasa ke.

cos(d : dua kali ganda): dua kali ganda
mengembalikan kosinus bagi d.

tanpa(d : dua kali ganda): dua kali ganda
mengembalikan sinus daripada d.

atan2(y : dua kali ganda, x : dua kali ganda): dua kali ganda
mengembalikan arctangent daripada y / x dalam julat -pi hingga pi.

MIN(y : dua kali ganda, x : dua kali ganda): dua kali ganda
mengembalikan minimum sebanyak y and x.

MAX(y : dua kali ganda, x : dua kali ganda): dua kali ganda
mengembalikan maksimum sebanyak y and x.

Bersekutu Arrays
# naik : int
mengembalikan bilangan elemen dalam tatasusunan naik.

idx in naik : int
mengembalikan 1 jika nilai telah ditetapkan untuk indeks idx dalam tatasusunan naik. Ia mengembalikan 0
sebaliknya.

tidak tenteram(v : pelbagai, idx): int
mengalih keluar item yang diindeks oleh idx. Ia mengembalikan 1 jika item itu wujud, 0 sebaliknya.

tidak tenteram(v : pelbagai): membatalkan
memulakan semula tatasusunan.

Lain-lain
keluar(v : int): membatalkan
sebab-sebab gvpr untuk keluar dengan kod keluar v.

sistem(cmd : rentetan): int
menyediakan fungsi C standard sistem(3). Ia melaksanakan cmd dalam shell pengguna
persekitaran, dan mengembalikan status keluar shell.

rand(): dua kali ganda
mengembalikan gandaan pseudo-rawak antara 0 dan 1.

srand(): int

srand(v : int): int
menetapkan benih untuk penjana nombor rawak. Hujah pilihan memberikan benih;
jika ia ditinggalkan, masa semasa digunakan. Nilai benih sebelumnya dikembalikan.
srand hendaklah dipanggil sebelum sebarang panggilan ke rand.

colorx(warna : rentetan, fmt : rentetan): rentetan
menterjemah warna dari satu format ke format yang lain. The warna hujah hendaklah berwarna
dalam salah satu perwakilan rentetan yang diiktiraf. The fmt nilai harus menjadi salah satu daripada
"RGB", "RGBA", "HSV" atau "HSVA". Rentetan kosong dikembalikan apabila ralat.

TERBINA PELBAGAI


gvpr menyediakan pembolehubah terbina dalam khas tertentu, yang nilainya ditetapkan secara automatik oleh
gvpr bergantung kepada konteks. Kecuali seperti yang dinyatakan, pengguna tidak boleh mengubah suai nilai mereka.

$ : obj_t
menandakan objek semasa (nod, tepi, graf) bergantung pada konteks. Bukan
terdapat dalam BEGIN or AKHIR fasal.

$F : rentetan
ialah nama fail input semasa.

$G : graf_t
menandakan graf semasa sedang diproses. Ia tidak tersedia di BEGIN or AKHIR
fasal.

$NG : graf_t
menandakan graf seterusnya yang akan diproses. Jika $NG ialah NULL, graf semasa $G adalah
graf terakhir. Ambil perhatian bahawa jika input datang daripada stdin, graf terakhir tidak boleh
ditentukan sehingga paip masukan ditutup. Ia tidak tersedia di BEGIN or AKHIR
klausa, atau jika -n bendera digunakan.

$O : graf_t
menandakan graf keluaran. Sebelum lintasan graf, ia dimulakan ke sasaran
graf. Selepas merentasi dan mana-mana END_G tindakan, jika ia merujuk kepada graf tidak kosong,
graf itu dicetak pada aliran keluaran. Ia hanya sah di N, E and END_G
klausa. Graf output boleh ditetapkan oleh pengguna.

$T : graf_t
menandakan graf sasaran semasa. Ia adalah subgraf daripada $G dan hanya tersedia dalam
N, E and END_G fasal.

$tgtname : rentetan
menandakan nama graf sasaran. Secara lalai, ia ditetapkan kepada "gvpr_result". Jika
digunakan beberapa kali semasa pelaksanaan gvpr, nama akan ditambah dengan
integer. Pembolehubah ini mungkin ditetapkan oleh pengguna.

$tvroot : node_t
menunjukkan nod permulaan untuk kedalaman (diarah atau tidak terarah)-pertama atau keluasan-
lintasan pertama graf (rujuk. $tvtype di bawah). Nilai lalai ialah NULL Untuk
setiap graf input. Selepas traversal pada akar yang diberikan, jika nilai $tvroot
telah berubah, traversal baru akan bermula dengan nilai baru $tvroot. Juga, tetapkan
$tvnext di bawah.

$tvnext : node_t
menunjukkan nod permulaan seterusnya untuk kedalaman (diarah atau tidak terarah)-pertama atau
lebar-pertama lintasan graf (rujuk. $tvtype di bawah). Jika satu lintasan selesai
dan juga $tvroot belum ditetapkan semula tetapi $tvnext telah ditetapkan tetapi tidak digunakan, ini
nod akan digunakan sebagai pilihan seterusnya untuk $tvroot. Nilai lalai ialah NULL Untuk
setiap graf input.

$tvedge : tepi_t
Untuk traversal BFS dan DFS, ini ditetapkan ke tepi yang digunakan untuk mencapai arus
nod atau tepi. Pada permulaan traversal, atau untuk jenis traversal lain, the
nilai adalah NULL.

$tvtype : tvtype_t
menunjukkan bagaimana gvpr merentasi graf. Ia hanya boleh mengambil satu daripada nilai malar
dengan previx "TV_" yang diterangkan di bawah. TV_flat adalah lalai.

Dalam perpustakaan graf asas cgraph(3), tepi dalam graf tidak terarah diberi an
arah sewenang-wenangnya. Ini digunakan untuk traversal, seperti TV_fwd, memerlukan
tepi terarah.

ARGC : int
menandakan bilangan hujah yang ditentukan oleh -a args hujah baris arahan.

ARGV : rentetan pelbagai
menandakan tatasusunan hujah yang ditentukan oleh -a args hujah baris arahan. The
ihujah ke- diberikan oleh ARGV[i].

TERBINA MAHAL


Terdapat beberapa pemalar simbolik yang ditakrifkan oleh gvpr.

NULL : obj_t
rujukan objek nol, bersamaan dengan 0.

TV_flat : tvtype_t
lintasan yang mudah dan rata, dengan objek graf dilawati dalam susunan yang kelihatan sewenang-wenangnya.

TV_ne : tvtype_t
traversal yang mula-mula melawat semua nod, kemudian semua tepi.

TV_en : tvtype_t
lintasan yang mula-mula melawati semua tepi, kemudian semua nod.

TV_dfs : tvtype_t
TV_postdfs : tvtype_t
TV_prepostdfs : tvtype_t
lintasan graf menggunakan carian mendalam-pertama pada asas tidak terarah
graf. Untuk melakukan perjalanan, gvpr akan menyemak nilai $tvroot. Jika ini mempunyai
nilai yang sama yang sebelumnya (pada permulaan, nilai sebelumnya dimulakan
kepada NULL.), gvpr hanya akan mencari beberapa nod yang tidak dilawati dan melintasi sambungannya
komponen. Sebaliknya, jika $tvroot telah berubah, komponen yang disambungkan akan
dilawati, dengan mengandaikan ia belum pernah dilawati atau, jika $tvroot is NULL, yang
perjalanan akan berhenti. Perhatikan bahawa menggunakan TV_dfs and $tvroot, adalah mungkin untuk mencipta
gelung tak terhingga.

Secara lalai, traversal dilakukan dalam prapesanan. Iaitu, nod dilawati sebelum ini
semua tepinya yang tidak dilawati. Untuk TV_postdfs, semua tepi nod yang belum dilawati ialah
dilawati sebelum nod. Untuk TV_prepostdfs, nod dilawati dua kali, sebelum dan
selepas semua tepi yang tidak dilawati.

TV_fwd : tvtype_t
TV_postfwd : tvtype_t
TV_prepostfwd : tvtype_t
Traversal graf menggunakan carian mendalam-pertama pada graf berikut sahaja
lengkok ke hadapan. Pilihan akar untuk traversal adalah sama seperti yang diterangkan untuk
TV_dfs atas. Urutan lawatan berbeza yang ditentukan oleh TV_fwd, TV_postfwd
and TV_prepostfwd adalah sama seperti yang ditentukan oleh traversal analog
TV_dfs, TV_postdfs and TV_prepostdfs.

TV_rev : tvtype_t
TV_postrev : tvtype_t
TV_prepostrev : tvtype_t
Traversal graf menggunakan carian mendalam-pertama pada graf berikut sahaja
lengkok terbalik. Pilihan akar untuk traversal adalah sama seperti yang diterangkan untuk
TV_dfs atas. Urutan lawatan berbeza yang ditentukan oleh TV_rev, TV_postrev
and TV_prepostrev adalah sama seperti yang ditentukan oleh traversal analog
TV_dfs, TV_postdfs and TV_prepostdfs.

TV_bfs : tvtype_t
Traversal graf menggunakan carian luas-pertama pada graf mengabaikan tepi
arah. Lihat item pada TV_dfs di atas untuk peranan $tvroot.

CONTOH


gvpr -i 'N[color="blue"]' fail.gv

Hasilkan subgraf teraruh nod bagi semua nod dengan warna biru.

gvpr -c 'N[color="blue"]{color = "merah"}' fail.gv

Jadikan semua nod biru merah.

BEGIN { int n, e; int tot_n = 0; int tot_e = 0; }
BEG_G {
n = nNodes($G);
e = nEdges($G);
Printf ("%d nod %d tepi %s\n", n, e, $G.name);
tot_n += n;
tot_e += e;
}
AKHIR { Printf ("%d nod %d tepi jumlah\n", tot_n, tot_e) }

Versi program gc.

gvpr -c ""

Bersamaan dengan tidak.

BEG_G { graf_t g = graf ("bercantum", "S"); }
E {
node_t h = klon(g,$.head);
node_t t = klon(g,$.tail);
tepi_t e = tepi(t,h,"");
e.berat = e.berat + 1;
}
END_G { $O = g; }

Menghasilkan versi graf input yang ketat, dengan atribut berat tepi
menunjukkan berapa banyak tepi daripada graf input yang diwakili oleh tepi.

BEGIN {node_t n; int darjah []}
E{deg[kepala]++; deg[ekor]++; }
END_G {
Untuk (deg[n]) {
Printf ("darjah[%s] = %d\n", n.nama, deg[n]);
}
}

Mengira darjah nod dengan tepi.

BEGIN {
int i, indent;
int dilihat[rentetan];
membatalkan prInd (int cnt) {
Untuk (i = 0; i < cnt; i++) Printf (" ");
}
}
BEG_G {

$tvtype = TV_prepostfwd;
$tvroot = nod($,ARGV[0]);
}
N {
if (dilihat[$.name]) inden--;
lagi {
prInd(indent);
cetak ($.nama);
dilihat[$.name] = 1;
indent++;
}
}

Mencetak traversal kedalaman pertama graf, bermula dengan nod yang namanya
ARGV[0], sebagai senarai inden.

PERSEKITARAN


GVPRPATH
Senarai direktori yang dipisahkan kolon untuk dicari untuk mencari fail yang ditentukan oleh
pilihan -f. gvpr mempunyai senarai lalai terbina dalam. Jika GVPRPATH tidak ditakrifkan, iaitu
senarai lalai digunakan. Jika GVPRPATH bermula dengan titik bertindih, senarai dibentuk oleh
menambah GVPRPATH ke senarai lalai. Jika GVPRPATH berakhir dengan titik bertindih, senarainya ialah
dibentuk dengan menambahkan senarai lalai ke GVPRPATH. Jika tidak, GVPRPATH digunakan untuk
senarai.

Pada sistem Windows, gantikan ``titik bertitik'' dengan ``titik bertitik'' dalam perenggan sebelumnya.

Gunakan gvpr dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad