VGRINDEFS(5)

명칭
vgrindefs - vgrind(1) (을)를 위한 언어 정의 데이타베이스

서식
vgrindefs

해설
vgrindefs 파일은 vgrind(1) 하지만 이용하는 모든 언어 정의를 포함하고 있습니다. 이 데이타베이스는 termcap(5) 에 매우 자주(잘) 유사하고 있습니다.

필드
이하의 겉(표)는, 각 필드의 명칭과 의미를 해설하고 있습니다.

명칭형 해설
ab | 캐릭터 라인 대체 코멘트의 시작을 나타내는 정규 표현
ae | 캐릭터 라인 대체 코멘트의 끝을 나타내는 정규 표현
pb | 캐릭터 라인 수속의 시작을 나타내는 정규 표현
bb | 캐릭터 라인 자구적 블록의 시작을 나타내는 정규 표현
be | 캐릭터 라인 자구적 블록의 끝을 나타내는 정규 표현
cb | 캐릭터 라인 코멘트의 시작을 나타내는 정규 표현
ce | 캐릭터 라인 코멘트의 끝을 나타내는 정규 표현
sb | 캐릭터 라인 캐릭터 라인의 시작을 나타내는 정규 표현
se | 캐릭터 라인 캐릭터 라인의 끝을 나타내는 정규 표현
lb | 캐릭터 라인 캐릭터 라인 정수의 시작을 나타내는 정규 표현
le | 캐릭터 라인 캐릭터 라인 정수의 끝을 나타내는 정규 표현
nc | 캐릭터 라인비코멘트를 나타내는 정규 표현 (아래와 같이 참조)
tl | bool | 지정했을 경우, 자구상의 톱 레벨 이외에서는 수속이 정의되지 않는 것을 의미한다
oc | bool | 지정했을 경우, 대문자와 소문자가 등가인 것을 의미한다
kw | 캐릭터 라인 스페이스에서 단락지어진 키워드의 리스트

비코멘트는, 통상은 코멘트의 시작을 나타내는 순차 순서가 그 특수한 의미를 잃는 것 같은 특별한 상황을 기술하는데 필요합니다. 이 전형적인 실례는, Perl 에 두어, 통상 코멘트를 ‘#’ 그리고 시작하는데 대해, 캐릭터 라인 ‘$#’ 하지만 배열에 대한 오퍼레이터인 예에 볼 수가 있습니다.

사용예
이하의 엔트리는 C 언어를 기술하는 것으로, 언어 엔트리의 전형예입니다.

    C|c::pb=^\d? *? \d? \p\d? \(\a? \) :bb={:be=}:cb=/*:ce=*/:sb=":se=\e":\
    :lb=':le=\e':tl:\
    :kw=asm auto break case char continue default do double else enum\
    extern float for fortran goto if int long register return short\
    sizeof static struct switch typedef union unsigned while #define\
    #else #endif #if #ifdef #ifndef #include #undef # define else endif\
    if ifdef ifndef include undef:

최초의 필드는 단지 언어명 (와 그 모든 변종)을 나타내는 것에 지나지 않는 것에 주의해 주세요. 이 경우, C언어는 "c" 나 "C" 라는 이름으로 vgrind(1) (으)로 지정할 수가 있습니다.

행의 마지막 캐릭터로서 \ 를 주는 것으로, 엔트리는 복수행에 이을 수가 있습니다. vgrindefs 의 케이파비리티는 2 개의 형태로 나누어집니다. 즉, 언어에 특정의 기능이 갖춰지고 있는 것을 나타내는 불형의 케이파비리티와 정규 표현 또는 키워드의 리스트를 나타내는 캐릭터 라인의 케이파비리티입니다.

정규 표현
vgrindefs 하 ex(1) (이)나 lex(1) 의 정규 표현에 매우 잘 닮은 것을 이용합니다. 캐릭터 `^', `$', `:' 및 `\' (은)는 예약된 캐릭터이므로, 이것들이 통상의 캐릭터로서 포함되는 경우는 ‘\’ (을)를 직전에 두는 것에 의해 "쿼트" 하지 않으면 안됩니다. 메타신볼과 그러한 의미는, 이하대로입니다.

$   줄 끝

^   줄머리

\d  딜리미터 (스페이스, 탭, 개행, 행의 시작)

\a  심볼로부터 되는 모든 캐릭터 라인에 매치 한다 (lex 에서의 . * (와)과 같다)

\p  모든 영숫자로부터 되는 이름에 매치 한다. 수속 정의의 내부 (pb)에서는 이 심볼에 매치 하는 캐릭터 라인이 수속의 이름으로서 이용됩니다.

()  그룹화

|   선택

?   직전의 항목이 생략 가능하다

\e  캐릭터 라인의 전에 두는 것으로, 그 캐릭터 라인과 선두가 이스케이프 캐릭터 (\)인 입력 캐릭터 라인과는 매치 하지 않게 됩니다. 캐릭터 라인 딜리미터를 이스케이프 하는 것으로써 캐릭터 라인중에 포함하는 것이 가능한 (C 와 같은) 언어로 사용되는 것이, 전형적인 사용법입니다.

그 외의 시스템내의 정규 표현과 달리, 이것들은 캐릭터 단위는 아니고 단어 단위로 매치 합니다. 그러니까, "(tramp|steamer) flies? " (와)과 같은 경우는 "tramp", "steamer", "trampflies", 또는 "steamerflies" 에 매치 합니다.

키워드 리스트
키워드 리스트는 언어에 있어서의 키워드를 스페이스에서 단락지어 단순하게 열거한 것입니다. 만약 "oc" 불리언 값 플래그가 지정되어 있으면, 이것은 대문자와 소문자가 등가인 것을 나타내므로, 모든 키워드는 소문자로 지정해야 합니다.

관련 파일
/usr/share/misc/vgrindefs
    단말 기술을 포함한 파일

관련 항목
troff(1), vgrind(1)

역사
vgrindefs 파일 포맷은 4.2BSD 그리고 등장했습니다.