영어프랑스어스페인어

Ad


온웍스 파비콘

gvpr - 클라우드에서의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 gvpr을 실행하세요.

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 gvpr 명령입니다.

프로그램:

이름


gvpr - 그래프 패턴 스캔 및 처리 언어

개요


gvpr [-icnqV?] [ -o 아웃파일 ] [ -a 인수 ] [ '음식물' | -f 프로그램 파일 ] [ 파일 ]

기술


gvpr (이전으로 알려진 GPR)는 다음에서 영감을 받은 그래프 스트림 편집기입니다. AWK. 입력을 복사합니다.
그래프를 출력하여 구조와 속성을 변환하고 새로운 생성
그래프 또는 임의의 정보를 인쇄합니다. 그래프 모델은 다음과 같습니다.
libcgraph(삼). 특히, gvpr 도트 언어를 사용하여 그래프를 읽고 씁니다.

원래, gvpr 로 표시되는 각 입력 그래프를 통과합니다. $G, 각 노드와 엣지를 방문하고,
입력 프로그램에 제공된 술어 동작 규칙과 일치시킵니다. 규칙은 다음과 같습니다
순서대로 평가됩니다. true로 평가되는 각 술어에 대해 해당 조치는 다음과 같습니다.
수행. 순회하는 동안 현재 방문 중인 노드나 에지는 다음과 같이 표시됩니다. $.

각 입력 그래프에는 다음과 같은 목표 하위 그래프가 있습니다. $T, 처음에는 비어 있고 사용됨
선택한 엔터티와 출력 그래프를 누적하고, $O, 최종 처리에 사용된 다음
출력에 기록됩니다. 기본적으로 출력 그래프는 대상 그래프입니다. 출력 그래프
프로그램에서 설정하거나 제한된 의미에서는 명령줄에서 설정할 수 있습니다.

옵션


다음 옵션이 지원됩니다.

-a 인수
문자열 인수 공백으로 구분된 토큰으로 분할됩니다.
문자열로 사용 가능한 토큰 gvpr 프로그램 ARGV[0],...,ARGV[ARGC-1].
작은따옴표 또는 큰따옴표로 묶인 하위 문자열 내의 공백 문자 또는
백슬래시는 구분 기호로 무시됩니다. 일반적으로 백슬래시 문자는 꺼집니다.
다음 문자의 특별한 의미. 다음에서 파생된 토큰에 유의하세요.
여러 -a 플래그가 연결되어 있습니다.

-c 소스 그래프를 출력 그래프로 사용합니다.

-i 다음의 맥락에서 출력 그래프의 노드 유도 하위 그래프 확장을 도출합니다.
루트 그래프.

-o 아웃파일
출력 스트림이 지정된 파일에 기록되도록 합니다. 기본적으로 출력은
기록 표준 출력.

-f 프로그램 파일
지정된 파일의 내용을 입력 시 실행할 프로그램으로 사용합니다. 만약에
프로그램 파일 슬래시 문자가 포함된 경우 이름은 파일의 경로 이름으로 사용됩니다.
그렇지 않으면, gvpr 환경 변수에 지정된 디렉토리를 사용합니다
GVPRPATH 파일을 찾으려고. 만약에 -f 주어지지 않고, gvpr 첫 번째 비‐를 사용합니다.
옵션 인수를 프로그램으로 사용합니다.

-q 경고 메시지를 끕니다.

-n 그래프 미리 읽기를 끕니다. 기본적으로 변수는 $NG 다음 그래프로 설정되었습니다
처리됩니다. 이를 처리하기 전에 다음 그래프를 읽어야 합니다.
다음 그래프가 다음에 대한 응답으로만 생성되는 경우 차단될 수 있는 현재 그래프
현재 그래프 처리와 관련된 일부 작업입니다.

-V 프로그램이 버전 정보를 인쇄하고 종료하도록 합니다.

-? 프로그램이 사용법 정보를 인쇄하고 종료하도록 합니다.

피연산자


다음 피연산자가 지원됩니다.

파일 도트 언어로 된 하나 이상의 그래프를 포함하는 파일 이름입니다. 그렇지 않은 경우 -f 선택권
지정되면 이름이 목록에서 제거되고 입력 프로그램으로 사용됩니다.
파일 목록이 비어 있는 경우 표준 사용하게 될 것이다.

프로그램


A gvpr 프로그램은 다음 형식 중 하나를 갖는 술어-행동 절의 목록으로 구성됩니다.

BEGIN { 동작 }

BEG_G { 동작 }

N [ 술부 ] { 동작 }

E [ 술부 ] { 동작 }

END_G { 동작 }

END { 동작 }

프로그램에는 다음 중 최대 하나만 포함될 수 있습니다. BEGIN, END_GEND 조항. 있을 수 있다
임의의 수 BEG_G, NE 명령문, 첫 번째는 그래프에 적용되고 두 번째는 그래프에 적용됩니다.
노드, 세 번째는 가장자리입니다. 이들은 블록으로 분리되어 있으며, 블록은 다음으로 구성됩니다.
선택 BEG_G 진술과 모든 것 NE 다음까지의 진술 BEG_G 진술, 만약
어느. 의 최상위 의미론 gvpr 프로그램은 다음과 같습니다

평가 BEGIN 조항이 있는 경우.
각 입력 그래프에 대해 G {
각 블록에 대해 {
세트 G 현재 그래프와 현재 개체로.
평가 BEG_G 조항이 있는 경우.
각 노드와 에지에 대해 G {
노드 또는 가장자리를 현재 개체로 설정합니다.
평가 N or E 해당 조항.
}
}
세트 G 현재 개체로.
평가 END_G 조항이 있는 경우.
}
평가 END 조항이 있는 경우.

의 행동 BEGIN, BEG_G, END_GEND 절은 절이 다음과 같을 때 수행됩니다.
평가되었습니다. 을 위한 N or E 절에서는 술어 또는 행위가 생략될 수 있습니다. 만약 거기에
작업이 포함된 조건자가 없으면 작업은 모든 노드나 에지에서 수행됩니다.
적절한. 조치가 없고 조건자가 true로 평가되면 연관된
노드 또는 에지가 대상 그래프에 추가됩니다.

