dts.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. Language: Device Tree
  3. Description: *.dts files used in the Linux kernel
  4. Author: Martin Braun <[email protected]>, Moritz Fischer <[email protected]>
  5. Category: config
  6. */
  7. function(hljs) {
  8. var STRINGS = {
  9. className: 'string',
  10. variants: [
  11. hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?"' }),
  12. {
  13. begin: '(u8?|U)?R"', end: '"',
  14. contains: [hljs.BACKSLASH_ESCAPE]
  15. },
  16. {
  17. begin: '\'\\\\?.', end: '\'',
  18. illegal: '.'
  19. }
  20. ]
  21. };
  22. var NUMBERS = {
  23. className: 'number',
  24. variants: [
  25. { begin: '\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)' },
  26. { begin: hljs.C_NUMBER_RE }
  27. ],
  28. relevance: 0
  29. };
  30. var PREPROCESSOR = {
  31. className: 'meta',
  32. begin: '#', end: '$',
  33. keywords: {'meta-keyword': 'if else elif endif define undef ifdef ifndef'},
  34. contains: [
  35. {
  36. begin: /\\\n/, relevance: 0
  37. },
  38. {
  39. beginKeywords: 'include', end: '$',
  40. keywords: {'meta-keyword': 'include'},
  41. contains: [
  42. hljs.inherit(STRINGS, {className: 'meta-string'}),
  43. {
  44. className: 'meta-string',
  45. begin: '<', end: '>',
  46. illegal: '\\n'
  47. }
  48. ]
  49. },
  50. STRINGS,
  51. hljs.C_LINE_COMMENT_MODE,
  52. hljs.C_BLOCK_COMMENT_MODE
  53. ]
  54. };
  55. var DTS_REFERENCE = {
  56. className: 'variable',
  57. begin: '\\&[a-z\\d_]*\\b'
  58. };
  59. var DTS_KEYWORD = {
  60. className: 'meta-keyword',
  61. begin: '/[a-z][a-z\\d-]*/'
  62. };
  63. var DTS_LABEL = {
  64. className: 'symbol',
  65. begin: '^\\s*[a-zA-Z_][a-zA-Z\\d_]*:'
  66. };
  67. var DTS_CELL_PROPERTY = {
  68. className: 'params',
  69. begin: '<',
  70. end: '>',
  71. contains: [
  72. NUMBERS,
  73. DTS_REFERENCE
  74. ]
  75. };
  76. var DTS_NODE = {
  77. className: 'class',
  78. begin: /[a-zA-Z_][a-zA-Z\d_@]*\s{/,
  79. end: /[{;=]/,
  80. returnBegin: true,
  81. excludeEnd: true
  82. };
  83. var DTS_ROOT_NODE = {
  84. className: 'class',
  85. begin: '/\\s*{',
  86. end: '};',
  87. relevance: 10,
  88. contains: [
  89. DTS_REFERENCE,
  90. DTS_KEYWORD,
  91. DTS_LABEL,
  92. DTS_NODE,
  93. DTS_CELL_PROPERTY,
  94. hljs.C_LINE_COMMENT_MODE,
  95. hljs.C_BLOCK_COMMENT_MODE,
  96. NUMBERS,
  97. STRINGS
  98. ]
  99. };
  100. return {
  101. keywords: "",
  102. contains: [
  103. DTS_ROOT_NODE,
  104. DTS_REFERENCE,
  105. DTS_KEYWORD,
  106. DTS_LABEL,
  107. DTS_NODE,
  108. DTS_CELL_PROPERTY,
  109. hljs.C_LINE_COMMENT_MODE,
  110. hljs.C_BLOCK_COMMENT_MODE,
  111. NUMBERS,
  112. STRINGS,
  113. PREPROCESSOR,
  114. {
  115. begin: hljs.IDENT_RE + '::',
  116. keywords: ""
  117. }
  118. ]
  119. };
  120. }