{
	"name": "atomasm-psx",
	"displayName": "AtomAsm-PSX",
	"description": "Semantic highlighting for the PS1 Tape/Atom MIPS macro DSL",
	"publisher": "local",
	"version": "0.3.0",
	"engines": { "vscode": "^1.80.0" },
	"categories": ["Programming Languages"],
	"activationEvents": ["onLanguage:c", "onLanguage:cpp"],
	"main": "./extension.js",
	"files": [
		"classifier.js",
		"extension.js",
		"lexer.js",
		"source-index.js",
		"syntaxes/tape_atom.tmLanguage.json"
	],
	"scripts": {
		"test": "node --test test/*.test.js",
		"package": "npx --yes @vscode/vsce@3.6.1 package --allow-missing-repository --skip-license --out atomasm-psx-0.3.0.vsix"
	},
	"contributes": {
		"semanticTokenTypes": [
			{ "id": "tapeAtomKeyword", "superType": "keyword", "description": "Tape atom declaration keyword" },
			{ "id": "tapeAtomName", "superType": "function", "description": "Tape atom name" },
			{ "id": "tapeComponentKeyword", "superType": "keyword", "description": "Tape atom component declaration keyword" },
			{ "id": "tapeComponentName", "superType": "function", "description": "Tape atom component name" },
			{ "id": "tapeAnnotation", "superType": "macro", "description": "Tape atom annotation" },
			{ "id": "tapeBindType", "superType": "type", "description": "Tape bind structure type" },
			{ "id": "tapePhase", "superType": "label", "description": "Tape atom phase" },
			{ "id": "tapeLabel", "superType": "label", "description": "Tape atom branch label" },
			{ "id": "tapeCpuInstruction", "superType": "macro", "description": "MIPS CPU instruction emitter" },
			{ "id": "tapeControlFlow", "superType": "keyword", "description": "MIPS branch or jump instruction" },
			{ "id": "tapeGteInstruction", "superType": "macro", "description": "GTE instruction emitter" },
			{ "id": "tapeGpuInstruction", "superType": "macro", "description": "GPU command emitter" },
			{ "id": "tapeComponentInstruction", "superType": "macro", "description": "Tape atom component invocation" },
			{ "id": "tapeDelaySlot", "superType": "keyword", "description": "Load or branch delay slot annotation" },
			{ "id": "tapeGprRegister", "superType": "variable", "description": "MIPS GPR alias" },
			{ "id": "tapeCop2Register", "superType": "variable", "description": "COP2 data or control register alias" },
			{ "id": "tapeDuffleType", "superType": "type", "description": "Duffle type or type constructor" },
			{ "id": "tapeAttribute", "superType": "keyword", "description": "Duffle linkage or storage attribute" },
			{ "id": "keyword", "description": "Standard keyword (DSL built-in macros)" },
			{ "id": "macro", "description": "Standard macro (utility #define with no instruction domain)" }
		],
		"semanticTokenModifiers": [
			{ "id": "tapeRead", "description": "Register declared in atom_reads" },
			{ "id": "tapeWrite", "description": "Register declared in atom_writes" },
			{ "id": "tapeAuto", "description": "Auto-allocated register" }
		],
		"semanticTokenScopes": [
			{
				"language": "c",
				"scopes": {
					"tapeAtomKeyword": ["keyword.control.duffle.atom"],
					"tapeAtomName": ["entity.name.function.duffle.atom"],
					"tapeComponentKeyword": ["keyword.control.duffle.component"],
					"tapeComponentName": ["entity.name.function.duffle.component"],
					"tapeAnnotation": ["support.function.duffle.annotation"],
					"tapeBindType": ["entity.name.type.duffle.bind"],
					"tapePhase": ["entity.name.tag.duffle.phase"],
					"tapeLabel": ["entity.name.label.duffle.atom"],
					"tapeCpuInstruction": ["support.function.duffle.cpu"],
					"tapeControlFlow": ["keyword.control.duffle.branch"],
					"tapeGteInstruction": ["support.function.duffle.gte"],
					"tapeGpuInstruction": ["support.function.duffle.gpu"],
					"tapeComponentInstruction": ["support.function.duffle.component"],
					"tapeDelaySlot": ["keyword.operator.duffle.delayslot"],
					"tapeGprRegister": ["variable.other.constant.duffle.gpr"],
					"tapeCop2Register": ["variable.other.constant.duffle.cop2"],
					"tapeDuffleType": ["storage.type.duffle.type"],
					"tapeAttribute": ["storage.modifier.duffle.attr"],
				"keyword": ["keyword"],
				"macro": ["entity.name.function.preprocessor"]
				}
			}
		],
		"grammars": [
			{
				"scopeName": "tape_atom.injection",
				"path": "./syntaxes/tape_atom.tmLanguage.json",
				"injectTo": ["source.c", "source.cpp"]
			}
		]
	}
}
