dart_highlight_rules.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /*
  2. THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 958518BC-799F-477A-99F9-5B28EBF230F6) */
  3. define(function(require, exports, module) {
  4. "use strict";
  5. var oop = require("../lib/oop");
  6. var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
  7. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  8. var DartHighlightRules = function() {
  9. var constantLanguage = "true|false|null";
  10. var variableLanguage = "this|super";
  11. var keywordControl = "try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await";
  12. var keywordDeclaration = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum";
  13. var storageModifier = "static|final|const";
  14. var storageType = "void|bool|num|int|double|dynamic|var|String";
  15. var keywordMapper = this.createKeywordMapper({
  16. "constant.language.dart": constantLanguage,
  17. "variable.language.dart": variableLanguage,
  18. "keyword.control.dart": keywordControl,
  19. "keyword.declaration.dart": keywordDeclaration,
  20. "storage.modifier.dart": storageModifier,
  21. "storage.type.primitive.dart": storageType
  22. }, "identifier");
  23. var stringfill = {
  24. token : "string",
  25. regex : ".+"
  26. };
  27. // regexp must not have capturing parentheses. Use (?:) instead.
  28. // regexps are ordered -> the first match is used
  29. this.$rules =
  30. {
  31. "start": [
  32. {
  33. token : "comment",
  34. regex : /\/\/.*$/
  35. },
  36. DocCommentHighlightRules.getStartRule("doc-start"),
  37. {
  38. token : "comment", // multi line comment
  39. regex : /\/\*/,
  40. next : "comment"
  41. },
  42. {
  43. token: ["meta.preprocessor.script.dart"],
  44. regex: "^(#!.*)$"
  45. },
  46. {
  47. token: "keyword.other.import.dart",
  48. regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)"
  49. },
  50. {
  51. token : ["keyword.other.import.dart", "text"],
  52. regex : "(?:\\b)(prefix)(\\s*:)"
  53. },
  54. {
  55. regex: "\\bas\\b",
  56. token: "keyword.cast.dart"
  57. },
  58. {
  59. regex: "\\?|:",
  60. token: "keyword.control.ternary.dart"
  61. },
  62. {
  63. regex: "(?:\\b)(is\\!?)(?:\\b)",
  64. token: ["keyword.operator.dart"]
  65. },
  66. {
  67. regex: "(<<|>>>?|~|\\^|\\||&)",
  68. token: ["keyword.operator.bitwise.dart"]
  69. },
  70. {
  71. regex: "((?:&|\\^|\\||<<|>>>?)=)",
  72. token: ["keyword.operator.assignment.bitwise.dart"]
  73. },
  74. {
  75. regex: "(===?|!==?|<=?|>=?)",
  76. token: ["keyword.operator.comparison.dart"]
  77. },
  78. {
  79. regex: "((?:[+*/%-]|\\~)=)",
  80. token: ["keyword.operator.assignment.arithmetic.dart"]
  81. },
  82. {
  83. regex: "=",
  84. token: "keyword.operator.assignment.dart"
  85. },
  86. {
  87. token : "string",
  88. regex : "'''",
  89. next : "qdoc"
  90. },
  91. {
  92. token : "string",
  93. regex : '"""',
  94. next : "qqdoc"
  95. },
  96. {
  97. token : "string",
  98. regex : "'",
  99. next : "qstring"
  100. },
  101. {
  102. token : "string",
  103. regex : '"',
  104. next : "qqstring"
  105. },
  106. {
  107. regex: "(\\-\\-|\\+\\+)",
  108. token: ["keyword.operator.increment-decrement.dart"]
  109. },
  110. {
  111. regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)",
  112. token: ["keyword.operator.arithmetic.dart"]
  113. },
  114. {
  115. regex: "(!|&&|\\|\\|)",
  116. token: ["keyword.operator.logical.dart"]
  117. },
  118. {
  119. token : "constant.numeric", // hex
  120. regex : "0[xX][0-9a-fA-F]+\\b"
  121. },
  122. {
  123. token : "constant.numeric", // float
  124. regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
  125. },
  126. {
  127. token : keywordMapper,
  128. regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
  129. }
  130. ],
  131. "comment" : [
  132. {
  133. token : "comment", // closing comment
  134. regex : ".*?\\*\\/",
  135. next : "start"
  136. }, {
  137. token : "comment", // comment spanning whole line
  138. regex : ".+"
  139. }
  140. ],
  141. "qdoc" : [
  142. {
  143. token : "string",
  144. regex : ".*?'''",
  145. next : "start"
  146. }, stringfill],
  147. "qqdoc" : [
  148. {
  149. token : "string",
  150. regex : '.*?"""',
  151. next : "start"
  152. }, stringfill],
  153. "qstring" : [
  154. {
  155. token : "string",
  156. regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'",
  157. next : "start"
  158. }, stringfill],
  159. "qqstring" : [
  160. {
  161. token : "string",
  162. regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
  163. next : "start"
  164. }, stringfill]
  165. }
  166. this.embedRules(DocCommentHighlightRules, "doc-",
  167. [ DocCommentHighlightRules.getEndRule("start") ]);
  168. };
  169. oop.inherits(DartHighlightRules, TextHighlightRules);
  170. exports.DartHighlightRules = DartHighlightRules;
  171. });