{ "$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" } } }