summaryrefslogtreecommitdiff
path: root/editors
diff options
context:
space:
mode:
authorallexanderbergmans <allexander.bergmans@student.elisa.be>2026-07-03 12:17:10 +0200
committerallexanderbergmans <allexander.bergmans@student.elisa.be>2026-07-03 12:17:10 +0200
commit887875959aa84af92291db334898aaa20956e632 (patch)
tree62f68d6e93cf444e5605a40c3e8ea7ec0bd89f49 /editors
Diffstat (limited to 'editors')
-rw-r--r--editors/vscode/README.md34
-rw-r--r--editors/vscode/isa-syntax-1.0.0.vsixbin0 -> 3414 bytes
-rw-r--r--editors/vscode/language-configuration.json8
-rw-r--r--editors/vscode/package.json27
-rw-r--r--editors/vscode/syntaxes/isa.tmLanguage.json70
5 files changed, 139 insertions, 0 deletions
diff --git a/editors/vscode/README.md b/editors/vscode/README.md
new file mode 100644
index 0000000..e7db36d
--- /dev/null
+++ b/editors/vscode/README.md
@@ -0,0 +1,34 @@
+# ISA Syntax Highlighting for VS Code
+
+Highlights `.isa` definition files — block types, keys, hex values, comments, bit ranges, and booleans.
+
+## Install
+
+```bash
+# Symlink into your VS Code extensions folder
+mkdir -p ~/.vscode/extensions
+ln -sf "$PWD" ~/.vscode/extensions/myisa-isa-syntax
+```
+
+Or copy the folder:
+
+```bash
+cp -r "$PWD" ~/.vscode/extensions/myisa-isa-syntax
+```
+
+Then **reload VS Code** (`Cmd+Shift+P` → "Developer: Reload Window").
+
+Open any `.isa` file — syntax highlighting activates automatically.
+
+## Colors by token
+
+| Token | Color |
+|-------|-------|
+| `ARCH`, `FORMAT`, `REGISTER`, `INSTRUCTION`, `CSR` | Keyword purple |
+| Block name (e.g. `ADD`, `x0`, `R`) | Entity/type blue-green |
+| `END` | Keyword purple |
+| Keys (`NAME`, `OPCODE`, `DESC`, etc.) | Property orange/yellow |
+| `0x...` hex values | Numeric green |
+| `31:25` bit ranges | Numeric green |
+| `true`/`false` booleans | Language constant |
+| `#` comments | Comment gray |
diff --git a/editors/vscode/isa-syntax-1.0.0.vsix b/editors/vscode/isa-syntax-1.0.0.vsix
new file mode 100644
index 0000000..9efef29
--- /dev/null
+++ b/editors/vscode/isa-syntax-1.0.0.vsix
Binary files differ
diff --git a/editors/vscode/language-configuration.json b/editors/vscode/language-configuration.json
new file mode 100644
index 0000000..e7a0d58
--- /dev/null
+++ b/editors/vscode/language-configuration.json
@@ -0,0 +1,8 @@
+{
+ "comments": {
+ "lineComment": "#"
+ },
+ "brackets": [],
+ "autoClosingPairs": [],
+ "surroundingPairs": []
+}
diff --git a/editors/vscode/package.json b/editors/vscode/package.json
new file mode 100644
index 0000000..d591994
--- /dev/null
+++ b/editors/vscode/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "isa-syntax",
+ "displayName": "ISA Definition Syntax Highlighting",
+ "description": "Syntax highlighting for .isa ISA definition files (used by the MyISA doc generator)",
+ "version": "1.0.0",
+ "publisher": "myisa",
+ "license": "MIT",
+ "engines": { "vscode": "^1.80.0" },
+ "categories": ["Programming Languages"],
+ "contributes": {
+ "languages": [{
+ "id": "isa",
+ "aliases": ["ISA Definition", "isa"],
+ "extensions": [".isa"],
+ "configuration": "./language-configuration.json",
+ "icon": {
+ "light": "./icon.png",
+ "dark": "./icon.png"
+ }
+ }],
+ "grammars": [{
+ "language": "isa",
+ "scopeName": "source.isa",
+ "path": "./syntaxes/isa.tmLanguage.json"
+ }]
+ }
+}
diff --git a/editors/vscode/syntaxes/isa.tmLanguage.json b/editors/vscode/syntaxes/isa.tmLanguage.json
new file mode 100644
index 0000000..c4de36a
--- /dev/null
+++ b/editors/vscode/syntaxes/isa.tmLanguage.json
@@ -0,0 +1,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"
+ }
+ }
+}