xref: /vim-8.2.3635/runtime/syntax/pccts.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	PCCTS
33fdfa4a9SBram Moolenaar" Maintainer:	Scott Bigham <[email protected]>
4071d4279SBram Moolenaar" Last Change:	10 Aug 1999
5071d4279SBram Moolenaar
689bcfda6SBram Moolenaar" quit when a syntax file was already loaded
789bcfda6SBram Moolenaarif exists("b:current_syntax")
8071d4279SBram Moolenaar  finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" Read the C++ syntax to start with
12071d4279SBram Moolenaarsyn include @cppTopLevel syntax/cpp.vim
13071d4279SBram Moolenaar
14071d4279SBram Moolenaarsyn region pcctsAction matchgroup=pcctsDelim start="<<" end=">>?\=" contains=@cppTopLevel,pcctsRuleRef
15071d4279SBram Moolenaar
16071d4279SBram Moolenaarsyn region pcctsArgBlock matchgroup=pcctsDelim start="\(>\s*\)\=\[" end="\]" contains=@cppTopLevel,pcctsRuleRef
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsyn region pcctsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pcctsSpecialChar
19071d4279SBram Moolenaarsyn match  pcctsSpecialChar "\\\\\|\\\"" contained
20071d4279SBram Moolenaar
21071d4279SBram Moolenaarsyn region pcctsComment start="/\*" end="\*/" contains=cTodo
22071d4279SBram Moolenaarsyn match  pcctsComment "//.*$" contains=cTodo
23071d4279SBram Moolenaar
24071d4279SBram Moolenaarsyn region pcctsDirective start="^\s*#header\s\+<<" end=">>" contains=pcctsAction keepend
25071d4279SBram Moolenaarsyn match  pcctsDirective "^\s*#parser\>.*$" contains=pcctsString,pcctsComment
26071d4279SBram Moolenaarsyn match  pcctsDirective "^\s*#tokdefs\>.*$" contains=pcctsString,pcctsComment
27071d4279SBram Moolenaarsyn match  pcctsDirective "^\s*#token\>.*$" contains=pcctsString,pcctsAction,pcctsTokenName,pcctsComment
28071d4279SBram Moolenaarsyn region pcctsDirective start="^\s*#tokclass\s\+[A-Z]\i*\s\+{" end="}" contains=pcctsString,pcctsTokenName
29071d4279SBram Moolenaarsyn match  pcctsDirective "^\s*#lexclass\>.*$" contains=pcctsTokenName
30071d4279SBram Moolenaarsyn region pcctsDirective start="^\s*#errclass\s\+[^{]\+\s\+{" end="}" contains=pcctsString,pcctsTokenName
31071d4279SBram Moolenaarsyn match pcctsDirective "^\s*#pred\>.*$" contains=pcctsTokenName,pcctsAction
32071d4279SBram Moolenaar
33071d4279SBram Moolenaarsyn cluster pcctsInRule contains=pcctsString,pcctsRuleName,pcctsTokenName,pcctsAction,pcctsArgBlock,pcctsSubRule,pcctsLabel,pcctsComment
34071d4279SBram Moolenaar
35071d4279SBram Moolenaarsyn region pcctsRule start="\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\(\s*>\s*\[[^]]*\]\)\=\s*:" end=";" contains=@pcctsInRule
36071d4279SBram Moolenaar
37071d4279SBram Moolenaarsyn region pcctsSubRule matchgroup=pcctsDelim start="(" end=")\(+\|\*\|?\(\s*=>\)\=\)\=" contains=@pcctsInRule contained
38071d4279SBram Moolenaarsyn region pcctsSubRule matchgroup=pcctsDelim start="{" end="}" contains=@pcctsInRule contained
39071d4279SBram Moolenaar
40071d4279SBram Moolenaarsyn match pcctsRuleName  "\<[a-z]\i*\>" contained
41071d4279SBram Moolenaarsyn match pcctsTokenName "\<[A-Z]\i*\>" contained
42071d4279SBram Moolenaar
43071d4279SBram Moolenaarsyn match pcctsLabel "\<\I\i*:\I\i*" contained contains=pcctsLabelHack,pcctsRuleName,pcctsTokenName
44071d4279SBram Moolenaarsyn match pcctsLabel "\<\I\i*:\"\([^\\]\|\\.\)*\"" contained contains=pcctsLabelHack,pcctsString
45071d4279SBram Moolenaarsyn match pcctsLabelHack "\<\I\i*:" contained
46071d4279SBram Moolenaar
47071d4279SBram Moolenaarsyn match pcctsRuleRef "\$\I\i*\>" contained
48071d4279SBram Moolenaarsyn match pcctsRuleRef "\$\d\+\(\.\d\+\)\>" contained
49071d4279SBram Moolenaar
50071d4279SBram Moolenaarsyn keyword pcctsClass     class   nextgroup=pcctsClassName skipwhite
51071d4279SBram Moolenaarsyn match   pcctsClassName "\<\I\i*\>" contained nextgroup=pcctsClassBlock skipwhite skipnl
52071d4279SBram Moolenaarsyn region pcctsClassBlock start="{" end="}" contained contains=pcctsRule,pcctsComment,pcctsDirective,pcctsAction,pcctsException,pcctsExceptionHandler
53071d4279SBram Moolenaar
54071d4279SBram Moolenaarsyn keyword pcctsException exception nextgroup=pcctsExceptionRuleRef skipwhite
55071d4279SBram Moolenaarsyn match pcctsExceptionRuleRef "\[\I\i*\]" contained contains=pcctsExceptionID
56071d4279SBram Moolenaarsyn match pcctsExceptionID "\I\i*" contained
57071d4279SBram Moolenaarsyn keyword pcctsExceptionHandler	catch default
58071d4279SBram Moolenaarsyn keyword pcctsExceptionHandler	NoViableAlt NoSemViableAlt
59071d4279SBram Moolenaarsyn keyword pcctsExceptionHandler	MismatchedToken
60071d4279SBram Moolenaar
61071d4279SBram Moolenaarsyn sync clear
62071d4279SBram Moolenaarsyn sync match pcctsSyncAction grouphere pcctsAction "<<"
63071d4279SBram Moolenaarsyn sync match pcctsSyncAction "<<\([^>]\|>[^>]\)*>>"
64071d4279SBram Moolenaarsyn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\s*\[[^]]*\]\s*:"
65071d4279SBram Moolenaarsyn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\s*>\s*\[[^]]*\]\s*:"
66071d4279SBram Moolenaar
67071d4279SBram Moolenaar" Define the default highlighting.
6889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
69071d4279SBram Moolenaar
70*f37506f6SBram Moolenaarhi def link pcctsDelim		Special
71*f37506f6SBram Moolenaarhi def link pcctsTokenName		Identifier
72*f37506f6SBram Moolenaarhi def link pcctsRuleName		Statement
73*f37506f6SBram Moolenaarhi def link pcctsLabelHack		Label
74*f37506f6SBram Moolenaarhi def link pcctsDirective		PreProc
75*f37506f6SBram Moolenaarhi def link pcctsString		String
76*f37506f6SBram Moolenaarhi def link pcctsComment		Comment
77*f37506f6SBram Moolenaarhi def link pcctsClass		Statement
78*f37506f6SBram Moolenaarhi def link pcctsClassName		Identifier
79*f37506f6SBram Moolenaarhi def link pcctsException		Statement
80*f37506f6SBram Moolenaarhi def link pcctsExceptionHandler	Keyword
81*f37506f6SBram Moolenaarhi def link pcctsExceptionRuleRef	pcctsDelim
82*f37506f6SBram Moolenaarhi def link pcctsExceptionID	Identifier
83*f37506f6SBram Moolenaarhi def link pcctsRuleRef		Identifier
84*f37506f6SBram Moolenaarhi def link pcctsSpecialChar	SpecialChar
85071d4279SBram Moolenaar
86071d4279SBram Moolenaar
87071d4279SBram Moolenaarlet b:current_syntax = "pccts"
88071d4279SBram Moolenaar
89071d4279SBram Moolenaar" vim: ts=8
90