InggrisPerancisSpanyol

Ad


favorit OnWorks

gvpr - Online di Cloud

Jalankan gvpr di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah gvpr yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


gvpr - pemindaian pola grafik dan bahasa pemrosesan

RINGKASAN


gvpr [-icnqV?] [ -o file keluar ] [ -a args ] [ 'prog' | -f profil ] [ arsip ]

DESKRIPSI


gvpr (Sebelumnya dikenal sebagai gpr) adalah editor aliran grafik yang terinspirasi oleh Wow. Ini menyalin input
grafik ke outputnya, mungkin mengubah struktur dan atributnya, membuat yang baru
grafik, atau mencetak informasi arbitrer. Model grafik yang disediakan oleh
libcgraph(3). Secara khusus, gvpr membaca dan menulis grafik menggunakan bahasa titik.

Pada dasarnya, gvpr melintasi setiap grafik input, dilambangkan dengan $G, mengunjungi setiap node dan edge,
mencocokkannya dengan aturan predikat-tindakan yang disediakan dalam program input. Aturannya adalah
dievaluasi secara berurutan. Untuk setiap predikat yang bernilai benar, tindakan yang sesuai adalah
dilakukan. Selama traversal, simpul atau tepi saat ini yang dikunjungi dilambangkan dengan $.

Untuk setiap grafik input, ada subgraf target, dilambangkan dengan $T, awalnya kosong dan digunakan
untuk mengakumulasi entitas yang dipilih, dan grafik keluaran, $O, digunakan untuk pemrosesan akhir dan kemudian
ditulis ke keluaran. Secara default, grafik output adalah grafik target. grafik keluaran
dapat diatur dalam program atau, dalam arti terbatas, pada baris perintah.

PILIHAN


Opsi berikut didukung:

-a args
Tali args dibagi menjadi token yang dipisahkan spasi, dengan individu
token tersedia sebagai string di gvpr program sebagai ARGV[0],...,ARGV[ARGC-1].
Karakter spasi putih dalam substring yang dikutip tunggal atau ganda, atau didahului oleh a
garis miring terbalik, diabaikan sebagai pemisah. Secara umum, karakter garis miring terbalik dimatikan
arti khusus dari karakter berikut. Perhatikan bahwa token yang berasal dari
beberapa -a bendera digabungkan.

-c Gunakan grafik sumber sebagai grafik keluaran.

-i Turunkan ekstensi subgraf yang diinduksi simpul dari grafik keluaran dalam konteks
grafik akarnya.

-o file keluar
Menyebabkan aliran keluaran ditulis ke file yang ditentukan; secara default, outputnya adalah
tertulis kepada stdout.

-f profil
Gunakan konten file yang ditentukan sebagai program untuk dieksekusi pada input. Jika
profil berisi karakter garis miring, namanya diambil sebagai nama path file.
Jika tidak, gvpr akan menggunakan direktori yang ditentukan dalam variabel lingkungan
GVPPATH untuk mencari filenya. Jika -f tidak diberikan, gvpr akan menggunakan non-
argumen opsi sebagai program.

-q Menonaktifkan pesan peringatan.

-n Menonaktifkan pembacaan grafik di depan. Secara default, variabel $NG diatur ke grafik berikutnya
untuk diproses. Ini membutuhkan pembacaan grafik berikutnya sebelum memproses
grafik saat ini, yang dapat memblokir jika grafik berikutnya hanya dihasilkan sebagai respons terhadap
beberapa tindakan yang berkaitan dengan pemrosesan grafik saat ini.

-V Menyebabkan program mencetak informasi versi dan keluar.

-? Menyebabkan program mencetak informasi penggunaan dan keluar.

OPERA


Operan berikut didukung:

arsip Nama file yang berisi 1 atau lebih grafik dalam bahasa titik. Jika tidak -f Option
diberikan, nama depan dihapus dari daftar dan digunakan sebagai program input.
Jika daftar file kosong, stdin akan digunakan.

PROGRAM


A gvpr program terdiri dari daftar klausa predikat-tindakan, memiliki salah satu bentuk:

MULAI { tindakan }

BEG_G { tindakan }

N [ predikat ] { tindakan }

E [ predikat ] { tindakan }

END_G { tindakan }

AKHIR { tindakan }

Sebuah program dapat berisi paling banyak satu dari masing-masing MULAI, END_G dan AKHIR klausa. Ada bisa
menjadi sejumlah BEG_G, N dan E pernyataan, yang pertama diterapkan pada grafik, yang kedua untuk
node, yang ketiga ke tepi. Ini dipisahkan menjadi blok, blok yang terdiri dari
opsional BEG_G pernyataan dan semuanya N dan E pernyataan sampai selanjutnya BEG_G pernyataan, jika
setiap. Semantik tingkat atas dari a gvpr program adalah:

Mengevaluasi MULAI klausa, jika ada.
Untuk setiap grafik masukan G {
Untuk setiap blok {
set G sebagai grafik saat ini dan objek saat ini.
Mengevaluasi BEG_G klausa, jika ada.
Untuk setiap node dan edge di G {
Atur node atau edge sebagai objek saat ini.
Mengevaluasi N or E klausa, sebagaimana mestinya.
}
}
set G sebagai objek saat ini.
Mengevaluasi END_G klausa, jika ada.
}
Mengevaluasi AKHIR klausa, jika ada.

Tindakan dari MULAI, BEG_G, END_G dan AKHIR klausa dilakukan ketika klausa adalah
dievaluasi. Untuk N or E klausa, baik predikat atau tindakan dapat dihilangkan. Jika ada
tidak ada predikat dengan tindakan, tindakan dilakukan pada setiap simpul atau tepi, sebagai
sesuai. Jika tidak ada tindakan dan predikat bernilai benar, yang terkait
simpul atau tepi ditambahkan ke grafik target.

