OR-1 dataflow CPU sketch
at main 256 lines 6.2 kB view raw
1{ 2 "scopeName": "source.dfasm", 3 "name": "dfasm", 4 "fileTypes": ["dfasm"], 5 "patterns": [ 6 { 7 "match": "(@)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?", 8 "captures": { 9 "1": { 10 "name": "punctuation.definition.reference.node.dfasm" 11 }, 12 "2": { 13 "name": "entity.name.type.node.dfasm" 14 }, 15 "3": { 16 "name": "punctuation.separator.placement.dfasm" 17 }, 18 "4": { 19 "name": "entity.other.attribute-name.placement.dfasm" 20 }, 21 "5": { 22 "name": "punctuation.separator.port.dfasm" 23 }, 24 "6": { 25 "name": "constant.numeric.dfasm" 26 } 27 } 28 }, 29 { 30 "match": "(\\&)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?", 31 "captures": { 32 "1": { 33 "name": "punctuation.definition.reference.label.dfasm" 34 }, 35 "2": { 36 "name": "entity.name.function.label.dfasm" 37 }, 38 "3": { 39 "name": "punctuation.separator.placement.dfasm" 40 }, 41 "4": { 42 "name": "entity.other.attribute-name.placement.dfasm" 43 }, 44 "5": { 45 "name": "punctuation.separator.port.dfasm" 46 }, 47 "6": { 48 "name": "constant.numeric.dfasm" 49 } 50 } 51 }, 52 { 53 "match": "(\\$)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?", 54 "captures": { 55 "1": { 56 "name": "punctuation.definition.reference.function.dfasm" 57 }, 58 "2": { 59 "name": "entity.name.type.function.dfasm" 60 }, 61 "3": { 62 "name": "punctuation.separator.placement.dfasm" 63 }, 64 "4": { 65 "name": "entity.other.attribute-name.placement.dfasm" 66 }, 67 "5": { 68 "name": "punctuation.separator.port.dfasm" 69 }, 70 "6": { 71 "name": "constant.numeric.dfasm" 72 } 73 } 74 }, 75 { 76 "match": ";.*$", 77 "name": "comment.line.semicolon.dfasm" 78 }, 79 { 80 "match": "@system\\b", 81 "name": "variable.language.pragma.dfasm" 82 }, 83 { 84 "match": "\\|>", 85 "name": "keyword.operator.flow.out.dfasm" 86 }, 87 { 88 "match": "<\\|", 89 "name": "keyword.operator.flow.in.dfasm" 90 }, 91 { 92 "match": "\\b(?:(?:add|sub|inc|dec|shiftl|shiftr|ashiftr|and|or|xor|not|eq|lt|lte|gt|gte|breq|brgt|brge|brof|brty|sweq|swgt|swge|swof|swty|gate|sel|merge|pass|const|free_ctx|read|write|clear|alloc|free|rd_inc|rd_dec|cmp_sw|ior|iow|iorw|load_inst|change_tag|extract_tag|exec))\\b", 93 "name": "support.function.opcode.dfasm" 94 }, 95 { 96 "match": "(#)((?:[a-zA-Z_][a-zA-Z0-9_]*))", 97 "captures": { 98 "1": { 99 "name": "punctuation.definition.macro.dfasm" 100 }, 101 "2": { 102 "name": "entity.name.function.macro.dfasm" 103 } 104 } 105 }, 106 { 107 "begin": "r\"", 108 "beginCaptures": { 109 "0": { 110 "name": "string.quoted.double.raw.dfasm" 111 } 112 }, 113 "end": "\"", 114 "endCaptures": { 115 "0": { 116 "name": "string.quoted.double.raw.dfasm" 117 } 118 }, 119 "name": "string.quoted.double.raw.dfasm" 120 }, 121 { 122 "begin": "b\"", 123 "beginCaptures": { 124 "0": { 125 "name": "string.quoted.double.byte.dfasm" 126 } 127 }, 128 "end": "\"", 129 "endCaptures": { 130 "0": { 131 "name": "string.quoted.double.byte.dfasm" 132 } 133 }, 134 "name": "string.quoted.double.byte.dfasm", 135 "patterns": [ 136 { 137 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]", 138 "name": "constant.character.escape.dfasm" 139 }, 140 { 141 "match": "\\\\x[0-9a-fA-F]{2}", 142 "name": "constant.character.escape.dfasm" 143 } 144 ] 145 }, 146 { 147 "begin": "\"", 148 "beginCaptures": { 149 "0": { 150 "name": "string.quoted.double.dfasm" 151 } 152 }, 153 "end": "\"", 154 "endCaptures": { 155 "0": { 156 "name": "string.quoted.double.dfasm" 157 } 158 }, 159 "name": "string.quoted.double.dfasm", 160 "patterns": [ 161 { 162 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]", 163 "name": "constant.character.escape.dfasm" 164 }, 165 { 166 "match": "\\\\x[0-9a-fA-F]{2}", 167 "name": "constant.character.escape.dfasm" 168 } 169 ] 170 }, 171 { 172 "begin": "'", 173 "beginCaptures": { 174 "0": { 175 "name": "string.quoted.single.dfasm" 176 } 177 }, 178 "end": "'", 179 "endCaptures": { 180 "0": { 181 "name": "string.quoted.single.dfasm" 182 } 183 }, 184 "name": "string.quoted.single.dfasm", 185 "patterns": [ 186 { 187 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]", 188 "name": "constant.character.escape.dfasm" 189 }, 190 { 191 "match": "\\\\x[0-9a-fA-F]{2}", 192 "name": "constant.character.escape.dfasm" 193 } 194 ] 195 }, 196 { 197 "match": "(?:0x[0-9a-fA-F]+)", 198 "name": "constant.numeric.dfasm" 199 }, 200 { 201 "match": "(?:[0-9]+)", 202 "name": "constant.numeric.dfasm" 203 }, 204 { 205 "match": "((?:[a-zA-Z_][a-zA-Z0-9_]*))(=)", 206 "captures": { 207 "1": { 208 "name": "entity.other.attribute-name.dfasm" 209 } 210 } 211 }, 212 { 213 "match": "=" 214 }, 215 { 216 "match": ",", 217 "name": "punctuation.separator.dfasm" 218 }, 219 { 220 "begin": "\\{", 221 "beginCaptures": { 222 "0": { 223 "name": "punctuation.section.block.dfasm" 224 } 225 }, 226 "end": "\\}", 227 "endCaptures": { 228 "0": { 229 "name": "punctuation.section.block.dfasm" 230 } 231 }, 232 "name": "meta.function.body.dfasm", 233 "patterns": [ 234 { 235 "include": "$self" 236 } 237 ] 238 }, 239 { 240 "match": "\\}", 241 "name": "punctuation.section.block.dfasm" 242 }, 243 { 244 "match": "\\|(?!>)", 245 "name": "punctuation.separator.placement.dfasm" 246 }, 247 { 248 "match": ":", 249 "name": "punctuation.separator.port.dfasm" 250 }, 251 { 252 "match": "\\s+" 253 } 254 ], 255 "repository": {} 256}