블록은 발생한 순서대로 평가됩니다. 블록 내에서는 N 조항
(E 절)은 발생 순서대로 평가됩니다. 하지만 참고하세요.
블록 내에서 N or E 절은 순회 순서에 따라 인터레이스될 수 있습니다.

술어와 동작은 다음에서 지원하는 C 방언의 일련의 명령문입니다.
특급(3) 도서관. 술어와 행위의 유일한 차이점은 전자가
true 또는 false로 해석될 수 있는 유형이 있어야 합니다. 여기서는 일반적인 C
XNUMX이 아닌 값은 참으로 간주되는 규칙을 따릅니다. 여기에는 다음이 포함됩니다.
비어 있지 않은 문자열과 노드, 가장자리 등에 대한 비어 있지 않은 참조. 그러나 문자열이 가능하다면
정수로 변환되면 이 값이 사용됩니다.

일반적인 C 기본 유형 외에도(무효화, INT, 이륜 전차, 뜨다, , 부호더블),
gvpr 제공 의 동의어로 숯*, 그래프 기반 유형 node_t, edge_t,
graph_tobj_t. 그만큼 obj_t 유형은 다른 3개 콘크리트의 상위 유형으로 볼 수 있습니다.
유형; 올바른 기본 유형은 동적으로 유지됩니다. 이러한 기본 유형 외에도
지원되는 다른 유형 표현식은 (연관) 배열뿐입니다.

상수는 C 구문을 따르지만 문자열은 다음 중 하나로 인용할 수 있습니다. "..." or '...'. gvpr
C++ 주석과 cpp 유형 주석을 허용합니다. 후자의 경우 줄이 다음으로 시작하면
'#' 문자가 있으면 줄의 나머지 부분은 무시됩니다.

명령문은 함수, 변수, 배열 또는 실행 파일의 선언일 수 있습니다.
성명. 선언의 경우 단일 범위가 있습니다. 배열 선언의 형식은 다음과 같습니다.

유형 정렬 [ type0 ]

어디에 type0 선택 사항입니다. 제공되면 파서는 모든 배열을 강제로 적용합니다.
아래 첨자는 지정된 유형을 갖습니다. 제공되지 않으면 모든 유형의 객체가 될 수 있습니다.
아래첨자로 사용됩니다. C에서처럼 변수와 배열을 선언해야 합니다. 특히,
선언되지 않은 변수는 노드, 에지 또는 노드의 속성 이름으로 해석됩니다.
상황에 따른 그래프.

실행 가능한 문은 다음 중 하나일 수 있습니다.

{ [ 성명서 ... ] }
표현 // 일반적으로 였다 = 표현
만약( 표현 ) 성명서 [ 그렇지 않으면 성명서 ]
을위한( 표현 ; 표현 ; 표현 ) 성명서
을위한( 정렬 [ 였다 ]) 성명서
forr( 정렬 [ 였다 ]) 성명서
동안 ( 표현 ) 성명서
스위치 ( 표현 ) 케이스
하다 [ 표현 ]
계속 [ 표현 ]
return [ 표현 ]
괄호 안의 항목은 선택사항입니다.

두 번째 형태의 for 진술 및 forr 명령문, 변수 였다
지정된 배열에서 인덱스로 사용된 각 값과 연관된 성명서 is
평가되었습니다. 숫자 및 문자열 인덱스의 경우 인덱스는 증가하는 방식으로 반환됩니다.
(감소) 숫자 또는 사전순 for (forr, 각각). 이것은 사용될 수 있습니다
정렬용.

함수 정의는 BEGIN 절.