Blok dievaluasi dalam urutan di mana mereka terjadi. Dalam satu blok, N klausa
(E klausa, masing-masing) dievaluasi dalam urutan terjadinya. Catatan, meskipun,
bahwa dalam satu blok, N or E klausa dapat saling terkait, tergantung pada urutan traversal.

Predikat dan tindakan adalah urutan pernyataan dalam dialek C yang didukung oleh
cepat(3) perpustakaan. Satu-satunya perbedaan antara predikat dan tindakan adalah yang pertama
harus memiliki tipe yang dapat diinterpretasikan sebagai benar atau salah. Di sini C . biasa
konvensi diikuti, di mana nilai bukan nol dianggap benar. Ini termasuk
string tidak kosong dan referensi tidak kosong ke node, edge, dll. Namun, jika string dapat
dikonversi ke bilangan bulat, nilai ini digunakan.

Selain tipe dasar C biasa (membatalkan, int, tangki, mengapung, panjang, unsigned dan dua kali lipat),
gvpr menyediakan tali sebagai sinonim untuk arang*, dan tipe berbasis grafik simpul_t, tepi_t,
grafik_t dan keberatan. itu keberatan tipe dapat dilihat sebagai supertipe dari 3 beton lainnya
jenis; tipe dasar yang benar dipertahankan secara dinamis. Selain tipe dasar ini,
hanya ekspresi tipe lain yang didukung yang merupakan array (asosiatif).

Konstanta mengikuti sintaks C, tetapi string dapat dikutip dengan baik "..." or '...'. gvpr
menerima komentar C++ serta komentar tipe cpp. Untuk yang terakhir, jika garis dimulai dengan
karakter '#', sisa baris diabaikan.

Pernyataan dapat berupa deklarasi fungsi, variabel atau array, atau executable
penyataan. Untuk deklarasi, ada satu ruang lingkup. Deklarasi array memiliki bentuk:

mengetik susunan [ type0 ]

dimana type0 adalah opsional. Jika diberikan, pengurai akan menerapkan semua array itu
subskrip memiliki tipe yang ditentukan. Jika tidak disediakan, objek dari semua jenis dapat
digunakan sebagai subscript. Seperti dalam C, variabel dan array harus dideklarasikan. Secara khusus,
variabel yang tidak dideklarasikan akan diinterpretasikan sebagai nama atribut dari sebuah node, edge atau
grafik, tergantung pada konteksnya.

Pernyataan yang dapat dieksekusi dapat berupa salah satu dari berikut ini:

{ [ pernyataan ... ] }
ekspresi // biasanya adalah = ekspresi
jika( ekspresi ) pernyataan [ lain pernyataan ]
untuk( ekspresi ; ekspresi ; ekspresi ) pernyataan
untuk( susunan [ adalah ]) pernyataan
untuk ( susunan [ adalah ]) pernyataan
ketika ( ekspresi ) pernyataan
beralih ( ekspresi ) kasus Laporan
istirahat [ ekspresi ]
terus [ ekspresi ]
kembali [ ekspresi ]
Item dalam tanda kurung adalah opsional.

Dalam bentuk kedua dari untuk pernyataan dan untuk pernyataan, variabel adalah diatur ke
setiap nilai digunakan sebagai indeks dalam array yang ditentukan dan kemudian yang terkait pernyataan is
dievaluasi. Untuk indeks numerik dan string, indeks dikembalikan dalam peningkatan
(menurunkan) urutan numerik atau leksikografis untuk untuk (untuk, masing-masing). Ini bisa digunakan
untuk menyortir.

Definisi fungsi hanya dapat muncul di MULAI ayat.

