"Fossies" - the Fresh Open Source Software Archive

Member "vim-8.2.1354/runtime/syntax/yacc.vim" (2 Aug 2020, 5656 Bytes) of package /linux/misc/vim-8.2.1354.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) vimscript source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 " Vim syntax file
    2 " Language: Yacc
    3 " Maintainer:   Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
    4 " Last Change:  Mar 25, 2019
    5 " Version:  17
    6 " URL:  http://www.drchip.org/astronaut/vim/index.html#SYNTAX_YACC
    7 "
    8 " Options: {{{1
    9 "   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
   10 
   11 " ---------------------------------------------------------------------
   12 " this version of syntax/yacc.vim requires 6.0 or later
   13 if exists("b:current_syntax")
   14  syntax clear
   15 endif
   16 
   17 " ---------------------------------------------------------------------
   18 "  Folding Support {{{1
   19 if has("folding")
   20  com! -nargs=+ SynFold  <args> fold
   21 else
   22  com! -nargs=+ SynFold  <args>
   23 endif
   24 
   25 " ---------------------------------------------------------------------
   26 " Read the C syntax to start with {{{1
   27 " Read the C/C++ syntax to start with
   28 let s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:yacc_uses_cpp")? "/cpp.vim" : "/c.vim"))
   29 if !filereadable(s:Cpath)
   30  for s:Cpath in split(globpath(&rtp,(exists("g:yacc_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n")
   31   if filereadable(fnameescape(s:Cpath))
   32    let s:Cpath= fnameescape(s:Cpath)
   33    break
   34   endif
   35  endfor
   36 endif
   37 exe "syn include @yaccCode ".s:Cpath
   38 
   39 " ---------------------------------------------------------------------
   40 "  Yacc Clusters: {{{1
   41 syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption
   42 syn cluster yaccRulesCluster    contains=yaccNonterminal,yaccString,yaccComment
   43 
   44 " ---------------------------------------------------------------------
   45 "  Yacc Sections: {{{1
   46 SynFold syn region  yaccInit    start='.'ms=s-1,rs=s-1  matchgroup=yaccSectionSep       end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2  contains=@yaccInitCluster   nextgroup=yaccRules skipwhite skipempty contained
   47 SynFold syn region  yaccInit2      start='\%^.'ms=s-1,rs=s-1    matchgroup=yaccSectionSep       end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2  contains=@yaccInitCluster   nextgroup=yaccRules skipwhite skipempty
   48 SynFold syn region  yaccHeader2 matchgroup=yaccSep  start="^\s*\zs%{"       end="^\s*%}"            contains=@yaccCode  nextgroup=yaccInit  skipwhite skipempty contained
   49 SynFold syn region  yaccHeader  matchgroup=yaccSep  start="^\s*\zs%{"       end="^\s*%}"            contains=@yaccCode  nextgroup=yaccInit  skipwhite skipempty
   50 SynFold syn region  yaccRules   matchgroup=yaccSectionSep   start='^%%\ze\(\s*/[*/].*\)\=$' end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2  contains=@yaccRulesCluster  nextgroup=yaccEndCode   skipwhite skipempty contained
   51 SynFold syn region  yaccEndCode matchgroup=yaccSectionSep   start='^%%\ze\(\s*/[*/].*\)\=$' end='\%$'           contains=@yaccCode  contained
   52 
   53 " ---------------------------------------------------------------------
   54 " Yacc Commands: {{{1
   55 syn match   yaccDefines '^%define\s\+.*$'
   56 syn match   yaccParseParam  '%\(parse\|lex\)-param\>'       skipwhite   nextgroup=yaccParseParamStr
   57 syn match   yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>'
   58 syn region  yaccParseParamStr   contained matchgroup=Delimiter  start='{'   end='}' contains=cStructure
   59 
   60 syn match   yaccDelim   "[:|]"  contained
   61 syn match   yaccOper    "@\d\+" contained
   62 
   63 syn match   yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"   contained
   64 syn match   yaccKey "\s%\(prec\|expect\)\>" contained
   65 syn match   yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained
   66 syn keyword yaccKeyActn yyerrok yyclearin   contained
   67 
   68 syn match   yaccUnionStart  "^%union"   skipwhite skipnl nextgroup=yaccUnion    contained
   69 SynFold syn region  yaccUnion   matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode  contained
   70 syn match   yaccBrkt    "[<>]"  contained
   71 syn match   yaccType    "<[a-zA-Z_][a-zA-Z0-9_]*>"  contains=yaccBrkt   contained
   72 
   73 SynFold syn region  yaccNonterminal start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:"    matchgroup=yaccDelim end=";"    matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment  contained
   74 syn region  yaccComment start="/\*" end="\*/"
   75 syn region  yaccComment start="//"  end="$"
   76 syn match   yaccString  "'[^']*'"   contained
   77 
   78 
   79 " ---------------------------------------------------------------------
   80 " I'd really like to highlight just the outer {}.  Any suggestions??? {{{1
   81 syn match   yaccCurlyError  "[{}]"
   82 SynFold syn region  yaccAction  matchgroup=yaccCurly start="{" end="}"  contains=@yaccCode,yaccVar      contained
   83 syn match   yaccVar '\$\d\+\|\$\$\|\$<\I\i*>\$\|\$<\I\i*>\d\+'  containedin=cParen,cPreProc,cMulti  contained
   84 
   85 " ---------------------------------------------------------------------
   86 " Yacc synchronization: {{{1
   87 syn sync fromstart
   88 
   89 " ---------------------------------------------------------------------
   90 " Define the default highlighting. {{{1
   91 if !exists("skip_yacc_syn_inits")
   92   hi def link yaccBrkt  yaccStmt
   93   hi def link yaccComment   Comment
   94   hi def link yaccCurly Delimiter
   95   hi def link yaccCurlyError    Error
   96   hi def link yaccDefines   cDefine
   97   hi def link yaccDelim Delimiter
   98   hi def link yaccKeyActn   Special
   99   hi def link yaccKey   yaccStmt
  100   hi def link yaccNonterminal   Function
  101   hi def link yaccOper  yaccStmt
  102   hi def link yaccParseOption   cDefine
  103   hi def link yaccParseParam    yaccParseOption
  104   hi def link yaccSectionSep    Todo
  105   hi def link yaccSep   Delimiter
  106   hi def link yaccStmt  Statement
  107   hi def link yaccString    String
  108   hi def link yaccType  Type
  109   hi def link yaccUnionStart    yaccKey
  110   hi def link yaccVar   Special
  111 endif
  112 
  113 " ---------------------------------------------------------------------
  114 "  Cleanup: {{{1
  115 delcommand SynFold
  116 let b:current_syntax = "yacc"
  117 
  118 " ---------------------------------------------------------------------
  119 "  Modelines: {{{1
  120 " vim: ts=15 fdm=marker