UNPKG

tm-grammars

Version:
292 lines (291 loc) 8.95 kB
{ "displayName": "RISC-V", "fileTypes": [ "S", "s", "riscv", "asm" ], "name": "riscv", "patterns": [ { "match": "\\b(la|lb|lh|lw|ld|nop|li|mv|not|negw??|sext\\.w|seqz|snez|sltz|sgtz|beqz|bnez|blez|bgez|bltz|bgtz?|ble|bgtu|bleu|j|jal|jr|ret|call|tail|fence|csr[crsw|]|csr[csw|]i)\\b", "name": "support.function.pseudo.riscv" }, { "match": "\\b(addw??|auipc|lui|jalr|beq|bne|blt|bge|bltu|bgeu|lb|lh|lw|ld|lbu|lhu|sb|sh|sw|sd|addiw??|sltiu??|xori|ori|andi|slliw??|srliw??|sraiw??|subw??|sllw??|sltu??|xor|srlw??|sraw??|or|and|fence|fence\\.i|csrrw|csrrs|csrrc|csrrwi|csrrsi|csrrci)\\b", "name": "support.function.riscv" }, { "match": "\\b(ecall|ebreak|sfence\\.vma|mret|sret|uret|wfi)\\b", "name": "support.function.riscv.privileged" }, { "match": "\\b(mulh??|mulhsu|mulhu|divu??|remu??|mulw|divw|divuw|remw|remuw)\\b", "name": "support.function.riscv.m" }, { "match": "\\b(c\\.(?:addi4spn|fld|lq|lw|flw|ld|fsd|sq|sw|fsw|sd|nop|addi|jal|addiw|li|addi16sp|lui|srli|srli64|srai|srai64|andi|sub|xor|or|and|subw|addw|j|beqz|bnez))\\b", "name": "support.function.riscv.c" }, { "match": "\\b(lr\\.[dw|]|sc\\.[dw|]|amoswap\\.[dw|]|amoadd\\.[dw|]|amoxor\\.[dw|]|amoand\\.[dw|]|amoor\\.[dw|]|amomin\\.[dw|]|amomax\\.[dw|]|amominu\\.[dw|]|amomaxu\\.[dw|])\\b", "name": "support.function.riscv.a" }, { "match": "\\b(f(?:lw|sw|madd\\.s|msub\\.s|nmsub\\.s|nmadd\\.s|add\\.s|sub\\.s|mul\\.s|div\\.s|sqrt\\.s|sgnj\\.s|sgnjn\\.s|sgnjx\\.s|min\\.s|max\\.s|cvt\\.w\\.s|cvt\\.wu\\.s|mv\\.x\\.w|eq\\.s|lt\\.s|le\\.s|class\\.s|cvt\\.s\\.wu??|mv\\.w\\.x|cvt\\.l\\.s|cvt\\.lu\\.s|cvt\\.s\\.lu??))\\b", "name": "support.function.riscv.f" }, { "match": "\\b(f(?:ld|sd|madd\\.d|msub\\.d|nmsub\\.d|nmadd\\.d|add\\.d|sub\\.d|mul\\.d|div\\.d|sqrt\\.d|sgnj\\.d|sgnjn\\.d|sgnjx\\.d|min\\.d|max\\.d|cvt\\.s\\.d|cvt\\.d\\.s|eq\\.d|lt\\.d|le\\.d|class\\.d|cvt\\.w\\.d|cvt\\.wu\\.d|cvt\\.d\\.wu??|cvt\\.l\\.d|cvt\\.lu\\.d|mv\\.x\\.d|cvt\\.d\\.lu??|mv\\.d\\.x))\\b", "name": "support.function.riscv.d" }, { "match": "\\.(skip|asciiz??|byte|[248|]byte|data|double|float|half|kdata|ktext|space|text|word|dword|dtprelword|dtpreldword|set\\s*(noat|at)|[su|]leb128|string|incbin|zero|rodata|comm|common)\\b", "name": "storage.type.riscv" }, { "match": "\\.(balign|align|p2align|extern|globl|global|local|pushsection|section|bss|insn|option|type|equ|macro|endm|file|ident)\\b", "name": "storage.modifier.riscv" }, { "captures": { "1": { "name": "entity.name.function.label.riscv" } }, "match": "\\b([0-9A-Z_a-z]+):", "name": "meta.function.label.riscv" }, { "captures": { "1": { "name": "punctuation.definition.variable.riscv" } }, "match": "\\b(x([0-9]|1[0-9]|2[0-9]|3[01]))\\b", "name": "variable.other.register.usable.by-number.riscv" }, { "captures": { "1": { "name": "punctuation.definition.variable.riscv" } }, "match": "\\b(zero|ra|sp|gp|tp|t[0-6]|a[0-7]|s[0-9]|fp|s1[01])\\b", "name": "variable.other.register.usable.by-name.riscv" }, { "captures": { "1": { "name": "punctuation.definition.variable.riscv" } }, "match": "\\b(([hmsu]|vs)status|([hmsu]|vs)ie|([msu]|vs)tvec|([msu]|vs)scratch|([msu]|vs)epc|([msu]|vs)cause|([hmsu]|vs)tval|([hmsu]|vs)ip|fflags|frm|fcsr|m?cycleh?|timeh?|m?instreth?|m?hpmcounter([3-9]|[12][0-9]|3[01])h?|[hms][ei]deleg|[hms]counteren|v?satp|hgeie|hgeip|[hm]tinst|hvip|hgatp|htimedeltah?|mvendorid|marchid|mimpid|mhartid|misa|mstatush|mtval2|pmpcfg[0-3]|pmpaddr([0-9]|1[0-5])|mcountinhibit|mhpmevent([3-9]|[12][0-9]|3[01])|tselect|tdata[123]|dcsr|dpc|dscratch[01])\\b", "name": "variable.other.csr.names.riscv" }, { "captures": { "1": { "name": "punctuation.definition.variable.riscv" } }, "match": "\\bf([0-9]|1[0-9]|2[0-9]|3[01])\\b", "name": "variable.other.register.usable.floating-point.riscv" }, { "match": "\\b\\d+\\.\\d+\\b", "name": "constant.numeric.float.riscv" }, { "match": "\\b(\\d+|0([Xx])\\h+)\\b", "name": "constant.numeric.integer.riscv" }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.riscv" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.riscv" } }, "name": "string.quoted.double.riscv", "patterns": [ { "match": "\\\\[\"\\\\nrt]", "name": "constant.character.escape.riscv" } ] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.riscv" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.riscv" } }, "name": "string.quoted.single.riscv", "patterns": [ { "match": "\\\\[\"\\\\nrt]", "name": "constant.character.escape.riscv" } ] }, { "begin": "/\\*", "end": "\\*/", "name": "comment.block" }, { "begin": "//", "end": "\\n", "name": "comment.line.double-slash" }, { "begin": "^\\s*#\\s*(define)\\s+((?<id>[A-Z_a-z][0-9A-Z_a-z]*))(?:(\\()(\\s*\\g<id>\\s*((,)\\s*\\g<id>\\s*)*(?:\\.\\.\\.)?)(\\)))?", "beginCaptures": { "1": { "name": "keyword.control.import.define.c" }, "2": { "name": "entity.name.function.preprocessor.c" }, "4": { "name": "punctuation.definition.parameters.c" }, "5": { "name": "variable.parameter.preprocessor.c" }, "7": { "name": "punctuation.separator.parameters.c" }, "8": { "name": "punctuation.definition.parameters.c" } }, "end": "(?=/[*/])|$", "name": "meta.preprocessor.macro.c", "patterns": [ { "match": "(?>\\\\\\s*\\n)", "name": "punctuation.separator.continuation.c" }, { "include": "$base" } ] }, { "begin": "^\\s*#\\s*(error|warning)\\b", "captures": { "1": { "name": "keyword.control.import.error.c" } }, "end": "$", "name": "meta.preprocessor.diagnostic.c", "patterns": [ { "match": "(?>\\\\\\s*\\n)", "name": "punctuation.separator.continuation.c" } ] }, { "begin": "^\\s*#\\s*(i(?:nclude|mport))\\b\\s+", "captures": { "1": { "name": "keyword.control.import.include.c" } }, "end": "(?=/[*/])|$", "name": "meta.preprocessor.c.include", "patterns": [ { "match": "(?>\\\\\\s*\\n)", "name": "punctuation.separator.continuation.c" }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.double.include.c" }, { "begin": "<", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": ">", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.other.lt-gt.include.c" } ] }, { "begin": "^\\s*#\\s*(defined??|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\\b", "captures": { "1": { "name": "keyword.control.import.c" } }, "end": "(?=/[*/])|$", "name": "meta.preprocessor.c", "patterns": [ { "match": "(?>\\\\\\s*\\n)", "name": "punctuation.separator.continuation.c" } ] }, { "begin": "(^[\\t ]+)?(?=#)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.riscv" } }, "end": "(?!\\G)", "patterns": [ { "begin": "#|(//)", "beginCaptures": { "0": { "name": "punctuation.definition.comment.riscv" } }, "end": "\\n", "name": "comment.line.number-sign.riscv" } ] } ], "scopeName": "source.riscv" }