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