표현식에는 일반적인 C 표현식이 포함됩니다. 다음을 사용한 문자열 비교 ==!= 치료하다
정규식 일치를 위한 패턴으로 오른쪽 피연산자. 패턴
사용 KSH(1) 파일 일치 패턴 구문. (단순한 문자열 동일성을 위해서는 strcmp
기능.

gvpr 표현식을 문자열이나 숫자 값으로 적절하게 사용하려고 시도합니다. 둘 다
C와 유사한 캐스트 및 함수 템플릿은 가능한 경우 변환을 수행합니다.

그래픽 유형의 표현(예: 그래프_t, node_t, edge_t, obj_t) 뒤에는
형식의 필드 참조 .name. 결과 값은 속성의 값입니다.
이름 name 주어진 객체의. 또한 특정 상황에서는 선언되지 않은
수정되지 않은 식별자는 속성 이름으로 간주됩니다. 구체적으로 이러한 식별자는
현재 노드 또는 에지의 속성을 각각 나타냅니다. NE 조항 및
현재 그래프 BEG_GEND_G 조항.

평소와 같이 libcgraph(3) 모델, 속성은 문자열 값입니다. 게다가, gvpr
반드시 문자열 값일 필요는 없는 그래프 개체의 특정 의사 속성을 지원합니다. 이것들
그래프 개체의 고유 속성을 반영하며 사용자가 설정할 수 없습니다.

머리 : node_t
가장자리의 머리.

꼬리 : node_t
가장자리의 꼬리.

name :
간선, 노드 또는 그래프의 이름입니다. Edge의 이름은 "<tail‐
이름>[]", 어디 "->"나"--"에 따라
그래프가 방향이 있든 없든. 브라켓 부분 [] 다음과 같은 경우에만 나타납니다.
edge에는 중요한 키가 있습니다.

정도 : INT
노드의 차수.

정도 : INT
노드의 외도.

정도 : INT
노드의 정도.

뿌리 : graph_t
객체의 루트 그래프. 루트 그래프의 루트는 그 자체입니다.

부모의 : graph_t
하위 그래프의 상위 그래프. 루트 그래프의 부모는 다음과 같습니다. NULL

n_edge : INT
그래프의 간선 수

n_노드 : INT
그래프의 노드 수

감독 된 : INT
그래프가 방향을 향하는 경우 참(XNUMX이 아님)

엄격한 : INT
그래프가 엄격한 경우 참(XNUMX이 아님)

내장 기능


다음 기능이 내장되어 있습니다. gvpr. 그래프에 대한 참조를 반환하는 함수
객체 반환 NULL 실패의 경우.

그래프 하위 그래프
그래프(s : , t : ) : graph_t
이름이 다음과 같은 그래프를 생성합니다. s 그 유형은 문자열로 지정됩니다. t.
대소문자를 무시하고 문자 U, D, S, N 해석의 방향이 정해져 있지 않고,
각각 지시형, 엄격함, 비엄격함입니다. 만약에 t 비어 있음, 방향 지정됨, 비‐
엄격한 그래프가 생성됩니다.

하위(g : graph_t, s : ) : graph_t
그래프에 하위 그래프를 생성합니다. g 이름으로 s. 하위 그래프가 이미 존재하는 경우
반환되었습니다.

isSubg(g : graph_t, s : ) : graph_t
그래프의 하위 그래프를 반환합니다. g 이름으로 s, 존재하는 경우 또는 NULL 그렇지 않으면.

fstsubg(g : graph_t) : graph_t
그래프의 첫 번째 하위 그래프를 반환합니다. gNULL 존재하지 않는 경우.

nxtsubg(sg : graph_t) : graph_t
다음 하위 그래프를 반환합니다. sgNULL.

다이렉트(g : graph_t) : INT
다음과 같은 경우에만 true를 반환합니다. g 지시된다.

엄격하다(g : graph_t) : INT
다음과 같은 경우에만 true를 반환합니다. g 엄격합니다.

n노드(g : graph_t) : INT
노드 수를 반환합니다. g.

nEdge(g : graph_t) : INT
다음의 간선 수를 반환합니다. g.

노드
노드(sg : graph_t, s : ) : node_t
그래프에 노드를 생성합니다 g 이름의 s. 해당 노드가 이미 존재하는 경우 반환됩니다.

하위 노드(sg : graph_t, n : node_t) : node_t
노드를 삽입합니다 n 하위 그래프에 g. 노드를 반환합니다.

fstnode(g : graph_t) : node_t
그래프의 첫 번째 노드를 반환합니다. gNULL 존재하지 않는 경우.

nxt노드(n : node_t) : node_t
다음 노드를 반환 n 루트 그래프에서 또는 NULL.

nxtnode_sg(sg : graph_t, n : node_t) : node_t
다음 노드를 반환 n in sgNULL.

isNode(sg : graph_t, s : ) : node_t
(하위)그래프에서 노드를 찾습니다. sg 이름의 s. 그러한 노드가 존재하면 반환됩니다.
그렇지 않으면, NULL 반환됩니다.

isSubnode(sg : graph_t, n : node_t) : INT
노드인 경우 XNUMX이 아닌 값을 반환합니다. n (하위)그래프에 있음 sg, 그렇지 않으면 XNUMX입니다.

정도의(sg : graph_t, n : node_t) : INT
노드의 차수를 반환합니다. n (하위)그래프에서 sg.

외도(sg : graph_t, n : node_t) : INT
노드의 외도를 반환합니다. n (하위)그래프에서 sg.

정도(sg : graph_t, n : node_t) : INT
노드의 정도를 반환합니다. n (하위)그래프에서 sg.

가장자리
가장자리(t : node_t, h : node_t, s : ) : edge_t
꼬리 노드로 가장자리를 생성합니다. t, 헤드 노드 h 및 이름 s 루트 그래프에서. 만약
그래프의 방향이 지정되지 않은 경우 머리 노드와 꼬리 노드의 구분은 중요하지 않습니다.
그러한 가장자리가 이미 존재하는 경우 반환됩니다.

edge_sg(sg : graph_t, t : node_t, h : node_t, s : ) : edge_t
꼬리 노드로 가장자리를 생성합니다. t, 헤드 노드 h 및 이름 s (하위)그래프에서 sg (그리고 다
상위 그래프). 그래프의 방향이 지정되지 않은 경우 머리와 꼬리의 구별
노드는 중요하지 않습니다. 그러한 가장자리가 이미 존재하는 경우 반환됩니다.

하위 가장자리(g : graph_t, e : edge_t) : edge_t
모서리를 삽입합니다. e 하위 그래프에 g. 가장자리를 반환합니다.

isEdge(t : node_t, h : node_t, s : ) : edge_t
꼬리 노드가 있는 가장자리를 찾습니다. t, 헤드 노드 h 및 이름 s. 그래프가 다음과 같은 경우
방향이 지정되지 않은 경우 헤드 노드와 테일 노드 사이의 구별은 중요하지 않습니다. 만약 그런
가장자리가 존재하면 반환됩니다. 그렇지 않으면, NULL 반환됩니다.

isEdge_sg(sg : graph_t, t : node_t, h : node_t, s : ) : edge_t
꼬리 노드가 있는 가장자리를 찾습니다. t, 헤드 노드 h 및 이름 s (하위)그래프에서 sg. 경우
그래프의 방향이 지정되지 않은 경우 머리 노드와 꼬리 노드의 구분은 중요하지 않습니다.
그러한 가장자리가 존재하면 반환됩니다. 그렇지 않으면, NULL 반환됩니다.

isSubedge(g : graph_t, e : edge_t) : INT
가장자리인 경우 XNUMX이 아닌 값을 반환합니다. e (하위)그래프에 있음 sg, 그렇지 않으면 XNUMX입니다.

fstout(n : node_t) : edge_t
노드의 첫 번째 아웃에지를 반환합니다. n 루트 그래프에서.

fstout_sg(sg : graph_t, n : node_t) : edge_t
노드의 첫 번째 아웃에지를 반환합니다. n (하위)그래프에서 sg.

nxtout(e : edge_t) : edge_t
다음 아웃엣지를 반환합니다. e 루트 그래프에서.

nxtout_sg(sg : graph_t, e : edge_t) : edge_t
다음 아웃엣지를 반환합니다. e 그래프에서 sg.

fstin(n : node_t) : edge_t
노드의 첫 번째 inedge를 반환합니다. n 루트 그래프에서.

fstin_sg(sg : graph_t, n : node_t) : edge_t
노드의 첫 번째 inedge를 반환합니다. n 그래프에서 sg.

넥스틴(e : edge_t) : edge_t
다음 inedge를 반환합니다. e 루트 그래프에서.

nxtin_sg(sg : graph_t, e : edge_t) : edge_t
다음 inedge를 반환합니다. e 그래프에서 sg.

fstedge(n : node_t) : edge_t
노드의 첫 번째 가장자리를 반환합니다. n 루트 그래프에서.

fstedge_sg(sg : graph_t, n : node_t) : edge_t
노드의 첫 번째 가장자리를 반환합니다. n 그래프에서 sg.

넥스테지(e : edge_t, node_t) : edge_t
다음 가장자리를 반환합니다. e 루트 그래프에서.

nxtedge_sg(sg : graph_t, e : edge_t, node_t) : edge_t
다음 가장자리를 반환합니다. e 그래프에서 sg.

OPP(e : edge_t, node_t) : node_t
가장자리에 있는 노드를 반환합니다. e 같지 않음 n. 다음과 같은 경우 NULL을 반환합니다. n 의 노드가 아닙니다.
e. 이는 다음을 사용할 때 유용할 수 있습니다. fstedge넥스테지 이웃을 열거하다
n.

그래프 I / O
쓰다(g : graph_t) : 무효화
인쇄물 g 출력 스트림에 도트 형식으로 표시됩니다.

쓰다G(g : graph_t, 이름 : ) : 무효화
인쇄물 g 도트 형식으로 파일에 이름.

fwriteG(g : graph_t, fd : INT) : 무효화
인쇄물 g 정수로 표시된 오픈 스트림에 도트 형식으로 fd.

읽다G(이름 : ) : graph_t
파일에서 읽은 그래프를 반환합니다. 이름. 그래프는 점 형식이어야 합니다. 그렇지 않은 경우
그래프를 읽을 수 있고, NULL 반환됩니다.

freadG(fd : INT) : graph_t
오픈 스트림에서 읽은 다음 그래프를 반환합니다. fd. 보고 NULL 파일 끝에서.

그래프 잡록
삭제(g : graph_t, x : obj_t) : 무효화
객체를 삭제합니다 x 그래프에서 g. 면 g is NULL, 함수는 다음의 루트 그래프를 사용합니다.
x. 면 x 그래프 또는 하위 그래프인 경우 다음을 제외하면 닫혀 있습니다. x 잠겨 있습니다.

isIn(g : graph_t, x : obj_t) : INT
true를 반환하는 경우 x 하위 그래프에 있음 g.

클론G(g : graph_t, s : ) : graph_t
그래프의 복제본을 생성합니다 g 의 이름으로 s. 면 s ""인 경우 생성된 그래프에는
같은 이름 g.

복제(g : graph_t, x : obj_t) : obj_t
객체의 복제본을 생성합니다. x 그래프에서 g. 특히, 새 객체는 동일합니다.
이름/값 속성 및 구조를 원래 개체로 사용합니다. 을 가진 객체라면
와 같은 키 x 이미 존재하는 경우 해당 속성은 다음의 속성과 겹쳐집니다. x 그리고
객체가 반환됩니다. Edge가 복제되면 두 엔드포인트 모두 암시적으로 복제됩니다.
그래프가 복제되면 모든 노드, 간선 및 하위 그래프가 암시적으로 복제됩니다. 만약에 x
그래프이고, gNULL, 이 경우 복제된 객체는 새로운 루트가 됩니다.
그래프. 이 경우 호출은 다음과 동일합니다. 클론G(x,"").

복사(g : graph_t, x : obj_t) : obj_t
객체의 복사본을 생성합니다 x 그래프에서 g, 여기서 새 개체의 이름/값은 동일합니다.
속성을 원본 개체로 사용합니다. 동일한 키를 가진 객체인 경우 x 이미
존재하는 경우 해당 속성은 다음의 속성과 겹쳐집니다. x 그리고 객체가 반환됩니다. 메모
이것은 얕은 사본이라는 것입니다. 만약에 x 노드, 간선 또는 하위 그래프가 없는 그래프입니다.
새 그래프에 복사됩니다. 만약에 x 가 가장자리인 경우 다음과 같은 경우 끝점이 생성됩니다.
필요하지만 복제되지는 않습니다. 만약에 x 그래프이고, gNULL이 경우
복제된 개체는 새로운 루트 그래프가 됩니다.

복사A(SRC : obj_t, tgt : obj_t) : INT
객체의 속성을 복사합니다. SRC 반대하다 tgt, 모든 속성 값 덮어쓰기
tgt 처음에는 있을 수 있습니다.

유도(g : graph_t) : 무효화
확장하다 g 루트 그래프의 노드 유도 하위 그래프 확장입니다.

hasAttr(SRC : obj_t, name : ) : INT
객체인 경우 XNUMX이 아닌 값을 반환합니다. SRC 이름이 다음과 같은 속성이 있습니다. name. 0을 반환합니다.
그렇지 않으면.

isAttr(g : graph_t, 종류 : , name : ) : INT
속성인 경우 XNUMX이 아닌 값을 반환합니다. name 에서 정의되었습니다. g 개체에 대한
주어진 종류. 노드, 간선 및 그래프의 경우 종류 "N", "E", "G"여야 합니다.
각기. 그렇지 않으면 0을 반환합니다.

에이지(SRC : obj_t, name : ) :
속성의 값을 반환합니다. name 개체에 SRC. 이런 경우에 유용합니다
언제 name "head" 또는 "root"와 같은 키워드 중 하나와 충돌합니다. 만약
속성이 그래프에 선언되지 않은 경우 함수는 이를 다음과 같이 초기화합니다.
기본값은 ""입니다. 이를 방지하려면 다음을 사용해야 합니다. hasAttr or isAttr 기능
속성이 존재하는지 확인합니다.

세트(SRC : obj_t, name : , 가치 : ) : INT
속성 값을 설정합니다. name 개체에 SRC가치. 성공하면 0을 반환하고,
실패 시 XNUMX이 아닙니다. 보다 에이지 위.

getDflt(g : graph_t, 종류 : , name : ) :
속성의 기본값을 반환합니다. name 개체에서 g 주어진 것의 종류. 용
노드, 간선 및 그래프, 종류 각각 "N", "E", "G"여야 합니다. 만약
속성이 그래프에 선언되지 않은 경우 함수는 이를 다음과 같이 초기화합니다.
기본값은 ""입니다. 이를 방지하려면 다음을 사용해야 합니다. isAttr 확인하는 기능
속성이 존재한다는 것입니다.

setDflt(g : graph_t, 종류 : , name : , 가치 : ) : INT
속성의 기본값을 설정합니다. name가치 개체에서 g 주어진 것의
종류. 노드, 간선 및 그래프의 경우 종류 각각 "N", "E", "G"여야 합니다.
성공하면 0을 반환하고, 실패하면 XNUMX이 아닌 값을 반환합니다. 보다 getDflt 위.

fstAttr(g : graph_t, 종류 : ) :
객체의 첫 번째 속성 이름을 반환합니다. g 주어진 것의 종류. 용
노드, 간선 및 그래프, 종류 각각 "N", "E", "G"여야 합니다. 만약 거기에
속성이 없으면 문자열 ""이 반환됩니다.

nxt속성(g : graph_t, 종류 : , name : ) :
객체의 다음 속성 이름을 반환합니다. g 주어진 것의 종류
속성 name. 논쟁 거리 name 기존 속성의 이름이어야 합니다. 그것
일반적으로 이전 호출의 반환 값이 됩니다. fstAttr or nxt속성. 용
노드, 간선 및 그래프, 종류 각각 "N", "E", "G"여야 합니다. 만약 거기에
남은 속성이 없으면 "" 문자열이 반환됩니다.

compOf(g : graph_t, n : node_t) : graph_t
그래프의 연결된 구성요소를 반환합니다. g 노드를 포함하는 n, 의 하위 그래프로
g. 하위 그래프에는 노드만 포함됩니다. 하나는 사용할 수 있습니다 유도 가장자리를 추가합니다. 그만큼
함수가 실패하고 반환됩니다. NULL if n 에 없다 g. 연결성은 다음을 기반으로 합니다.
기본 무방향 그래프 g.

종류(obj : obj_t) :
유형에 대한 표시를 반환합니다. obj. 노드, 간선 및 그래프의 경우 다음을 반환합니다.
각각 "N", "E", "G"입니다.

자물쇠(g : graph_t, v : INT) : INT
루트 그래프에 대한 그래프 잠금을 구현합니다. 정수인 경우 v 양수이고 그래프는
향후 호출이 삭제 즉각적인 효과는 없습니다. 만약에 v XNUMX이다
그래프가 잠금 해제되었습니다. 그래프가 삭제된 동안 그래프를 삭제하라는 호출이 있었던 경우
잠기면 그래프가 닫힙니다. 만약에 v 부정적이면 아무 것도 수행되지 않습니다. 모든 경우에,
이전 잠금 값이 반환됩니다.

문자열
스프린트(fmt : , ...) :
표현식 값의 형식을 지정하여 얻은 문자열을 반환합니다.
이후에 발생 fmt 에 따라 printf(3) 형식 fmt

gsub(하위 버전 : , : ) :

gsub(하위 버전 : , : , 답장 : ) :
반품 하위 버전 모든 하위 문자열이 일치하는 경우 삭제되거나 대체됨 답장,
각각.

이하(하위 버전 : , : ) :

이하(하위 버전 : , : , 답장 : ) :
반품 하위 버전 가장 왼쪽 부분 문자열이 일치하는 경우 삭제되거나 대체됨 답장,
각기. '^' 및 '$' 문자는 시작과 끝 부분에 사용될 수 있습니다.
각각의 패턴을 시작 또는 끝 부분에 고정하려면 하위 버전.

하위 문자열(하위 버전 : , idx : INT) :

하위 문자열(하위 버전 : , idx : INT, : INT) :
의 하위 문자열을 반환합니다. 하위 버전 위치에서 시작 idx 문자열의 끝까지 또는
길이의 , 각각. 인덱싱은 0부터 시작합니다. idx 부정적이거나 idx is
길이보다 큼 하위 버전, 치명적인 오류가 발생합니다. 마찬가지로 두 번째에서는
만약에 경우 부정적이거나 idx + 의 길이보다 크다 하위 버전, 치명적인
오류가 발생합니다.

strcmp(s1 : , s2 : ) : INT
표준 C 기능을 제공합니다 strcmp(3).

길이(s : ) : INT
문자열의 길이를 반환 s.

색인(s : , t : ) : INT

린덱스(s : , t : ) : INT
문자열의 문자 인덱스를 반환합니다. s 여기서 가장 왼쪽(가장 오른쪽) 복사본
문자열의 t 찾을 수 있거나 -1인 경우 t 의 하위 문자열이 아닙니다. s.

일치(s : , p : ) : INT
문자열의 문자 인덱스를 반환합니다. s 패턴의 가장 왼쪽 일치
p 찾을 수 있습니다. 또는 하위 문자열이 없으면 -1입니다. s 성냥 p.

토퍼(s : ) :
다음 버전을 반환합니다. s 알파벳 문자는 대문자로 변환됩니다.

낮추다(s : ) :
다음 버전을 반환합니다. s 알파벳 문자를 소문자로 변환합니다.

정경(s : ) :
다음 버전을 반환합니다. s 도트 파일의 식별자로 사용하기에 적합합니다.

HTML(g : graph_t, s : ) :
의 ``마법'' 버전을 반환합니다. s HTML 문자열로. 이는 일반적으로 다음과 같은 용도로 사용됩니다.
그래프 개체에 HTML과 유사한 레이블을 첨부합니다. 반환된 문자열은 다음 위치에 있습니다.
g. 특히 다음과 같은 경우 해제됩니다. g 닫혀 있으며 HTML 문자열로 작동합니다.
의 객체와 함께 사용해야 합니다. g. 또한 꺾쇠 괄호는
따옴표는 다음의 일부가 되어서는 안 됩니다. s. 다음과 같은 경우 추가됩니다. g 구체적인 DOT로 작성됩니다.
형식입니다.

ishtml(s : ) : INT
다음과 같은 경우에만 XNUMX이 아닌 값을 반환합니다. s HTML 문자열입니다.

xOf(s : ) :
"라는 문자열을 반환합니다.x" 만약 s "라는 형식을 가지고 있습니다.x,y", 어디 둘 다 xy 숫자입니다.

y의(s : ) :
"라는 문자열을 반환합니다.y" 만약 s "라는 형식을 가지고 있습니다.x,y", 어디 둘 다 xy 숫자입니다.

llOf(s : ) :
"라는 문자열을 반환합니다.엘엑스,lly" 만약 s "라는 형식을 가지고 있습니다.엘엑스,lly,URX,ury", 어디에서 모두 엘엑스,
lly, URXury 숫자입니다.

당신의(s)
당신의(s : ) : "라는 문자열을 반환합니다.URX,ury" 만약 s 형태가있다
"엘엑스,lly,URX,ury", 어디에서 모두 엘엑스, lly, URXury 숫자입니다.

스캔프(s : , fmt : , ...) : INT
문자열을 스캔합니다 s, 다음에 따라 값을 추출합니다. 스캔프(3) 형식 fmt. 그만큼
값은 다음 주소에 저장됩니다. fmt, 다음 형식의 주소 &v,
어디에 v 올바른 유형의 선언된 변수입니다. 항목 수를 반환합니다.
성공적으로 스캔되었습니다.

분열(s : , 아아 : 정렬, 패혈증 : ) : INT

분열(s : , 아아 : 정렬) : INT

토큰(s : , 아아 : 정렬, 패혈증 : ) : INT

토큰(s : , 아아 : 정렬) : INT
XNUMXD덴탈의 분열 함수가 문자열을 끊는다 s 들판으로 들어가는 동안 토큰 기능
문자열을 토큰으로 나눕니다. 필드는 구분자가 아닌 모든 문자로 구성됩니다.
두 개의 구분 문자 사이 또는 문자열의 시작이나 끝 사이. 따라서,
field는 빈 문자열일 수 있습니다. 토큰은 비어 있지 않은 최대 부분 문자열입니다.
구분 문자가 포함되어 있습니다. 구분 기호 문자는
패혈증 논쟁. 만약에 패혈증 제공되지 않은 경우 기본값은 " \t\n"입니다. 그만큼
함수는 필드 또는 토큰 수를 반환합니다.

필드와 토큰은 인수 배열에 저장됩니다. 배열은 다음과 같아야 합니다. -
가치가 있으며, 인덱스 유형이 지정된 경우에는 다음과 같아야 합니다. INT. 항목이 색인화되었습니다.
0부터 시작하여 연속된 정수로 배열됩니다. 이미 배열에 저장된 모든 값은
덮어쓰거나 함수가 반환된 후에도 여전히 존재합니다.

I / O
인쇄(...) : 무효화
인쇄( 특급, ... ) 각 인수의 문자열 표현을 차례로 인쇄합니다.
표준 출력, 개행 문자가 이어집니다.

printf(fmt : , ...) : INT

printf(fd : INT, fmt : , ...) : INT
다음 표현식의 값 형식을 지정하여 생성된 문자열을 인쇄합니다.
fmt 에 따라 printf(3) 형식 fmt. 성공 시 0을 반환합니다. 기본적으로는
에 인쇄 표준 출력. 선택적 정수인 경우 fd 주어지면 출력이
다음과 관련된 오픈 스트림 fd.

scanf(fmt : , ...) : INT

scanf(fd : INT, fmt : , ...) : INT
다음에 따라 입력 스트림의 값을 검색합니다. scanf(3) 형식 fmt. 그만큼
값은 다음 주소에 저장됩니다. fmt, 다음 형식의 주소 &v,
어디에 v 올바른 유형의 선언된 변수입니다. 기본적으로 다음에서 읽습니다.
표준. 선택적 정수인 경우 fd 주어지면 오픈 스트림에서 입력을 읽습니다.
과 관련된 fd. 성공적으로 스캔된 항목 수를 반환합니다.

오픈F(s : , t : ) : INT
파일을 엽니다 s I/O 스트림으로. 문자열 인수 t 파일의 상태를 지정합니다.
열었습니다. 인수는 C 함수와 동일합니다. 포펜(삼). 그것은
스트림을 나타내는 정수이거나 오류가 있는 경우 -1입니다.

평소와 같이 스트림 0, 1, 2는 이미 다음과 같이 열려 있습니다. 표준, 표준 출력표준 오류,
각기. 부터 gvpr 사용할 수 있습니다 표준 입력 그래프를 읽으려면 사용자는 다음을 수행해야 합니다.
이 스트림을 사용하지 마십시오.

닫기F(fd : INT) : INT
정수로 표시된 오픈 스트림을 닫습니다. fd. 스트림 0, 1, 2는
닫은. 성공 시 0을 반환합니다.

읽다L(fd : INT) :
입력 스트림에서 읽은 다음 줄을 반환합니다. fd. 빈 문자열 ""을 반환합니다.
파일 끝에. 반환된 문자열에는 개행 문자가 남아 있습니다.

연산
특급(d : 더블) : 더블
e를 다음으로 반환합니다. d번째 힘.

기록(d : 더블) : 더블
자연 로그를 반환합니다. d.

sqrt(d : 더블) : 더블
double의 제곱근을 반환합니다. d.

(d : 더블, x : 더블) : 더블
반품 d 에 제기 x번째 힘.

코사인(d : 더블) : 더블
코사인을 반환합니다. d.

(d : 더블) : 더블
사인을 반환합니다. d.

아탄2(y : 더블, x : 더블) : 더블
아크탄젠트를 반환합니다. y / x -pi ~ pi 범위에 있습니다.

MIN(y : 더블, x : 더블) : 더블
최소값을 반환합니다. yx.

MAX(y : 더블, x : 더블) : 더블
최대값을 반환합니다. yx.

연관성 배열
# 아아 : INT
배열의 요소 수를 반환합니다. 아아.

idx in 아아 : INT
인덱스에 값이 설정된 경우 1을 반환합니다. idx 배열에서 아아. 0을 반환합니다.
그렇지 않으면.

설정 해제(v : 정렬, idx) : INT
인덱싱된 항목을 제거합니다. idx. 항목이 존재하면 1을 반환하고, 그렇지 않으면 0을 반환합니다.

설정 해제(v : 정렬) : 무효화
어레이를 다시 초기화합니다.

그 외
출구(v : INT) : 무효화
원인 gvpr 종료 코드로 종료하려면 v.

체계(cmd를 : ) : INT
표준 C 기능을 제공합니다 체계(삼). 실행한다 cmd를 사용자의 쉘에서
환경을 탐색하고 쉘의 종료 상태를 반환합니다.

랜드() : 더블
0과 1 사이의 의사 난수 double을 반환합니다.

시끄러운() : INT

시끄러운(v : INT) : INT
난수 생성기의 시드를 설정합니다. 선택적 인수는 시드를 제공합니다.
생략하면 현재 시간이 사용됩니다. 이전 시드 값이 반환됩니다.
시끄러운 호출하기 전에 호출해야 합니다. 랜드.

색상x( : , fmt : ) :
색상을 한 형식에서 다른 형식으로 변환합니다. 그만큼 인수는 색상이어야 합니다.
인식된 문자열 표현 중 하나입니다. 그만큼 fmt 값은 다음 중 하나여야 합니다.
"RGB", "RGBA", "HSV" 또는 "HSVA". 오류가 발생하면 빈 문자열이 반환됩니다.

내장 변수


gvpr 값이 자동으로 설정되는 특정 특수 내장 변수를 제공합니다.
gvpr 상황에 따라. 명시된 경우를 제외하고 사용자는 해당 값을 수정할 수 없습니다.

$ : obj_t
상황에 따라 현재 객체(노드, 에지, 그래프)를 나타냅니다. 그렇지 않다
가능 BEGIN or END 조항.

$F :
현재 입력 파일의 이름입니다.

$G : graph_t
현재 처리 중인 그래프를 나타냅니다. 다음에서는 사용할 수 없습니다. BEGIN or END
조항.

$NG : graph_t
처리할 다음 그래프를 나타냅니다. 만약에 $NG NULL, 현재 그래프 $G 이다
마지막 그래프. 입력이 stdin에서 오는 경우 마지막 그래프는
입력 파이프가 닫힐 때까지 결정됩니다. 다음 국가에서는 사용할 수 없습니다. BEGIN or END
조항 또는 -n 플래그가 사용됩니다.

$O : graph_t
출력 그래프를 나타냅니다. 그래프 순회 전에 대상으로 초기화됩니다.
그래프. 순회 후 및 기타 END_G 작업이 비어 있지 않은 그래프를 참조하는 경우,
해당 그래프는 출력 스트림에 인쇄됩니다. 다음에서만 유효합니다. N, EEND_G
조항. 출력 그래프는 사용자가 설정할 수 있습니다.

$T : graph_t
은 현재 목표 그래프를 나타냅니다. 의 하위 그래프입니다. $G 다음에서만 사용할 수 있습니다.
N, EEND_G 조항.

$tgtname :
대상 그래프의 이름을 나타냅니다. 기본적으로 다음과 같이 설정되어 있습니다. "gvpr_결과". 면
실행 중에 여러 번 사용됨 gvpr, 이름에
정수. 이 변수는 사용자가 설정할 수 있습니다.

$tvroot : node_t
(유향 또는 무방향) 깊이 우선 또는 너비에 대한 시작 노드를 나타냅니다.
그래프의 첫 번째 순회(참조. $tvtype 아래에). 기본값은 다음과 같습니다. NULL for
각 입력 그래프. 주어진 루트에서 순회 후, $tvroot
변경되면 새로운 값으로 새로운 순회가 시작됩니다. $tvroot. 또한 설정
$tvnext 아래.

$tvnext : node_t
(방향 또는 방향이 지정되지 않은) 깊이 우선에 대한 다음 시작 노드를 나타냅니다.
그래프의 너비 우선 순회(cf. $tvtype 아래에). 순회가 끝나면
그리고 $tvroot 재설정되지 않았지만 $tvnext 설정되었지만 사용되지 않았습니다.
노드는 다음에 대한 다음 선택으로 사용됩니다. $tvroot. 기본값은입니다. NULL for
각 입력 그래프.

$tvedge : edge_t
BFS 및 DFS 탐색의 경우 현재 경로에 도달하는 데 사용되는 가장자리로 설정됩니다.
노드 또는 가장자리. 순회 시작 시 또는 다른 순회 유형의 경우
가치는 NULL.

$tvtype : tvtype_t
방법을 나타냅니다 gvpr 그래프를 횡단합니다. 상수 값 중 하나만 사용할 수 있습니다.
아래에 설명된 접두사 "TV_"를 사용합니다. TV_평면 기본값입니다.

기본 그래프 라이브러리에서 c그래프(3) 무방향 그래프의 간선에는
임의의 방향. 이는 다음과 같은 순회에 사용됩니다. TV_fwd, 요구하는
방향성 가장자리.

ARGC : INT
는 다음에 의해 지정된 인수의 수를 나타냅니다. -a 인수 명령줄 인수.

ARRGV : 정렬
는 다음에 의해 지정된 인수 배열을 나타냅니다. -a 인수 명령줄 인수. 그만큼
i번째 인수는 다음과 같이 주어진다. ARGV[i].

내장 상수


다음과 같이 정의된 여러 기호 상수가 있습니다. gvpr.

NULL : obj_t
0에 해당하는 null 개체 참조입니다.

TV_평면 : tvtype_t
임의의 순서로 방문하는 그래프 객체를 사용하는 간단하고 평평한 순회입니다.

TV_네 : tvtype_t
먼저 모든 노드를 방문한 다음 모든 가장자리를 방문하는 순회입니다.

TV_en : tvtype_t
먼저 모든 가장자리를 방문한 다음 모든 노드를 방문하는 순회입니다.

TV_dfs : tvtype_t
TV_postdfs : tvtype_t
TV_prepostdfs : tvtype_t
기본 무방향에 대한 깊이 우선 검색을 사용하여 그래프 순회
그래프. 순회를 수행하려면, gvpr 의 값을 확인할 것입니다 $tvroot. 이것이 있다면
이전과 동일한 값(처음에는 이전 값이 초기화됨)
NULL.), gvpr 단순히 방문하지 않은 노드를 찾아 연결된 노드를 탐색합니다.
요소. 반면에 만약 $tvroot 변경된 경우 연결된 구성 요소는
이전에 방문한 적이 없다고 가정하고 둘러볼 수 있습니다. $tvroot is NULLWalk Through California 프로그램,
횡단이 중지됩니다. 다음을 사용하여 TV_dfs$tvroot, 생성이 가능합니다
무한 루프.

기본적으로 순회는 선주문으로 수행됩니다. 즉, 노드가 방문되기 전에
방문하지 않은 모든 가장자리. 을 위한 TV_postdfs, 노드의 방문하지 않은 모든 가장자리는
노드 이전에 방문했습니다. 을 위한 TV_prepostdfs, 노드는 이전과 이전에 두 번 방문됩니다.
방문하지 않은 모든 가장자리 후에.

TV_fwd : tvtype_t
TV_postfwd : tvtype_t
TV_prepostfwd : tvtype_t
다음 그래프에 대해 깊이 우선 탐색을 사용하여 그래프 순회
앞으로 호. 순회를 위한 루트 선택은 설명된 것과 동일합니다.
TV_dfs 위에. 에 의해 지정된 다른 방문 순서 TV_fwd, TV_postfwd
TV_prepostfwd 유사한 순회에 의해 지정된 것과 동일합니다.
TV_dfs, TV_postdfsTV_prepostdfs.

TV_rev : tvtype_t
TV_postrev : tvtype_t
TV_prepostrev : tvtype_t
다음 그래프에 대해 깊이 우선 탐색을 사용하여 그래프 순회
역 호. 순회를 위한 루트 선택은 설명된 것과 동일합니다.
TV_dfs 위에. 에 의해 지정된 다른 방문 순서 TV_rev, TV_postrev
TV_prepostrev 유사한 순회에 의해 지정된 것과 동일합니다.
TV_dfs, TV_postdfsTV_prepostdfs.