Ekspresi termasuk ekspresi C biasa. Perbandingan string menggunakan == dan != mengobati
operan tangan kanan sebagai pola untuk tujuan pencocokan ekspresi reguler. Pola
menggunakan ksh(1) sintaks pola pencocokan file. (Untuk persamaan string sederhana, gunakan strcmp
fungsi.

gvpr akan mencoba menggunakan ekspresi sebagai string atau nilai numerik yang sesuai. Keduanya
Cetakan seperti C dan templat fungsi akan menyebabkan konversi dilakukan, jika memungkinkan.

Ekspresi tipe grafis (yaitu, grafik_t, simpul_t, tepi_t, keberatan) dapat diikuti oleh
referensi lapangan berupa .nama. Nilai yang dihasilkan adalah nilai atribut
bernama nama dari objek yang diberikan. Selain itu, dalam konteks tertentu yang tidak dideklarasikan,
pengidentifikasi yang tidak dimodifikasi dianggap sebagai nama atribut. Secara khusus, pengidentifikasi seperti itu
menunjukkan atribut dari simpul atau tepi saat ini, masing-masing, di N dan E klausa, dan
grafik saat ini di BEG_G dan END_G klausa.

Seperti biasa di libcgraph(3) model, atribut bernilai string. Tambahan, gvpr
mendukung atribut semu tertentu dari objek grafik, tidak harus bernilai string. Ini
mencerminkan sifat intrinsik objek grafik dan tidak dapat disetel oleh pengguna.

kepala : simpul_t
kepala tepi.

ekor : simpul_t
ekor tepi.

nama : tali
nama edge, node atau graph. Nama sisi memiliki bentuk "<ekor‐
nama>[]", di mana adalah "->"Atau"--" bergantung kepada
apakah grafik itu berarah atau tidak. Bagian braket [] hanya muncul jika
edge memiliki kunci non-trivial.

derajat masuk : int
derajat ke dalam suatu simpul.

gelar luar : int
derajat keluar dari suatu simpul.

gelar : int
derajat suatu simpul.

akar : grafik_t
grafik akar dari suatu objek. Akar dari graf akar adalah dirinya sendiri.

induk : grafik_t
graf induk dari subgraf. Induk dari graf akar adalah NULL

n_tepi : int
jumlah sisi dalam grafik

n_node : int
jumlah node dalam grafik

diarahkan : int
benar (bukan nol) jika grafik diarahkan

ketat : int
benar (bukan nol) jika grafiknya tegas

BUILT-IN FUNGSI


Fungsi-fungsi berikut dibangun ke dalam gvpr. Fungsi-fungsi itu mengembalikan referensi ke grafik
objek kembali NULL dalam kasus kegagalan.

Grafik dan subgraf
grafik(s : tali, t : tali): grafik_t
membuat grafik yang namanya s dan yang tipenya ditentukan oleh string t.
Mengabaikan kasus, karakter U, D, S, N memiliki interpretasi yang tidak terarah,
terarah, ketat, dan tidak ketat. Jika t kosong, terarah, tidak
grafik yang ketat dihasilkan.

subg(g : grafik_t, s : tali): grafik_t
membuat subgraf dalam grafik g dengan nama s. Jika subgraf sudah ada, itu adalah
dikembalikan.

adalahSubg(g : grafik_t, s : tali): grafik_t
mengembalikan subgraf dalam grafik g dengan nama s, jika ada, atau NULL jika tidak.

fstsubg(g : grafik_t): grafik_t
mengembalikan subgraf pertama dalam grafik g, atau NULL jika tidak ada.

nxtsubg(sg : grafik_t): grafik_t
mengembalikan subgraf berikutnya setelah sg, atau NULL.

langsung(g : grafik_t): int
mengembalikan nilai true jika dan hanya jika g diarahkan.

ketat(g : grafik_t): int
mengembalikan nilai true jika dan hanya jika g ketat.

nNode(g : grafik_t): int
mengembalikan jumlah node dalam g.

nTepi(g : grafik_t): int
mengembalikan jumlah sisi dalam g.

Nodes
simpul(sg : grafik_t, s : tali): simpul_t
membuat simpul dalam grafik g dari nama s. Jika simpul seperti itu sudah ada, itu dikembalikan.

subnode(sg : grafik_t, n : simpul_t): simpul_t
menyisipkan simpul n ke dalam subgraf g. Mengembalikan simpul.

fstnode(g : grafik_t): simpul_t
mengembalikan simpul pertama dalam grafik g, atau NULL jika tidak ada.

nxtnode(n : simpul_t): simpul_t
mengembalikan simpul berikutnya setelah n dalam grafik akar, atau NULL.

nxtnode_sg(sg : grafik_t, n : simpul_t): simpul_t
mengembalikan simpul berikutnya setelah n in sg, atau NULL.

adalahNode(sg : grafik_t, s : tali): simpul_t
mencari simpul di (sub) grafik sg dari nama s. Jika simpul seperti itu ada, itu dikembalikan.
Jika tidak, NULL dikembalikan.

adalahSubnode(sg : grafik_t, n : simpul_t): int
mengembalikan bukan nol jika simpul n ada di (sub) grafik sg, atau nol sebaliknya.

derajat dalam(sg : grafik_t, n : simpul_t): int
mengembalikan derajat ke dalam simpul n dalam (sub) grafik sg.

derajat luar(sg : grafik_t, n : simpul_t): int
mengembalikan derajat keluar dari simpul n dalam (sub) grafik sg.

derajat(sg : grafik_t, n : simpul_t): int
mengembalikan derajat simpul n dalam (sub) grafik sg.

Tepi
tepi(t : simpul_t, h : simpul_t, s : tali): tepi_t
menciptakan tepi dengan simpul ekor t, simpul kepala h dan nama s dalam grafik akar. jika
grafik tidak terarah, perbedaan antara node kepala dan ekor tidak penting.
Jika tepi seperti itu sudah ada, itu dikembalikan.

edge_sg(sg : grafik_t, t : simpul_t, h : simpul_t, s : tali): tepi_t
menciptakan tepi dengan simpul ekor t, simpul kepala h dan nama s dalam (sub) grafik sg (dan semua
grafik induk). Jika grafik tidak berarah, perbedaan antara kepala dan ekor
node tidak penting. Jika tepi seperti itu sudah ada, itu dikembalikan.

bawahan(g : grafik_t, e : tepi_t): tepi_t
menyisipkan tepi e ke dalam subgraf g. Mengembalikan tepi.

adalah Edge(t : simpul_t, h : simpul_t, s : tali): tepi_t
mencari tepi dengan simpul ekor t, simpul kepala h dan nama s. Jika grafiknya adalah
tidak terarah, perbedaan antara simpul kepala dan ekor tidak penting. Jika seperti itu
tepi ada, itu dikembalikan. Sebaliknya, NULL dikembalikan.

adalahEdge_sg(sg : grafik_t, t : simpul_t, h : simpul_t, s : tali): tepi_t
mencari tepi dengan simpul ekor t, simpul kepala h dan nama s dalam (sub) grafik sg. Jika
grafik tidak terarah, perbedaan antara node kepala dan ekor tidak penting.
Jika tepi seperti itu ada, itu dikembalikan. Sebaliknya, NULL dikembalikan.

adalahSubedge(g : grafik_t, e : tepi_t): int
mengembalikan bukan nol jika tepi e ada di (sub) grafik sg, atau nol sebaliknya.

gemuk(n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam grafik akar.

fstout_sg(sg : grafik_t, n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam (sub) grafik sg.

nxtout(e : tepi_t): tepi_t
mengembalikan outedge berikutnya setelah e dalam grafik akar.

nxtout_sg(sg : grafik_t, e : tepi_t): tepi_t
mengembalikan outedge berikutnya setelah e dalam grafik sg.

terakhir(n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam grafik akar.

fstin_sg(sg : grafik_t, n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam grafik sg.

nxtin(e : tepi_t): tepi_t
mengembalikan inedge berikutnya setelah e dalam grafik akar.

nxtin_sg(sg : grafik_t, e : tepi_t): tepi_t
mengembalikan inedge berikutnya setelah e dalam grafik sg.

tepi(n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam grafik akar.

fstedge_sg(sg : grafik_t, n : simpul_t): tepi_t
mengembalikan tepi pertama dari simpul n dalam grafik sg.

com.nxtedge(e : tepi_t, simpul_t): tepi_t
mengembalikan tepi berikutnya setelah e dalam grafik akar.

nxtedge_sg(sg : grafik_t, e : tepi_t, simpul_t): tepi_t
mengembalikan tepi berikutnya setelah e dalam grafik sg.

opp(e : tepi_t, simpul_t): simpul_t
mengembalikan simpul di tepi e tidak sebanding dengan n. Mengembalikan NULL jika n bukan simpul dari
e. Ini bisa berguna saat menggunakan tepi dan com.nxtedge untuk menghitung tetangga dari
n.

Grafik I / O
menulis(g : grafik_t): membatalkan
cetakan g dalam format titik ke aliran keluaran.

tulisG(g : grafik_t, nama-nama : tali): membatalkan
cetakan g dalam format titik ke dalam file nama-nama.

fwriteG(g : grafik_t, fd : int): membatalkan
cetakan g dalam format titik ke aliran terbuka yang dilambangkan dengan bilangan bulat fd.

bacaG(nama-nama : tali): grafik_t
mengembalikan grafik yang dibaca dari file nama-nama. Grafik harus dalam format titik. Jika tidak
grafik dapat dibaca, NULL dikembalikan.

takutG(fd : int): grafik_t
mengembalikan grafik berikutnya yang dibaca dari aliran terbuka fd. Kembali NULL di akhir file.

Grafik varia
hapus(g : grafik_t, x : keberatan): membatalkan
menghapus objek x dari grafik g. Jika g is NULL, fungsi tersebut menggunakan graf akar dari
x. Jika x adalah graf atau subgraf, tertutup kecuali x terkunci.

ada di(g : grafik_t, x : keberatan): int
mengembalikan true jika x ada di subgraf g.

klonG(g : grafik_t, s : tali): grafik_t
membuat tiruan dari grafik g dengan nama s. Jika s adalah "", grafik yang dibuat memiliki
nama yang sama dengan g.

clone(g : grafik_t, x : keberatan): keberatan
membuat tiruan objek x dalam grafik g. Secara khusus, objek baru memiliki hal yang sama
nama/nilai atribut dan struktur sebagai objek aslinya. Jika suatu benda dengan
kunci yang sama dengan x sudah ada, atributnya dilapis dengan atribut-atribut dari x dan
objek dikembalikan. Jika sebuah tepi dikloning, kedua titik akhir secara implisit dikloning.
Jika suatu graf dikloning, semua simpul, tepi, dan subgraf akan dikloning secara implisit. Jika x
adalah grafik, g mungkin NULL, dalam hal ini objek kloning akan menjadi root baru
grafik. Dalam hal ini, panggilan itu setara dengan kloningG(x,"").

salinan(g : grafik_t, x : keberatan): keberatan
membuat salinan objek x dalam grafik g, di mana objek baru memiliki nama/nilai yang sama
atribut sebagai objek aslinya. Jika sebuah objek dengan kunci yang sama dengan x sudah
ada, atributnya dilapis dengan atribut-atribut dari x dan objek dikembalikan. Catatan
bahwa ini adalah salinan yang dangkal. Jika x adalah graf, tidak ada simpul, tepi, atau subgrafnya
disalin ke dalam grafik baru. Jika x adalah tepi, titik akhir dibuat jika
diperlukan, tetapi mereka tidak dikloning. Jika x adalah grafik, g mungkin NULL, dalam hal ini
objek kloning akan menjadi grafik root baru.

salinanA(src : keberatan, tgt : keberatan): int
menyalin atribut objek src keberatan tgt, menimpa nilai atribut apa pun
tgt mungkin awalnya memiliki.

menyebabkan(g : grafik_t): membatalkan
Meluas g ke ekstensi subgraf yang diinduksi simpul dalam grafik akarnya.

memilikiAttr(src : keberatan, nama : tali): int
mengembalikan bukan nol jika objek src memiliki atribut yang namanya nama. Ini mengembalikan 0
jika tidak.

adalahAttr(g : grafik_t, jenis : tali, nama : tali): int
mengembalikan bukan nol jika sebuah atribut nama telah didefinisikan dalam g untuk objek dari
diberikan jenis. Untuk node, edge, dan graph, jenis harus "N", "E", dan "G",
masing-masing. Ini mengembalikan 0 sebaliknya.

usia(src : keberatan, nama : tali): tali
mengembalikan nilai atribut nama dalam objek src. Ini berguna untuk kasus-kasus itu
ketika nama bentrok dengan salah satu kata kunci seperti "head" atau "root". jika
atribut belum dideklarasikan dalam grafik, fungsi akan menginisialisasi dengan
nilai default "". Untuk menghindari hal ini, seseorang harus menggunakan memilikiAttr or adalahAttr fungsi
untuk memeriksa apakah atribut itu ada.

satu set(src : keberatan, nama : tali, nilai : tali): int
menetapkan nilai atribut nama dalam objek src untuk nilai. Mengembalikan 0 pada keberhasilan,
tidak nol pada kegagalan. Lihat usia atas.

dapatkanDflt(g : grafik_t, jenis : tali, nama : tali): tali
mengembalikan nilai default atribut nama dalam objek di g dari yang diberikan jenis. Forum
node, tepi, dan grafik, jenis harus "N", "E", dan "G", masing-masing. jika
atribut belum dideklarasikan dalam grafik, fungsi akan menginisialisasi dengan
nilai default "". Untuk menghindari hal ini, seseorang harus menggunakan adalahAttr berfungsi untuk memeriksa
bahwa atribut itu ada.

setDflt(g : grafik_t, jenis : tali, nama : tali, nilai : tali): int
menetapkan nilai default atribut nama untuk nilai dalam objek di g dari yang diberikan
jenis. Untuk node, edge, dan graph, jenis harus "N", "E", dan "G", masing-masing.
Mengembalikan 0 pada keberhasilan, bukan nol pada kegagalan. Lihat dapatkanDflt atas.

fstAttr(g : grafik_t, jenis : tali): tali
mengembalikan nama atribut pertama objek di g dari yang diberikan jenis. Forum
node, tepi, dan grafik, jenis harus "N", "E", dan "G", masing-masing. Jika ada
tidak ada atribut, string "" dikembalikan.

nxtAttr(g : grafik_t, jenis : tali, nama : tali): tali
mengembalikan nama atribut objek berikutnya di g dari yang diberikan jenis setelah
atribut nama. Argumen nama harus berupa nama atribut yang ada; dia
biasanya akan menjadi nilai balik dari panggilan sebelumnya ke fstAttr or nxtAttr. Forum
node, tepi, dan grafik, jenis harus "N", "E", dan "G", masing-masing. Jika ada
tidak ada atribut yang tersisa, string "" dikembalikan.

compOf(g : grafik_t, n : simpul_t): grafik_t
mengembalikan komponen terhubung dari grafik g mengandung simpul n, sebagai subgraf dari
g. Subgraf hanya berisi node. Seseorang dapat menggunakan menyebabkan untuk menambahkan tepi. NS
fungsi gagal dan kembali NULL if n tidak ada di g. Konektivitas didasarkan pada
grafik tak berarah yang mendasari g.

jenisDari(obj : keberatan): tali
mengembalikan indikasi jenis obj. Untuk node, edge, dan graph, ia mengembalikan
"N", "E", dan "G", masing-masing.

mengunci(g : grafik_t, v : int): int
mengimplementasikan penguncian grafik pada grafik root. Jika bilangan bulat v positif, grafiknya adalah
atur agar panggilan di masa mendatang ke hapus tidak memiliki efek langsung. Jika v adalah nol,
grafik tidak terkunci. Jika ada panggilan untuk menghapus grafik saat itu
terkunci, grafik ditutup. Jika v negatif, tidak ada yang dilakukan. Dalam semua kasus,
nilai kunci sebelumnya dikembalikan.

String
lari cepat(fmt : tali, ...): tali
mengembalikan string yang dihasilkan dari memformat nilai ekspresi
terjadi setelah fmt menurut Printf(3) bentuk fmt

gsub(str : tali, tepuk : tali): tali

gsub(str : tali, tepuk : tali, membalas : tali): tali
Pengembalian str dengan semua substring yang cocok tepuk dihapus atau diganti oleh membalas,
masing.

di bawah(str : tali, tepuk : tali): tali

di bawah(str : tali, tepuk : tali, membalas : tali): tali
Pengembalian str dengan pencocokan substring paling kiri tepuk dihapus atau diganti oleh membalas,
masing-masing. Karakter '^' dan '$' dapat digunakan di awal dan akhir,
masing-masing, dari tepuk untuk mengaitkan pola ke awal atau akhir str.

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

substr(str : tali, idx : int, len : int): tali
mengembalikan substring dari str mulai dari posisi idx ke ujung string atau
panjangnya len, masing-masing. Pengindeksan dimulai dari 0. Jika idx negatif atau idx is
lebih besar dari panjang str, terjadi kesalahan fatal. Demikian pula, di kedua
kasus, jika len negatif atau idx + len lebih besar dari panjang str, fatal
terjadi kesalahan.

strcmp(s1 : tali, s2 : tali): int
menyediakan fungsi C standar strcmp(3).

panjangnya(s : tali): int
mengembalikan panjang string s.

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

rindex(s : tali, t : tali): int
mengembalikan indeks karakter dalam string s di mana salinan paling kiri (paling kanan)
dari tali t dapat ditemukan, atau -1 jika t bukan substring dari s.

pertandingan(s : tali, p : tali): int
mengembalikan indeks karakter dalam string s di mana kecocokan pola paling kiri
p dapat ditemukan, atau -1 jika tidak ada substring dari s korek api p.

puncak(s : tali): tali
mengembalikan versi s dengan karakter alfabet diubah menjadi huruf besar.

lebih rendah(s : tali): tali
mengembalikan versi s dengan karakter alfabet diubah menjadi huruf kecil.

kanon(s : tali): tali
mengembalikan versi s sesuai untuk digunakan sebagai pengidentifikasi dalam file titik.

html(g : grafik_t, s : tali): tali
mengembalikan versi ``ajaib'' dari s sebagai string HTML. Ini biasanya akan digunakan untuk
melampirkan label seperti HTML ke objek grafik. Perhatikan bahwa string yang dikembalikan tinggal di
g. Secara khusus, itu akan dibebaskan ketika g ditutup, dan untuk bertindak sebagai string HTML,
itu harus digunakan dengan objek g. Selain itu, perhatikan bahwa kurung sudut
kutipan tidak boleh menjadi bagian dari s. Ini akan ditambahkan jika g ditulis dalam beton DOT
Format.

ishtml(s : tali): int
mengembalikan bukan nol jika dan hanya jika s adalah string HTML.

xDari(s : tali): tali
mengembalikan string "x" jika s memiliki bentuk"x,y", di mana keduanya x dan y bersifat numerik.

yDari(s : tali): tali
mengembalikan string "y" jika s memiliki bentuk"x,y", di mana keduanya x dan y bersifat numerik.

llOf(s : tali): tali
mengembalikan string "llx,lly" jika s memiliki bentuk"llx,lly,kamu,ury", dimana semua llx,
lly, kamu, dan ury bersifat numerik.

urDari(s)
kamu(s : tali): tali mengembalikan string "kamu,ury" jika s memiliki bentuk
"llx,lly,kamu,ury", dimana semua llx, lly, kamu, dan ury bersifat numerik.

scanf(s : tali, fmt : tali, ...): int
memindai string s, mengekstrak nilai sesuai dengan scanf(3) bentuk fmt. itu
nilai disimpan di alamat berikut: fmt, alamat memiliki bentuk &v,
dimana v adalah beberapa variabel yang dideklarasikan dari tipe yang benar. Mengembalikan jumlah item
berhasil dipindai.

membagi(s : tali, arr : susunan, sep : tali): int

membagi(s : tali, arr : susunan): int

token(s : tali, arr : susunan, sep : tali): int

token(s : tali, arr : susunan): int
Grafik membagi fungsi memutuskan string s ke dalam bidang, sedangkan token fungsi
memecah string menjadi token. Bidang terdiri dari semua karakter non-pemisah
antara dua karakter pemisah atau awal atau akhir string. Jadi,
bidang mungkin string kosong. Token adalah substring maksimal, tidak kosong, bukan
mengandung karakter pemisah. Karakter pemisah adalah yang diberikan dalam
sep argumen. Jika sep tidak disediakan, nilai defaultnya adalah " \t\n". NS
fungsi mengembalikan jumlah bidang atau token.

Bidang dan token disimpan dalam array argumen. Array harus tali-
dihargai dan, jika jenis indeks ditentukan, itu harus int. Entri diindeks
dengan bilangan bulat berurutan, mulai dari 0. Nilai apa pun yang sudah disimpan dalam array akan
ditimpa, atau masih ada setelah fungsi kembali.

I / O
mencetak(...): membatalkan
mencetak( cepat, ... ) mencetak representasi string dari setiap argumen secara bergantian ke
stdout, diikuti oleh baris baru.

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

Printf(fd : int, fmt : tali, ...): int
mencetak string yang dihasilkan dari memformat nilai ekspresi berikut:
fmt menurut Printf(3) bentuk fmt. Mengembalikan 0 pada keberhasilan. Secara default, itu
mencetak pada stdout. Jika bilangan bulat opsional fd diberikan, output ditulis pada
aliran terbuka yang terkait dengan fd.

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

scanf(fd : int, fmt : tali, ...): int
memindai nilai dari aliran input sesuai dengan scanf(3) bentuk fmt. itu
nilai disimpan di alamat berikut: fmt, alamat memiliki bentuk &v,
dimana v adalah beberapa variabel yang dideklarasikan dari tipe yang benar. Secara default, terbaca dari
stdin. Jika bilangan bulat opsional fd diberikan, input dibaca dari aliran terbuka
terkait dengan fd. Mengembalikan jumlah item yang berhasil dipindai.

bukaF(s : tali, t : tali): int
membuka file s sebagai aliran I/O. Argumen string t menentukan bagaimana file tersebut
dibuka. Argumennya sama dengan fungsi C fopen(3). Ia mengembalikan sebuah
integer yang menunjukkan aliran, atau -1 pada kesalahan.

Seperti biasa, streaming 0, 1 dan 2 sudah dibuka sebagai stdin, stdout, dan stderr,
masing-masing. Sejak gvpr dapat digunakan stdin untuk membaca grafik input, pengguna harus
hindari menggunakan aliran ini.

tutupF(fd : int): int
menutup aliran terbuka yang dilambangkan dengan bilangan bulat fd. Aliran 0, 1 dan 2 tidak bisa
tertutup. Mengembalikan 0 pada keberhasilan.

bacaL(fd : int): tali
mengembalikan baris berikutnya yang dibaca dari aliran input fd. Ini mengembalikan string kosong ""
di akhir file. Perhatikan bahwa karakter baris baru tertinggal di string yang dikembalikan.

Matematika
exp(d : dua kali lipat): dua kali lipat
mengembalikan e ke dkekuatan.

mencatat(d : dua kali lipat): dua kali lipat
mengembalikan log alami dari d.

persegi(d : dua kali lipat): dua kali lipat
mengembalikan akar kuadrat dari ganda d.

pow(d : dua kali lipat, x : dua kali lipat): dua kali lipat
Pengembalian d diangkat ke xkekuatan.

sebab(d : dua kali lipat): dua kali lipat
mengembalikan kosinus dari d.

dosa(d : dua kali lipat): dua kali lipat
mengembalikan sinus d.

atan2(y : dua kali lipat, x : dua kali lipat): dua kali lipat
mengembalikan busur dari y / x dalam rentang -pi hingga pi.

MIN(y : dua kali lipat, x : dua kali lipat): dua kali lipat
mengembalikan minimum y dan x.

MAX(y : dua kali lipat, x : dua kali lipat): dua kali lipat
mengembalikan maksimum y dan x.

Asosiatif Array
# arr : int
mengembalikan jumlah elemen dalam array arr.

idx in arr : int
mengembalikan 1 jika nilai telah ditetapkan untuk indeks idx dalam susunan arr. Ini mengembalikan 0
jika tidak.

tidak disetel(v : susunan, idx): int
menghapus item yang diindeks oleh idx. Ini mengembalikan 1 jika item ada, 0 sebaliknya.

tidak disetel(v : susunan): membatalkan
menginisialisasi ulang array.

bermacam-macam
keluar(v : int): membatalkan
penyebab gvpr untuk keluar dengan kode keluar v.

sistem(cmd : tali): int
menyediakan fungsi C standar sistem(3). Ini mengeksekusi cmd di shell pengguna
lingkungan, dan mengembalikan status keluar dari shell.

baris() : dua kali lipat
mengembalikan pseudo-acak ganda antara 0 dan 1.

pasir() : int

pasir(v : int): int
menetapkan benih untuk generator nomor acak. Argumen opsional memberikan benih;
jika dihilangkan, waktu saat ini digunakan. Nilai benih sebelumnya dikembalikan.
pasir harus dipanggil sebelum ada panggilan ke baris.

warnax(warna : tali, fmt : tali): tali
menerjemahkan warna dari satu format ke format lainnya. NS warna argumen harus berwarna
di salah satu representasi string yang dikenali. NS fmt nilai harus menjadi salah satu dari
"RGB", "RGBA", "HSV", atau "HSVA". String kosong dikembalikan karena kesalahan.

BUILT-IN VARIABEL


gvpr menyediakan khusus tertentu, variabel built-in, yang nilainya ditetapkan secara otomatis oleh
gvpr tergantung pada konteksnya. Kecuali seperti yang disebutkan, pengguna tidak dapat mengubah nilainya.

$ : keberatan
menunjukkan objek saat ini (simpul, tepi, grafik) tergantung pada konteksnya. Bukan itu
tersedia di MULAI or AKHIR klausa.

$F : tali
adalah nama file input saat ini.

$G : grafik_t
menunjukkan grafik saat ini sedang diproses. Ini tidak tersedia di MULAI or AKHIR
klausa.

$NG : grafik_t
menunjukkan grafik berikutnya yang akan diproses. Jika $NG adalah NULL, grafik saat ini $G adalah
grafik terakhir. Perhatikan bahwa jika input berasal dari stdin, grafik terakhir tidak dapat
ditentukan sampai pipa input ditutup. Ini tidak tersedia di MULAI or AKHIR
klausa, atau jika -n bendera digunakan.

$O : grafik_t
menunjukkan grafik keluaran. Sebelum traversal grafik, ini diinisialisasi ke target
grafik. Setelah traversal dan apapun END_G tindakan, jika mengacu pada grafik tidak kosong,
grafik itu dicetak ke aliran keluaran. Ini hanya berlaku di N, E dan END_G
klausa. Grafik keluaran dapat diatur oleh pengguna.

$T : grafik_t
menunjukkan grafik target saat ini. Ini adalah subgraf dari $G dan hanya tersedia di
N, E dan END_G klausa.

$tgtnama : tali
menunjukkan nama grafik target. Secara default, ini diatur ke "gvpr_hasil". Jika
digunakan beberapa kali selama pelaksanaan gvpr, nama akan ditambahkan dengan
bilangan bulat. Variabel ini dapat diatur oleh pengguna.

$tvroot : simpul_t
menunjukkan node awal untuk (diarahkan atau tidak diarahkan) depth-first atau broadth-
traversal pertama dari grafik (lih. $tipe tv di bawah). Nilai defaultnya adalah NULL untuk
setiap grafik masukan. Setelah traversal pada akar yang diberikan, jika nilai $tvroot
telah berubah, traversal baru akan dimulai dengan nilai baru $tvroot. Juga, atur
$tvselanjutnya di bawah.

$tvselanjutnya : simpul_t
menunjukkan node awal berikutnya untuk (diarahkan atau tidak diarahkan) depth-first or
traversal pertama dari grafik (lih. $tipe tv di bawah). Jika traversal selesai
dan $tvroot belum diatur ulang tetapi $tvselanjutnya telah disetel tetapi tidak digunakan, ini
node akan digunakan sebagai pilihan selanjutnya untuk $tvroot. Nilai defaultnya adalah NULL untuk
setiap grafik masukan.

$tvedge : tepi_t
Untuk traversal BFS dan DFS, ini diatur ke tepi yang digunakan untuk sampai pada arus
simpul atau tepi. Pada awal traversal, atau untuk tipe traversal lainnya,
Nilai adalah NULL.

$tipe tv : tipe tv_t
menunjukkan bagaimana gvpr melintasi grafik. Itu hanya dapat mengambil salah satu dari nilai konstan
dengan awalan "TV_" yang dijelaskan di bawah. TV_flat adalah defaultnya.

Di pustaka grafik yang mendasarinya cgrafik(3), tepi dalam graf tak berarah diberikan an
arah yang sewenang-wenang. Ini digunakan untuk traversal, seperti TV_fwd, membutuhkan
tepi diarahkan.

ARGC : int
menunjukkan jumlah argumen yang ditentukan oleh -a args argumen baris perintah.

ARGV : tali susunan
menunjukkan array argumen yang ditentukan oleh -a args argumen baris perintah. NS
iargumen diberikan oleh ARGV[i].

BUILT-IN KONSTAN


Ada beberapa konstanta simbolis yang didefinisikan oleh gvpr.

NULL : keberatan
referensi objek nol, setara dengan 0.

TV_flat : tipe tv_t
sederhana, traversal datar, dengan objek grafik dikunjungi dalam urutan yang tampaknya sewenang-wenang.

TV_ne : tipe tv_t
sebuah traversal yang pertama mengunjungi semua node, lalu semua edge.

TV_id : tipe tv_t
traversal yang pertama mengunjungi semua edge, lalu semua node.

TV_dfs : tipe tv_t
TV_postdfs : tipe tv_t
TV_prepostdfs : tipe tv_t
traversal grafik menggunakan pencarian depth-first pada undirected yang mendasarinya
grafik. Untuk melakukan traversal, gvpr akan memeriksa nilai $tvroot. Jika ini memiliki
nilai yang sama dengan sebelumnya (di awal, nilai sebelumnya diinisialisasi
untuk NULL.) gvpr hanya akan mencari beberapa simpul yang belum dikunjungi dan melintasinya yang terhubung
komponen. Di sisi lain, jika $tvroot telah berubah, komponen yang terhubung akan
dikunjungi, dengan asumsi itu belum pernah dikunjungi sebelumnya atau, jika $tvroot is NULL, yang
lintas akan berhenti. Perhatikan bahwa menggunakan TV_dfs dan $tvroot, adalah mungkin untuk membuat
lingkaran tak terbatas.

Secara default, traversal dilakukan dalam pre-order. Artinya, sebuah node dikunjungi sebelumnya
semua tepinya yang belum dikunjungi. Untuk TV_postdfs, semua tepi simpul yang belum dikunjungi adalah
dikunjungi sebelum node. Untuk TV_prepostdfs, sebuah node dikunjungi dua kali, sebelum dan
setelah semua tepinya yang belum dikunjungi.

TV_fwd : tipe tv_t
TV_postfwd : tipe tv_t
TV_prepostfwd : tipe tv_t
Sebuah traversal dari grafik menggunakan pencarian kedalaman-pertama pada grafik berikut saja
busur maju. Pilihan akar untuk traversal sama seperti yang dijelaskan untuk
TV_dfs di atas. Urutan kunjungan yang berbeda ditentukan oleh TV_fwd, TV_postfwd
dan TV_prepostfwd sama dengan yang ditentukan oleh traversal analog
TV_dfs, TV_postdfs dan TV_prepostdfs.

TV_rev : tipe tv_t
TV_postrev : tipe tv_t
TV_prepostrev : tipe tv_t
Sebuah traversal dari grafik menggunakan pencarian kedalaman-pertama pada grafik berikut saja
busur terbalik. Pilihan akar untuk traversal sama seperti yang dijelaskan untuk
TV_dfs di atas. Urutan kunjungan yang berbeda ditentukan oleh TV_rev, TV_postrev
dan TV_prepostrev sama dengan yang ditentukan oleh traversal analog
TV_dfs, TV_postdfs dan TV_prepostdfs.

TV_bfs : tipe tv_t
Sebuah traversal dari grafik menggunakan pencarian luas-pertama pada grafik mengabaikan tepi
arah. Lihat barangnya di TV_dfs di atas untuk peran $tvroot.

CONTOH


gvpr -i 'N[warna="biru"]' file.gv

Hasilkan subgraf yang diinduksi simpul dari semua simpul dengan warna biru.

gvpr -c 'N[warna="biru"]{warna = "merah"}' file.gv

Jadikan semua simpul biru menjadi merah.

MULAI { int n, e; int total_n = 0; int total_e = 0; }
BEG_G {
n = nNode($G);
e = nTepi($G);
Printf ("%D node %d ujung-ujungnya %s\n", n, e, $G.nama);
total_n += n;
total_e += e;
}
AKHIR { Printf ("%D node %d ujung-ujungnya jumlah\n", total_n, total_e) }

Versi program gc.

gvpr -c ""

Setara dengan tidak.

BEG_G { grafik_t g = grafik ("menggabungkan", "S"); }
E {
simpul_t h = klon(g,$.kepala);
simpul_t t = klon(g,$.ekor);
tepi_t e = tepi(t,t,"");
e.berat badan = e.berat badan + 1;
}
END_G { $O = g; }

Menghasilkan versi grafik input yang ketat, di mana atribut bobot dari sebuah edge
menunjukkan berapa banyak tepi dari grafik input yang diwakili tepi.

MULAI {simpul_t n; int derajat[]}
E{deg[kepala]++; deg[ekor]++; }
END_G {
untuk (derajat[n]) {
Printf ("derajat[%s] = %d\n", n.nama, derajat[n]);
}
}

Menghitung derajat node dengan tepi.

MULAI {
int i, indentasi;
int terlihat[string];
membatalkan prind (ke dalam tidak) {
untuk (i = 0; i < tidak; saya++) Printf (" ");
}
}
BEG_G {

$tipe tv = TV_prepostfwd;
$tvroot = simpul($,ARGV[0]);
}
N {
if (dilihat[$.nama]) indentasi--;
lain {
prInd(indentasi);
mencetak ($.nama);
dilihat[$.nama] = 1;
lekukan++;
}
}

Mencetak traversal depth-first dari grafik, dimulai dengan node yang bernama
ARGV[0], sebagai daftar indentasi.

LINGKUNGAN


GVPPATH
Daftar direktori yang dipisahkan titik dua untuk dicari untuk menemukan file yang ditentukan oleh
opsi -f. gvpr memiliki daftar bawaan bawaan. Jika GVPPATH tidak terdefinisi,
daftar default digunakan. Jika GVPPATH dimulai dengan titik dua, daftarnya dibentuk oleh
menambahkan GVPPATH ke daftar default. Jika GVPPATH diakhiri dengan titik dua, daftarnya adalah
dibentuk dengan menambahkan daftar default ke GVPPATH. Jika tidak, GVPPATH digunakan untuk
Daftar.

Pada sistem Windows, ganti `` titik dua '' dengan `` titik koma'' di paragraf sebelumnya.

Gunakan gvpr online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad