carbon.vim 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. " Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. " Exceptions. See /LICENSE for license information.
  3. " SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. if exists("b:current_syntax")
  5. finish
  6. endif
  7. syn match carbonIdentifier '[a-zA-Z0-9_]\+' contained
  8. syn match carbonNominalType '[a-zA-Z0-9_]\+' contained
  9. syn match carbonComment "//.*$" contains=carbonTodo,carbonPreprocess
  10. syn keyword carbonTodo TODO contained
  11. syn keyword carbonPreprocess RUN AUTOUPDATE CHECK contained
  12. " carbon primitive types and literals
  13. syn keyword carbonBooleanType bool
  14. syn match carbonIntType 'i\d\+'
  15. syn match carbonUnsignedIntType 'u\d\+'
  16. syn match carbonFloatType 'f\d\+'
  17. syn keyword carbonStringType String
  18. syn keyword carbonBoolean true false
  19. syn match carbonNumber '\<[0-9][_0-9]*\(\.[_0-9]\+\(e[-+]\?[1-9][0-9]*\)\?\)\?\>'
  20. syn match carbonHexLiteral '\<0x[_0-9A-F]\+\(\.[_0-9A-F]\+\(p[+-]\?[1-9][0-9]*\)\?\)\?\>'
  21. syn match carbonBinLiteral '\<0b[_01]\+\>'
  22. syn region carbonStringLiteral start=+"+ end=+"+ skip=+\\"+
  23. syn region carbonBlockStringLiteral start=+"""+ end=+"""+ skip=+\\"""+
  24. " carbon declaration introducers
  25. syn keyword carbonNamespaceDeclaration namespace
  26. syn keyword carbonVariableDeclaration var nextgroup=carbonIdentifier skipwhite
  27. syn keyword carbonVariableDeclarationMod returned
  28. syn keyword carbonConstantDeclaration let nextgroup=carbonIdentifier skipwhite
  29. syn keyword carbonFunctionDeclaration fn
  30. syn keyword carbonClassDeclaration class nextgroup=carbonNominalType skipwhite
  31. syn keyword carbonClassDeclarationMod base abstract final
  32. syn keyword carbonClassMethodDeclaration fn destructor
  33. syn keyword carbonClassMethodDeclarationMod private virtual abstract protected impl
  34. syn keyword carbonAliasDeclaration alias nextgroup=carbonNominalType skipwhite
  35. syn keyword carbonInterfaceDeclaration interface nextgroup=carbonNominalType skipwhite
  36. syn keyword carbonChoiceDeclaration choice nextgroup=carbonNominalType skipwhite
  37. syn keyword carbonPackageDeclaration package nextgroup=carbonIdentifier skipwhite
  38. syn keyword carbonLibraryDeclaration library nextgroup=carbonStringLiteral skipwhite
  39. " carbon control flow
  40. syn keyword carbonConditional if then else
  41. syn keyword carbonLoop while for in
  42. syn keyword carbonSwitch match case default
  43. syn keyword carbonControlFlowStatement break continue return
  44. " carbon operators
  45. syn keyword carbonLogicalOperator and or not
  46. " handle any other keywords
  47. syn keyword carbonKeywordExtends extends nextgroup=carbonNominalType skipwhite
  48. syn keyword carbonKeywordSelf Self
  49. syn keyword carbonKeywordAs as
  50. syn keyword carbonKeywordTemplate template
  51. syn keyword carbonKeywordExternal external
  52. syn keyword carbonKeywordForAll forall
  53. syn keyword carbonKeywordAPI api
  54. syn keyword carbonKeywordImport import nextgroup=carbonIdentifier skipwhite
  55. hi def link carbonIdentifier Identifier
  56. hi def link carbonNominalType Type
  57. hi def link carbonComment Comment
  58. hi def link carbonTodo Todo
  59. hi def link carbonPreprocess PreProc
  60. hi def link carbonBooleanType carbonType
  61. hi def link carbonIntType carbonType
  62. hi def link carbonUnsignedIntType carbonType
  63. hi def link carbonFloatType carbonType
  64. hi def link carbonStringType carbonType
  65. hi def link carbonType Type
  66. hi def link carbonBoolean Boolean
  67. hi def link carbonHexLiteral carbonNumber
  68. hi def link carbonBinLiteral carbonNumber
  69. hi def link carbonNumber Number
  70. hi def link carbonStringLiteral carbonString
  71. hi def link carbonBlockStringLiteral carbonString
  72. hi def link carbonString String
  73. hi def link carbonNamespaceDeclaration carbonDeclaration
  74. hi def link carbonVariableDeclaration carbonDeclaration
  75. hi def link carbonVariableDeclarationMod carbonDeclaration
  76. hi def link carbonConstantDeclaration carbonDeclaration
  77. hi def link carbonFunctionDeclaration carbonDeclaration
  78. hi def link carbonClassDeclaration carbonDeclaration
  79. hi def link carbonClassDeclarationMod carbonDeclaration
  80. hi def link carbonClassMethodDeclaration carbonDeclaration
  81. hi def link carbonClassMethodDeclarationMod carbonDeclaration
  82. hi def link carbonAliasDeclaration carbonDeclaration
  83. hi def link carbonInterfaceDeclaration carbonDeclaration
  84. hi def link carbonChoiceDeclaration carbonDeclaration
  85. hi def link carbonPackageDeclaration Include
  86. hi def link carbonLibraryDeclaration Include
  87. hi def link carbonDeclaration Structure
  88. hi def link carbonKeywordExtends carbonKeyword
  89. hi def link carbonKeywordSelf carbonKeyword
  90. hi def link carbonKeywordAs carbonKeyword
  91. hi def link carbonKeywordTemplate carbonKeyword
  92. hi def link carbonKeywordExternal carbonKeyword
  93. hi def link carbonKeywordForAll carbonKeyword
  94. hi def link carbonKeywordAPI Structure
  95. hi def link carbonKeywordImport Include
  96. hi def link carbonKeyword Keyword
  97. hi def link carbonConditional Conditional
  98. hi def link carbonLoop Repeat
  99. hi def link carbonSwitch Repeat
  100. hi def link carbonControlFlowStatement Statement
  101. hi def link carbonLogicalOperator carbonOperator
  102. hi def link carbonOperator Operator
  103. let b:current_syntax = "carbon"