sgn.vim 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. " Vim syntax file
  2. " Language: SGN
  3. " Maintainer: fr33domlover <fr33domlover@riseup.net>
  4. " Last Change: 2015-03-30
  5. " Roughly based on the EBNF syntax file by Hans Fugal.
  6. " Bugs
  7. " - Multi-line rules don't work
  8. " Quit when a syntax file was already loaded
  9. if version < 600
  10. syntax clear
  11. elseif exists("b:current_syntax")
  12. finish
  13. endif
  14. syn match sgnNonTerminal /[a-zA-Z]/ skipwhite nextgroup=sgnSeparator
  15. syn match sgnSeparator "=" contained skipwhite skipempty nextgroup=sgnProduction
  16. syn match sgnProduction /.\+/ contained skipwhite skipempty contains=sgnOperator,sgnDelimiter,sgnTerminal,sgnExplanation,sgnComment,sgnRange,sgnOccurences,sgnUnicodeChar
  17. syn region sgnExplanation start=~/~ end=~/~ contained
  18. syn region sgnTerminal start=/"/ end=/"/ contained
  19. syn region sgnTerminal start=/'/ end=/'/ contained
  20. syn match sgnUnicodeChar /\\x[0-9a-fA-F]\+/ contained
  21. syn region sgnRange start=/\[/ skip=/\\\]/ end=/\]/ contained
  22. syn match sgnOperator /[|\-*+?!]/ contained
  23. syn match sgnOccurences /#[0-9]\+\(-[0-9]\+\)\?/ contained
  24. syn match sgnDelimiter /[()]/
  25. syn keyword sgnTodo TODO FIXME XXX contained
  26. syn match sgnComment /--.*/ contains=sgnTodo
  27. hi link sgnExplanation Statement
  28. hi link sgnNonTerminal Identifier
  29. hi link sgnTerminal String
  30. hi link sgnUnicodeChar SpecialChar
  31. hi link sgnRange Constant
  32. hi link sgnOperator Operator
  33. hi link sgnOccurences Number
  34. hi link sgnDelimiter Delimiter
  35. hi link sgnTodo Todo
  36. hi link sgnComment Comment