TV_bfs : tvtype_t
에지를 무시하고 그래프에서 너비 우선 탐색을 사용하여 그래프 순회
지도. 항목을 참조하세요. TV_dfs 위의 역할에 대해 $tvroot.

사용 예


gvpr -i 'N[color=="파란색"]' 파일.gv

파란색으로 모든 노드의 노드 유도 하위 그래프를 생성합니다.

gvpr -c 'N[color=="파란색"]{색상 = "빨간색"}' 파일.gv

모든 파란색 노드를 빨간색으로 만듭니다.

BEGIN { INT n, e; INT tot_n = 0; INT 운반 = 0; }
BEG_G {
n = n노드($G);
e = n가장자리($G);
printf ("%디 노드 %d 가장자리 %s\n", n, e, $G.이름);
tot_n += n;
운반 += e;
}
END { printf ("%디 노드 %d 가장자리 합계\n", tot_n, 운반) }

프로그램 버전 gc.

gvpr -c ""

에 해당 NOP.

BEG_G { graph_t g = 그래프 ("병합", "에스"); }
E {
node_t h = 클론(g,$.head);
node_t t = 클론(g,$.tail);
edge_t e = 가장자리(t,h,"");
e.중량 = e.중량 + 1;
}
END_G { $O = g; }

입력 그래프의 엄격한 버전을 생성합니다. 여기서 가장자리의 가중치 속성은
입력 그래프에서 가장자리가 나타내는 가장자리 수를 나타냅니다.

