Carbon.plist 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!--
  3. Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  4. Exceptions. See /LICENSE for license information.
  5. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. -->
  7. <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
  8. "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  9. <plist version="1.0">
  10. <dict>
  11. <!-- Section metadata -->
  12. <key>name</key>
  13. <string>carbon</string>
  14. <key>uuid</key>
  15. <string>04F7F7E3-D5EE-40A4-9899-53CD34D28276</string>
  16. <key>scopeName</key>
  17. <string>source.carbon</string>
  18. <key>fileTypes</key>
  19. <array>
  20. <string>carbon</string>
  21. </array>
  22. <!-- Folding markers -->
  23. <key>foldingStartMarker</key>
  24. <string>\{\s*$</string>
  25. <key>foldingStopMarker</key>
  26. <string>^\s*\}</string>
  27. <!-- Active patterns from repository -->
  28. <key>patterns</key>
  29. <array>
  30. <!-- Rule: comments -->
  31. <dict>
  32. <key>begin</key>
  33. <string>(^[ \t]+)?(?=//)</string>
  34. <key>end</key>
  35. <string>(?!\G)</string>
  36. <key>patterns</key>
  37. <array>
  38. <dict>
  39. <key>name</key>
  40. <string>comment.line.carbon</string>
  41. <key>begin</key>
  42. <string>//</string>
  43. <key>end</key>
  44. <string>$</string>
  45. </dict>
  46. </array>
  47. </dict>
  48. <!-- Rule: control flow keywords -->
  49. <dict>
  50. <key>name</key>
  51. <string>keyword.control.carbon</string>
  52. <key>match</key>
  53. <string>\b(break|case|continue|default|else|if|for|match|return|returned|then|while)\b</string>
  54. </dict>
  55. <!-- Rule: other keywords -->
  56. <dict>
  57. <key>name</key>
  58. <string>keyword.other.carbon</string>
  59. <key>match</key>
  60. <string>\b(abstract|adapt|addr|alias|and|api|as|auto|base|choice|class|constraint|destructor|extend|final|fn|forall|friend|impl|impls|import|in|interface|let|library|like|namespace|not|observe|or|override|package|partial|private|protected|require|Self|template|type|var|virtual|where|_)\b</string>
  61. </dict>
  62. <!-- Rule: builtin types -->
  63. <dict>
  64. <key>name</key>
  65. <string>storage.type.carbon</string>
  66. <key>match</key>
  67. <string>\b(As|bool|Carbon\.Int|Carbon\.UInt|f16|f32|f64|f128|i8|i16|i32|i64|i128|i256|Slice|String|StringView|type|u8|u16|u32|u64|u128|u256)\b</string>
  68. </dict>
  69. <!-- Rule: boolean literals - has keyword coloring -->
  70. <dict>
  71. <key>name</key>
  72. <string>keyword.other.carbon</string>
  73. <key>match</key>
  74. <string>\b(true|false)\b</string>
  75. </dict>
  76. <!-- Rule: block string literals -->
  77. <dict>
  78. <key>name</key>
  79. <string>string.quoted.triple.carbon</string>
  80. <key>begin</key>
  81. <string>'''([^\s'#]*\n)?</string>
  82. <key>end</key>
  83. <string>'''</string>
  84. <key>beginCaptures</key>
  85. <dict>
  86. <key>1</key>
  87. <dict>
  88. <key>name</key>
  89. <string>constant.character.escape.carbon</string>
  90. </dict>
  91. </dict>
  92. <key>patterns</key>
  93. <array>
  94. <dict>
  95. <key>include</key>
  96. <string>#string_escapes</string>
  97. </dict>
  98. </array>
  99. </dict>
  100. <!-- Rule: basic string literals -->
  101. <dict>
  102. <key>name</key>
  103. <string>string.quoted.double.carbon</string>
  104. <key>begin</key>
  105. <string>"</string>
  106. <key>end</key>
  107. <string>"</string>
  108. <key>patterns</key>
  109. <array>
  110. <dict>
  111. <key>include</key>
  112. <string>#string_escapes</string>
  113. </dict>
  114. </array>
  115. </dict>
  116. <!-- Rule: hexadecimal number literals -->
  117. <dict>
  118. <key>name</key>
  119. <string>constant.numeric.carbon</string>
  120. <key>match</key>
  121. <string>0x[_0-9A-F]+(\.[_0-9A-F]+(p[-+]?[1-9][0-9]*)?)?</string>
  122. </dict>
  123. <!-- Rule: binary number literals -->
  124. <dict>
  125. <key>name</key>
  126. <string>constant.numeric.carbon</string>
  127. <key>match</key>
  128. <string>0b[_01]+</string>
  129. </dict>
  130. <!-- Rule: decimal number literals -->
  131. <dict>
  132. <key>name</key>
  133. <string>constant.numeric.carbon</string>
  134. <key>match</key>
  135. <string>[1-9][_0-9]*(\.[_0-9]+(e[-+]?[1-9][0-9]*)?)?</string>
  136. </dict>
  137. </array>
  138. <!-- Rule repository -->
  139. <key>repository</key>
  140. <dict>
  141. <!-- Rule: string escape sequences -->
  142. <key>string_escapes</key>
  143. <dict>
  144. <key>name</key>
  145. <string>constant.character.escape.carbon</string>
  146. <key>match</key>
  147. <string>\\([tnr'"0\0]|x[0-9A-F]{2}|u\{[0-9A-F]{4,}\})</string>
  148. </dict>
  149. </dict>
  150. </dict>
  151. </plist>