summaryrefslogtreecommitdiff
path: root/editors/vscode/syntaxes/isa.tmLanguage.json
blob: c4de36a2d1ceb3a51515beb04582c88efb0294b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{
  "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
  "name": "ISA Definition",
  "scopeName": "source.isa",
  "fileTypes": ["isa"],
  "patterns": [
    { "include": "#comments" },
    { "include": "#block-header" },
    { "include": "#end-keyword" },
    { "include": "#keys" },
    { "include": "#hex-numbers" },
    { "include": "#bit-ranges" },
    { "include": "#booleans" },
    { "include": "#numbers" },
    { "include": "#names" }
  ],
  "repository": {
    "comments": {
      "patterns": [{
        "match": "#.*$",
        "name": "comment.line.hash.isa"
      }]
    },
    "block-header": {
      "patterns": [
        {
          "match": "\\b(ARCH|FORMAT|REGISTER|INSTRUCTION|CSR)\\b",
          "name": "keyword.control.block-type.isa"
        },
        {
          "match": "(?<=(ARCH|FORMAT|REGISTER|INSTRUCTION|CSR)\\s+)([A-Za-z_][A-Za-z0-9_]*)",
          "name": "entity.name.type.isa"
        }
      ]
    },
    "end-keyword": {
      "match": "\\bEND\\b",
      "name": "keyword.control.end.isa"
    },
    "keys": {
      "patterns": [
        { "match": "\\b(NAME|VERSION|DATE|STATUS)\\b", "name": "support.type.property-name.meta.isa" },
        { "match": "\\b(WIDTH|FIELD|FIELDS)\\b", "name": "support.type.property-name.format.isa" },
        { "match": "\\b(ABBR|DESC|PRESERVE|CALLER|ARG|INDEX)\\b", "name": "support.type.property-name.register.isa" },
        { "match": "\\b(FORMAT|OPCODE|FUNCT3|FUNCT7|OPERANDS|NOTE|CATEGORY|IMM)\\b", "name": "support.type.property-name.instruction.isa" },
        { "match": "\\b(NUMBER)\\b", "name": "support.type.property-name.csr.isa" }
      ]
    },
    "hex-numbers": {
      "match": "\\b0[xX][0-9a-fA-F]+\\b",
      "name": "constant.numeric.hex.isa"
    },
    "bit-ranges": {
      "match": "\\b([0-9]+:[0-9]+)\\b",
      "name": "constant.numeric.bit-range.isa"
    },
    "booleans": {
      "match": "\\b(true|false|yes|no)\\b",
      "name": "constant.language.boolean.isa"
    },
    "numbers": {
      "match": "\\b[0-9]+\\b",
      "name": "constant.numeric.decimal.isa"
    },
    "names": {
      "match": "\\b([A-Za-z_][A-Za-z0-9_]*)\\b",
      "name": "variable.other.isa"
    }
  }
}