Mercurial > hg > RemoteEditor > vim7
comparison runtime/syntax/pccts.vim @ 0:76efa0be13f1
Initial revision
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 15:07:22 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76efa0be13f1 |
---|---|
1 " Vim syntax file | |
2 " Language: PCCTS | |
3 " Maintainer: Scott Bigham <dsb@killerbunnies.org> | |
4 " Last Change: 10 Aug 1999 | |
5 | |
6 " For version 5.x: Clear all syntax items | |
7 " For version 6.x: Quit when a syntax file was already loaded | |
8 if version < 600 | |
9 syntax clear | |
10 elseif exists("b:current_syntax") | |
11 finish | |
12 endif | |
13 | |
14 " Read the C++ syntax to start with | |
15 if version < 600 | |
16 syn include @cppTopLevel <sfile>:p:h/cpp.vim | |
17 else | |
18 syn include @cppTopLevel syntax/cpp.vim | |
19 endif | |
20 | |
21 syn region pcctsAction matchgroup=pcctsDelim start="<<" end=">>?\=" contains=@cppTopLevel,pcctsRuleRef | |
22 | |
23 syn region pcctsArgBlock matchgroup=pcctsDelim start="\(>\s*\)\=\[" end="\]" contains=@cppTopLevel,pcctsRuleRef | |
24 | |
25 syn region pcctsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pcctsSpecialChar | |
26 syn match pcctsSpecialChar "\\\\\|\\\"" contained | |
27 | |
28 syn region pcctsComment start="/\*" end="\*/" contains=cTodo | |
29 syn match pcctsComment "//.*$" contains=cTodo | |
30 | |
31 syn region pcctsDirective start="^\s*#header\s\+<<" end=">>" contains=pcctsAction keepend | |
32 syn match pcctsDirective "^\s*#parser\>.*$" contains=pcctsString,pcctsComment | |
33 syn match pcctsDirective "^\s*#tokdefs\>.*$" contains=pcctsString,pcctsComment | |
34 syn match pcctsDirective "^\s*#token\>.*$" contains=pcctsString,pcctsAction,pcctsTokenName,pcctsComment | |
35 syn region pcctsDirective start="^\s*#tokclass\s\+[A-Z]\i*\s\+{" end="}" contains=pcctsString,pcctsTokenName | |
36 syn match pcctsDirective "^\s*#lexclass\>.*$" contains=pcctsTokenName | |
37 syn region pcctsDirective start="^\s*#errclass\s\+[^{]\+\s\+{" end="}" contains=pcctsString,pcctsTokenName | |
38 syn match pcctsDirective "^\s*#pred\>.*$" contains=pcctsTokenName,pcctsAction | |
39 | |
40 syn cluster pcctsInRule contains=pcctsString,pcctsRuleName,pcctsTokenName,pcctsAction,pcctsArgBlock,pcctsSubRule,pcctsLabel,pcctsComment | |
41 | |
42 syn region pcctsRule start="\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\(\s*>\s*\[[^]]*\]\)\=\s*:" end=";" contains=@pcctsInRule | |
43 | |
44 syn region pcctsSubRule matchgroup=pcctsDelim start="(" end=")\(+\|\*\|?\(\s*=>\)\=\)\=" contains=@pcctsInRule contained | |
45 syn region pcctsSubRule matchgroup=pcctsDelim start="{" end="}" contains=@pcctsInRule contained | |
46 | |
47 syn match pcctsRuleName "\<[a-z]\i*\>" contained | |
48 syn match pcctsTokenName "\<[A-Z]\i*\>" contained | |
49 | |
50 syn match pcctsLabel "\<\I\i*:\I\i*" contained contains=pcctsLabelHack,pcctsRuleName,pcctsTokenName | |
51 syn match pcctsLabel "\<\I\i*:\"\([^\\]\|\\.\)*\"" contained contains=pcctsLabelHack,pcctsString | |
52 syn match pcctsLabelHack "\<\I\i*:" contained | |
53 | |
54 syn match pcctsRuleRef "\$\I\i*\>" contained | |
55 syn match pcctsRuleRef "\$\d\+\(\.\d\+\)\>" contained | |
56 | |
57 syn keyword pcctsClass class nextgroup=pcctsClassName skipwhite | |
58 syn match pcctsClassName "\<\I\i*\>" contained nextgroup=pcctsClassBlock skipwhite skipnl | |
59 syn region pcctsClassBlock start="{" end="}" contained contains=pcctsRule,pcctsComment,pcctsDirective,pcctsAction,pcctsException,pcctsExceptionHandler | |
60 | |
61 syn keyword pcctsException exception nextgroup=pcctsExceptionRuleRef skipwhite | |
62 syn match pcctsExceptionRuleRef "\[\I\i*\]" contained contains=pcctsExceptionID | |
63 syn match pcctsExceptionID "\I\i*" contained | |
64 syn keyword pcctsExceptionHandler catch default | |
65 syn keyword pcctsExceptionHandler NoViableAlt NoSemViableAlt | |
66 syn keyword pcctsExceptionHandler MismatchedToken | |
67 | |
68 syn sync clear | |
69 syn sync match pcctsSyncAction grouphere pcctsAction "<<" | |
70 syn sync match pcctsSyncAction "<<\([^>]\|>[^>]\)*>>" | |
71 syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\s*\[[^]]*\]\s*:" | |
72 syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\s*>\s*\[[^]]*\]\s*:" | |
73 | |
74 " Define the default highlighting. | |
75 " For version 5.7 and earlier: only when not done already | |
76 " For version 5.8 and later: only when an item doesn't have highlighting yet | |
77 if version >= 508 || !exists("did_pccts_syntax_inits") | |
78 if version < 508 | |
79 let did_pccts_syntax_inits = 1 | |
80 command -nargs=+ HiLink hi link <args> | |
81 else | |
82 command -nargs=+ HiLink hi def link <args> | |
83 endif | |
84 | |
85 HiLink pcctsDelim Special | |
86 HiLink pcctsTokenName Identifier | |
87 HiLink pcctsRuleName Statement | |
88 HiLink pcctsLabelHack Label | |
89 HiLink pcctsDirective PreProc | |
90 HiLink pcctsString String | |
91 HiLink pcctsComment Comment | |
92 HiLink pcctsClass Statement | |
93 HiLink pcctsClassName Identifier | |
94 HiLink pcctsException Statement | |
95 HiLink pcctsExceptionHandler Keyword | |
96 HiLink pcctsExceptionRuleRef pcctsDelim | |
97 HiLink pcctsExceptionID Identifier | |
98 HiLink pcctsRuleRef Identifier | |
99 HiLink pcctsSpecialChar SpecialChar | |
100 | |
101 delcommand HiLink | |
102 endif | |
103 | |
104 let b:current_syntax = "pccts" | |
105 | |
106 " vim: ts=8 |