BEGIN {node_t n; INT 각도[]}
E{deg[머리]++; 도[꼬리]++; }
END_G {
for (도[n]) {
printf ("도[%s] = %NS", n.이름, 각도[n]);
}
}

모서리가 있는 노드의 각도를 계산합니다.

BEGIN {
INT i, 톱니 모양;
INT 본[문자열];
무효화 인쇄 (정수 cnt) {
for (i = 0; i < cnt; 나는 ++) printf (" ");
}
}
BEG_G {

$tvtype = TV_prepostfwd;
$tvroot = 노드($,ARGV[0]);
}
N {
if ([$.name]에서 보임) 톱니 모양--;
그렇지 않으면 {
prInd(들여쓰기);
인쇄 ($.이름);
본[$.name] = 1;
들여쓰기++;
}
}

이름이 다음과 같은 노드부터 시작하여 그래프의 깊이 우선 순회를 인쇄합니다.
ARV[0], 들여쓰기된 목록으로.

환경


GVPRPATH
다음으로 지정된 파일을 찾기 위해 검색할 디렉터리 목록을 콜론으로 구분합니다.
-f 옵션. gvpr 기본 목록이 내장되어 있습니다. GVPRPATH 정의되어 있지 않으며,
기본 목록이 사용됩니다. 만약에 GVPRPATH 콜론으로 시작하고 목록은 다음과 같이 구성됩니다.
첨부 GVPRPATH 기본 목록으로 이동합니다. 만약에 GVPRPATH 콜론으로 끝나며 목록은 다음과 같습니다.
기본 목록을 추가하여 구성됩니다. GVPRPATH. 그렇지 않으면, GVPRPATH ~에 사용됩니다.
그 목록.

Windows 시스템에서는 이전 단락의 ``콜론''을 ``세미콜론''으로 바꾸세요.

onworks.net 서비스를 사용하여 온라인으로 gvpr 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad