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