From f4cbe54a88d72ee2b5b01191e6fa5d70842cd3ee Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 3 Nov 2025 17:19:29 -0800 Subject: [PATCH 01/10] Basic vscode works! --- vscode-extension/.gitignore | 3 + vscode-extension/.vscode/launch.json | 17 +++ vscode-extension/.vscode/tasks.json | 30 +++++ vscode-extension/.vscodeignore | 5 + vscode-extension/bun.lock | 22 ++++ vscode-extension/icon.png | Bin 0 -> 276496 bytes vscode-extension/language-configuration.json | 24 ++++ vscode-extension/package.json | 47 ++++++++ vscode-extension/src/extension.ts | 30 +++++ vscode-extension/src/semanticTokens.ts | 118 +++++++++++++++++++ vscode-extension/tsconfig.json | 16 +++ 11 files changed, 312 insertions(+) create mode 100644 vscode-extension/.gitignore create mode 100644 vscode-extension/.vscode/launch.json create mode 100644 vscode-extension/.vscode/tasks.json create mode 100644 vscode-extension/.vscodeignore create mode 100644 vscode-extension/bun.lock create mode 100644 vscode-extension/icon.png create mode 100644 vscode-extension/language-configuration.json create mode 100644 vscode-extension/package.json create mode 100644 vscode-extension/src/extension.ts create mode 100644 vscode-extension/src/semanticTokens.ts create mode 100644 vscode-extension/tsconfig.json diff --git a/vscode-extension/.gitignore b/vscode-extension/.gitignore new file mode 100644 index 0000000..d2703e4 --- /dev/null +++ b/vscode-extension/.gitignore @@ -0,0 +1,3 @@ +node_modules +dist +*.vsix diff --git a/vscode-extension/.vscode/launch.json b/vscode-extension/.vscode/launch.json new file mode 100644 index 0000000..de34de7 --- /dev/null +++ b/vscode-extension/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ], + "outFiles": [ + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "bun: compile" + } + ] +} diff --git a/vscode-extension/.vscode/tasks.json b/vscode-extension/.vscode/tasks.json new file mode 100644 index 0000000..cca534f --- /dev/null +++ b/vscode-extension/.vscode/tasks.json @@ -0,0 +1,30 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "shell", + "label": "bun: compile", + "command": "bun", + "args": ["run", "compile"], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": "$tsc", + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "shell", + "label": "bun: watch", + "command": "bun", + "args": ["run", "watch"], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": "$tsc-watch", + "isBackground": true + } + ] +} diff --git a/vscode-extension/.vscodeignore b/vscode-extension/.vscodeignore new file mode 100644 index 0000000..7fa6f56 --- /dev/null +++ b/vscode-extension/.vscodeignore @@ -0,0 +1,5 @@ +.vscode/** +src/** +tsconfig.json +node_modules/** +*.map diff --git a/vscode-extension/bun.lock b/vscode-extension/bun.lock new file mode 100644 index 0000000..2f9dd21 --- /dev/null +++ b/vscode-extension/bun.lock @@ -0,0 +1,22 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "shrimp", + "devDependencies": { + "@types/node": "22.x", + "@types/vscode": "^1.105.0", + "typescript": "^5.9.3", + }, + }, + }, + "packages": { + "@types/node": ["@types/node@22.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA=="], + + "@types/vscode": ["@types/vscode@1.105.0", "", {}, "sha512-Lotk3CTFlGZN8ray4VxJE7axIyLZZETQJVWi/lYoUVQuqfRxlQhVOfoejsD2V3dVXPSbS15ov5ZyowMAzgUqcw=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + } +} diff --git a/vscode-extension/icon.png b/vscode-extension/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..040c85b1ca0a882c9623d5014a3eea7664497058 GIT binary patch literal 276496 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 z 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≫7G|VJK)HXw))REf^cb)Z|A-CwK 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 { + try { + console.log('provideDocumentSemanticTokens called for:', document.fileName) + const tokensBuilder = new vscode.SemanticTokensBuilder(legend) + const text = document.getText() + console.log('Document text:', text) + console.log('About to parse with parser:', typeof parser) + const tree: Tree = parser.parse(text) + console.log('Parsed tree:', tree.topNode.toString()) + this.walkTree(tree.topNode, document, tokensBuilder) + + const result = tokensBuilder.build() + console.log('Built tokens, data length:', result.data.length) + return result + } catch (error) { + console.error('Error in provideDocumentSemanticTokens:', error) + throw error + } + } + + // Map Lezer node types to semantic token types + walkTree(node: SyntaxNode, document: vscode.TextDocument, builder: vscode.SemanticTokensBuilder) { + const tokenType = this.getTokenType(node.type.name) + + if (tokenType !== undefined) { + const start = document.positionAt(node.from) + const length = node.to - node.from + builder.push(start.line, start.character, length, tokenType, 0) + } + + // Recursively walk children + let child = node.firstChild + while (child) { + this.walkTree(child, document, builder) + child = child.nextSibling + } + } + + getTokenType(nodeTypeName: string): number | undefined { + // Map Lezer node names to VSCode semantic token types + switch (nodeTypeName) { + case 'FunctionCall': + case 'FunctionDef': + return tokenTypes.indexOf('function') + + case 'Identifier': + case 'AssignableIdentifier': + case 'FunctionCallOrIdentifier': + return tokenTypes.indexOf('variable') + + case 'String': + case 'StringFragment': + case 'Word': + return tokenTypes.indexOf('string') + + case 'Number': + return tokenTypes.indexOf('number') + + case 'Plus': + case 'Minus': + case 'Star': + case 'Slash': + case 'Eq': + case 'EqEq': + case 'Neq': + case 'Lt': + case 'Lte': + case 'Gt': + case 'Gte': + case 'Modulo': + case 'And': + case 'Or': + return tokenTypes.indexOf('operator') + + case 'keyword': + case 'Do': + return tokenTypes.indexOf('keyword') + + case 'Params': + case 'NamedParam': + return tokenTypes.indexOf('parameter') + + case 'DotGet': + return tokenTypes.indexOf('property') + + case 'Regex': + return tokenTypes.indexOf('regexp') + + default: + return undefined + } + } +} diff --git a/vscode-extension/tsconfig.json b/vscode-extension/tsconfig.json new file mode 100644 index 0000000..9794d47 --- /dev/null +++ b/vscode-extension/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022"], + "module": "commonjs", + "moduleResolution": "node", + "outDir": "./dist", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} -- 2.50.1 From 2d7f0dbe25ca1ebf6ac7b32cb1c3d086b8889045 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 4 Nov 2025 13:59:22 -0800 Subject: [PATCH 02/10] extension is working! --- src/compiler/compiler.ts | 40 ++++-- src/compiler/tests/compiler.test.ts | 13 +- vscode-extension/.gitignore | 3 +- vscode-extension/.vscode/launch.json | 3 +- vscode-extension/bun.lock | 25 ++++ vscode-extension/client/src/extension.ts | 74 +++++++++++ vscode-extension/package.json | 39 +++++- vscode-extension/server/src/diagnostics.ts | 93 ++++++++++++++ vscode-extension/server/src/semanticTokens.ts | 101 +++++++++++++++ vscode-extension/server/src/server.ts | 105 ++++++++++++++++ vscode-extension/src/extension.ts | 30 ----- vscode-extension/src/semanticTokens.ts | 118 ------------------ vscode-extension/tsconfig.json | 6 +- 13 files changed, 476 insertions(+), 174 deletions(-) create mode 100644 vscode-extension/client/src/extension.ts create mode 100644 vscode-extension/server/src/diagnostics.ts create mode 100644 vscode-extension/server/src/semanticTokens.ts create mode 100644 vscode-extension/server/src/server.ts delete mode 100644 vscode-extension/src/extension.ts delete mode 100644 vscode-extension/src/semanticTokens.ts diff --git a/src/compiler/compiler.ts b/src/compiler/compiler.ts index efcff49..082abab 100644 --- a/src/compiler/compiler.ts +++ b/src/compiler/compiler.ts @@ -280,13 +280,27 @@ export class Compiler { const opValue = input.slice(operator.from, operator.to) switch (opValue) { - case '+=': instructions.push(['ADD']); break - case '-=': instructions.push(['SUB']); break - case '*=': instructions.push(['MUL']); break - case '/=': instructions.push(['DIV']); break - case '%=': instructions.push(['MOD']); break + case '+=': + instructions.push(['ADD']) + break + case '-=': + instructions.push(['SUB']) + break + case '*=': + instructions.push(['MUL']) + break + case '/=': + instructions.push(['DIV']) + break + case '%=': + instructions.push(['MOD']) + break default: - throw new CompilerError(`Unknown compound operator: ${opValue}`, operator.from, operator.to) + throw new CompilerError( + `Unknown compound operator: ${opValue}`, + operator.from, + operator.to + ) } // DUP and store (same as regular assignment) @@ -304,10 +318,8 @@ export class Compiler { } case terms.FunctionDef: { - const { paramNames, bodyNodes, catchVariable, catchBody, finallyBody } = getFunctionDefParts( - node, - input - ) + const { paramNames, bodyNodes, catchVariable, catchBody, finallyBody } = + getFunctionDefParts(node, input) const instructions: ProgramItem[] = [] const functionLabel: Label = `.func_${this.fnLabelCount++}` const afterLabel: Label = `.after_${functionLabel}` @@ -330,7 +342,13 @@ export class Compiler { if (catchVariable || finallyBody) { // If function has catch or finally, wrap body in try/catch/finally instructions.push( - ...this.#compileTryCatchFinally(compileFunctionBody, catchVariable, catchBody, finallyBody, input) + ...this.#compileTryCatchFinally( + compileFunctionBody, + catchVariable, + catchBody, + finallyBody, + input + ) ) } else { instructions.push(...compileFunctionBody()) diff --git a/src/compiler/tests/compiler.test.ts b/src/compiler/tests/compiler.test.ts index 9418f0b..74cf248 100644 --- a/src/compiler/tests/compiler.test.ts +++ b/src/compiler/tests/compiler.test.ts @@ -304,9 +304,12 @@ describe('default params', () => { }) test.skip('dict default', () => { - expect('make-person = do person=[name=Bob age=60]: person end; make-person') - .toEvaluateTo({ name: 'Bob', age: 60 }) - expect('make-person = do person=[name=Bob age=60]: person end; make-person [name=Jon age=21]') - .toEvaluateTo({ name: 'Jon', age: 21 }) + expect('make-person = do person=[name=Bob age=60]: person end; make-person').toEvaluateTo({ + name: 'Bob', + age: 60, + }) + expect( + 'make-person = do person=[name=Bob age=60]: person end; make-person [name=Jon age=21]' + ).toEvaluateTo({ name: 'Jon', age: 21 }) }) -}) \ No newline at end of file +}) diff --git a/vscode-extension/.gitignore b/vscode-extension/.gitignore index d2703e4..3a53163 100644 --- a/vscode-extension/.gitignore +++ b/vscode-extension/.gitignore @@ -1,3 +1,4 @@ node_modules -dist +client/dist +server/dist *.vsix diff --git a/vscode-extension/.vscode/launch.json b/vscode-extension/.vscode/launch.json index de34de7..92a7d04 100644 --- a/vscode-extension/.vscode/launch.json +++ b/vscode-extension/.vscode/launch.json @@ -9,7 +9,8 @@ "--extensionDevelopmentPath=${workspaceFolder}" ], "outFiles": [ - "${workspaceFolder}/dist/**/*.js" + "${workspaceFolder}/client/dist/**/*.js", + "${workspaceFolder}/server/dist/**/*.js" ], "preLaunchTask": "bun: compile" } diff --git a/vscode-extension/bun.lock b/vscode-extension/bun.lock index 2f9dd21..72072f7 100644 --- a/vscode-extension/bun.lock +++ b/vscode-extension/bun.lock @@ -3,6 +3,11 @@ "workspaces": { "": { "name": "shrimp", + "dependencies": { + "vscode-languageclient": "^9.0.1", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.12", + }, "devDependencies": { "@types/node": "22.x", "@types/vscode": "^1.105.0", @@ -15,8 +20,28 @@ "@types/vscode": ["@types/vscode@1.105.0", "", {}, "sha512-Lotk3CTFlGZN8ray4VxJE7axIyLZZETQJVWi/lYoUVQuqfRxlQhVOfoejsD2V3dVXPSbS15ov5ZyowMAzgUqcw=="], + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "vscode-languageclient": ["vscode-languageclient@9.0.1", "", { "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", "vscode-languageserver-protocol": "3.17.5" } }, "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA=="], + + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], } } diff --git a/vscode-extension/client/src/extension.ts b/vscode-extension/client/src/extension.ts new file mode 100644 index 0000000..7b32915 --- /dev/null +++ b/vscode-extension/client/src/extension.ts @@ -0,0 +1,74 @@ +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, + TransportKind, +} from 'vscode-languageclient/node' +import * as vscode from 'vscode' + +export function activate(context: vscode.ExtensionContext) { + const serverModule = context.asAbsolutePath('server/dist/server.js') + + const serverOptions: ServerOptions = { + run: { module: serverModule, transport: TransportKind.ipc }, + debug: { module: serverModule, transport: TransportKind.ipc }, + } + + const clientOptions: LanguageClientOptions = { + documentSelector: [{ scheme: 'file', language: 'shrimp' }], + } + + const client = new LanguageClient( + 'shrimpLanguageServer', + 'Shrimp Language Server', + serverOptions, + clientOptions + ) + + client.start() + context.subscriptions.push(client) + + // Command: Show Parse Tree + context.subscriptions.push( + vscode.commands.registerCommand('shrimp.showParseTree', async () => { + const editor = vscode.window.activeTextEditor + if (!editor || editor.document.languageId !== 'shrimp') { + vscode.window.showErrorMessage('No active Shrimp file') + return + } + + const result = await client.sendRequest('shrimp/parseTree', { + uri: editor.document.uri.toString(), + }) + + const doc = await vscode.workspace.openTextDocument({ + content: result, + language: 'text', + }) + await vscode.window.showTextDocument(doc, { preview: false }) + }) + ) + + // Command: Show Bytecode + context.subscriptions.push( + vscode.commands.registerCommand('shrimp.showBytecode', async () => { + const editor = vscode.window.activeTextEditor + if (!editor || editor.document.languageId !== 'shrimp') { + vscode.window.showErrorMessage('No active Shrimp file') + return + } + + const result = await client.sendRequest('shrimp/bytecode', { + uri: editor.document.uri.toString(), + }) + + const doc = await vscode.workspace.openTextDocument({ + content: result, + language: 'text', + }) + await vscode.window.showTextDocument(doc, { preview: false }) + }) + ) +} + +export function deactivate() {} diff --git a/vscode-extension/package.json b/vscode-extension/package.json index ef82d3a..0dfdac0 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -1,7 +1,7 @@ { "name": "shrimp", "version": "0.0.1", - "main": "./dist/extension.js", + "main": "./client/dist/extension.js", "devDependencies": { "@types/vscode": "^1.105.0", "@types/node": "22.x", @@ -28,7 +28,29 @@ "[shrimp]": { "editor.semanticHighlighting.enabled": true } - } + }, + "commands": [ + { + "command": "shrimp.showParseTree", + "title": "Shrimp: Show Parse Tree" + }, + { + "command": "shrimp.showBytecode", + "title": "Shrimp: Show Bytecode" + } + ], + "keybindings": [ + { + "command": "shrimp.showParseTree", + "key": "alt+k alt+i", + "when": "editorLangId == shrimp" + }, + { + "command": "shrimp.showBytecode", + "key": "alt+k alt+,", + "when": "editorLangId == shrimp" + } + ] }, "description": "Language support for Shrimp shell scripting language", "displayName": "Shrimp", @@ -39,9 +61,16 @@ "publisher": "shrimp-lang", "scripts": { "vscode:prepublish": "bun run package", - "compile": "bun build src/extension.ts --outdir dist --target node --format cjs --external vscode", - "watch": "bun build src/extension.ts --outdir dist --target node --format cjs --external vscode --watch", - "package": "bun build src/extension.ts --outdir dist --target node --format cjs --external vscode --minify", + "compile": "bun run compile:client && bun run compile:server", + "compile:client": "bun build client/src/extension.ts --outdir client/dist --target node --format cjs --external vscode", + "compile:server": "bun build server/src/server.ts --outdir server/dist --target node --format cjs --external vscode-languageserver --external vscode-languageserver-textdocument", + "watch": "bun run compile:client --watch", + "package": "bun run compile:client --minify && bun run compile:server --minify", "check-types": "tsc --noEmit" + }, + "dependencies": { + "vscode-languageclient": "^9.0.1", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.12" } } \ No newline at end of file diff --git a/vscode-extension/server/src/diagnostics.ts b/vscode-extension/server/src/diagnostics.ts new file mode 100644 index 0000000..2f1a449 --- /dev/null +++ b/vscode-extension/server/src/diagnostics.ts @@ -0,0 +1,93 @@ +import { TextDocument, Position } from 'vscode-languageserver-textdocument' +import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver/node' +import { parser } from '../../../src/parser/shrimp' +import { Compiler } from '../../../src/compiler/compiler' +import { CompilerError } from '../../../src/compiler/compilerError' + +export const buildDiagnostics = (textDocument: TextDocument): Diagnostic[] => { + const text = textDocument.getText() + const diagnostics = getParseErrors(textDocument) + + if (diagnostics.length > 0) { + return diagnostics + } + const diagnostic = getCompilerError(text) + if (diagnostic) return [diagnostic] + + return [] +} + +const getCompilerError = (text: string): Diagnostic | undefined => { + try { + new Compiler(text) + } catch (e) { + if (!(e instanceof CompilerError)) { + return unknownDiagnostic(getErrorMessage(e)) + } + + const lineInfo = e.lineAtPosition(text)! + const cause = e.cause ? ` Cause: ${e.cause}` : '' + const message = e.message + + if (!lineInfo) { + return unknownDiagnostic(message + cause) + } + + const diagnostic: Diagnostic = { + severity: DiagnosticSeverity.Error, + range: { + start: { line: lineInfo.lineNumber, character: lineInfo.columnStart }, + end: { line: lineInfo.lineNumber, character: lineInfo.columnEnd }, + }, + message: `Compiler error: ${message}${cause}`, + source: 'shrimp', + } + return diagnostic + } +} + +const unknownDiagnostic = (message: string): Diagnostic => { + const diagnostic: Diagnostic = { + severity: DiagnosticSeverity.Error, + range: { + start: { line: 0, character: 0 }, + end: { line: -1, character: -1 }, + }, + message, + source: 'shrimp', + } + return diagnostic +} + +const getParseErrors = (textDocument: TextDocument): Diagnostic[] => { + const tree = parser.parse(textDocument.getText()) + + const ranges: { start: Position; end: Position }[] = [] + tree.iterate({ + enter(n) { + if (n.type.isError) { + ranges.push({ + start: textDocument.positionAt(n.from), + end: textDocument.positionAt(n.to), + }) + return false + } + }, + }) + + return ranges.map((range) => { + return { + range, + severity: DiagnosticSeverity.Error, + message: 'Parse error: Invalid syntax', + source: 'shrimp', + } + }) +} + +const getErrorMessage = (error: unknown): string => { + if (error instanceof Error) { + return error.message + } + return String(error) +} diff --git a/vscode-extension/server/src/semanticTokens.ts b/vscode-extension/server/src/semanticTokens.ts new file mode 100644 index 0000000..cd2ac28 --- /dev/null +++ b/vscode-extension/server/src/semanticTokens.ts @@ -0,0 +1,101 @@ +import { parser } from '../../../src/parser/shrimp' +import * as Terms from '../../../src/parser/shrimp.terms' +import { SyntaxNode } from '@lezer/common' +import { TextDocument } from 'vscode-languageserver-textdocument' +import { SemanticTokensBuilder, SemanticTokenTypes } from 'vscode-languageserver/node' + +export const TOKEN_TYPES = [ + SemanticTokenTypes.function, + SemanticTokenTypes.variable, + SemanticTokenTypes.string, + SemanticTokenTypes.number, + SemanticTokenTypes.operator, + SemanticTokenTypes.keyword, + SemanticTokenTypes.parameter, + SemanticTokenTypes.property, + SemanticTokenTypes.regexp, +] + +export const TOKEN_MODIFIERS: string[] = [] + +export function buildSemanticTokens(document: TextDocument): number[] { + const text = document.getText() + const tree = parser.parse(text) + const builder = new SemanticTokensBuilder() + + walkTree(tree.topNode, document, builder) + + return builder.build().data +} + +// Walk the tree and collect tokens +function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTokensBuilder) { + const tokenType = getTokenType(node.type.id) + + if (tokenType !== undefined) { + const start = document.positionAt(node.from) + const length = node.to - node.from + builder.push(start.line, start.character, length, tokenType, 0) + } + + let child = node.firstChild + while (child) { + walkTree(child, document, builder) + child = child.nextSibling + } +} + +// Map Lezer node IDs to semantic token type indices +function getTokenType(nodeTypeId: number): number | undefined { + switch (nodeTypeId) { + case Terms.FunctionCall: + case Terms.FunctionDef: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.function) + + case Terms.Identifier: + case Terms.AssignableIdentifier: + case Terms.FunctionCallOrIdentifier: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.variable) + + case Terms.String: + case Terms.StringFragment: + case Terms.Word: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.string) + + case Terms.Number: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.number) + + case Terms.Plus: + case Terms.Minus: + case Terms.Star: + case Terms.Slash: + case Terms.Eq: + case Terms.EqEq: + case Terms.Neq: + case Terms.Lt: + case Terms.Lte: + case Terms.Gt: + case Terms.Gte: + case Terms.Modulo: + case Terms.And: + case Terms.Or: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.operator) + + case Terms.keyword: + case Terms.Do: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.keyword) + + case Terms.Params: + case Terms.NamedParam: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.parameter) + + case Terms.DotGet: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.property) + + case Terms.Regex: + return TOKEN_TYPES.indexOf(SemanticTokenTypes.regexp) + + default: + return undefined + } +} diff --git a/vscode-extension/server/src/server.ts b/vscode-extension/server/src/server.ts new file mode 100644 index 0000000..40ce3fc --- /dev/null +++ b/vscode-extension/server/src/server.ts @@ -0,0 +1,105 @@ +import { TextDocuments } from 'vscode-languageserver/node' +import { TextDocument } from 'vscode-languageserver-textdocument' +import { createConnection, ProposedFeatures } from 'vscode-languageserver/node' +import { buildDiagnostics } from './diagnostics' +import { buildSemanticTokens, TOKEN_MODIFIERS, TOKEN_TYPES } from './semanticTokens' +import { parser } from '../../../src/parser/shrimp' +import { Compiler } from '../../../src/compiler/compiler' + +const connection = createConnection(ProposedFeatures.all) +const documents = new TextDocuments(TextDocument) +documents.listen(connection) + +connection.onInitialize(() => { + connection.console.log('🦐 Server initialized with capabilities') + return { + capabilities: { + textDocumentSync: 1, + semanticTokensProvider: { + legend: { + tokenTypes: TOKEN_TYPES, + tokenModifiers: TOKEN_MODIFIERS, + }, + full: true, + }, + }, + } +}) + +connection.languages.semanticTokens.on((params) => { + const document = documents.get(params.textDocument.uri) + if (!document) { + return { data: [] } + } + + const data = buildSemanticTokens(document) + return { data } +}) + +documents.onDidChangeContent((change) => { + const textDocument = change.document + + const diagnostics = buildDiagnostics(textDocument) + connection.sendDiagnostics({ uri: textDocument.uri, diagnostics }) +}) + +connection.onRequest('shrimp/parseTree', (params: { uri: string }) => { + connection.console.log(`🦐 Parse tree requested for: ${params.uri}`) + const document = documents.get(params.uri) + if (!document) return 'Document not found' + + const text = document.getText() + const tree = parser.parse(text) + const treeString = tree.toString() + + // Format with indentation, without parentheses + let formatted = '' + let indent = 0 + for (let i = 0; i < treeString.length; i++) { + const char = treeString[i] + if (char === '(') { + formatted += '\n' + indent++ + formatted += ' '.repeat(indent) + } else if (char === ')') { + indent-- + } else if (char === ',') { + formatted += '\n' + formatted += ' '.repeat(indent) + } else { + formatted += char + } + } + + return formatted +}) + +connection.onRequest('shrimp/bytecode', (params: { uri: string }) => { + connection.console.log(`🦐 Bytecode requested for: ${params.uri}`) + const document = documents.get(params.uri) + if (!document) return 'Document not found' + + try { + const text = document.getText() + const compiler = new Compiler(text) + + // Format bytecode as readable string + let output = 'Bytecode:\n\n' + const bytecode = compiler.bytecode + + output += bytecode.instructions + .map((op, i) => `${i.toString().padStart(4)}: ${JSON.stringify(op)}`) + .join('\n') + + // Strip ANSI color codes + output = output.replace(/\x1b\[[0-9;]*m/g, '') + + return output + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + // Strip ANSI color codes from error message too + return `Compilation failed: ${errorMsg.replace(/\x1b\[[0-9;]*m/g, '')}` + } +}) + +connection.listen() diff --git a/vscode-extension/src/extension.ts b/vscode-extension/src/extension.ts deleted file mode 100644 index 67dd16f..0000000 --- a/vscode-extension/src/extension.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as vscode from 'vscode' -import { ShrimpSemanticTokensProvider, legend } from './semanticTokens' -import { parser } from '../../src/parser/shrimp' - -// This method is called when your extension is activated -export function activate(context: vscode.ExtensionContext) { - console.log('Shrimp extension is now active!') - console.log('Parser loaded:', typeof parser, parser) - - // Test the parser - try { - const testTree = parser.parse('x = 42') - console.log('Parser test successful:', testTree.topNode.toString()) - } catch (error) { - console.error('Parser test failed:', error) - } - - // Register semantic tokens provider for Shrimp language - const provider = new ShrimpSemanticTokensProvider() - const selector: vscode.DocumentSelector = { language: 'shrimp', scheme: 'file' } - - const disposable = vscode.languages.registerDocumentSemanticTokensProvider(selector, provider, legend) - console.log('Registered semantic tokens provider:', disposable) - context.subscriptions.push(disposable) - - console.log('Legend token types:', legend.tokenTypes) -} - -// This method is called when your extension is deactivated -export function deactivate() {} diff --git a/vscode-extension/src/semanticTokens.ts b/vscode-extension/src/semanticTokens.ts deleted file mode 100644 index 02a7536..0000000 --- a/vscode-extension/src/semanticTokens.ts +++ /dev/null @@ -1,118 +0,0 @@ -import * as vscode from 'vscode' -import { parser } from '../../src/parser/shrimp' -import { Tree, SyntaxNode } from '@lezer/common' - -// Define the token types we'll use -const tokenTypes = [ - 'function', - 'variable', - 'string', - 'number', - 'operator', - 'keyword', - 'parameter', - 'property', - 'regexp', -] - -const tokenModifiers: string[] = [] - -export const legend = new vscode.SemanticTokensLegend(tokenTypes, tokenModifiers) - -export class ShrimpSemanticTokensProvider implements vscode.DocumentSemanticTokensProvider { - async provideDocumentSemanticTokens( - document: vscode.TextDocument, - _token: vscode.CancellationToken - ): Promise { - try { - console.log('provideDocumentSemanticTokens called for:', document.fileName) - const tokensBuilder = new vscode.SemanticTokensBuilder(legend) - const text = document.getText() - console.log('Document text:', text) - console.log('About to parse with parser:', typeof parser) - const tree: Tree = parser.parse(text) - console.log('Parsed tree:', tree.topNode.toString()) - this.walkTree(tree.topNode, document, tokensBuilder) - - const result = tokensBuilder.build() - console.log('Built tokens, data length:', result.data.length) - return result - } catch (error) { - console.error('Error in provideDocumentSemanticTokens:', error) - throw error - } - } - - // Map Lezer node types to semantic token types - walkTree(node: SyntaxNode, document: vscode.TextDocument, builder: vscode.SemanticTokensBuilder) { - const tokenType = this.getTokenType(node.type.name) - - if (tokenType !== undefined) { - const start = document.positionAt(node.from) - const length = node.to - node.from - builder.push(start.line, start.character, length, tokenType, 0) - } - - // Recursively walk children - let child = node.firstChild - while (child) { - this.walkTree(child, document, builder) - child = child.nextSibling - } - } - - getTokenType(nodeTypeName: string): number | undefined { - // Map Lezer node names to VSCode semantic token types - switch (nodeTypeName) { - case 'FunctionCall': - case 'FunctionDef': - return tokenTypes.indexOf('function') - - case 'Identifier': - case 'AssignableIdentifier': - case 'FunctionCallOrIdentifier': - return tokenTypes.indexOf('variable') - - case 'String': - case 'StringFragment': - case 'Word': - return tokenTypes.indexOf('string') - - case 'Number': - return tokenTypes.indexOf('number') - - case 'Plus': - case 'Minus': - case 'Star': - case 'Slash': - case 'Eq': - case 'EqEq': - case 'Neq': - case 'Lt': - case 'Lte': - case 'Gt': - case 'Gte': - case 'Modulo': - case 'And': - case 'Or': - return tokenTypes.indexOf('operator') - - case 'keyword': - case 'Do': - return tokenTypes.indexOf('keyword') - - case 'Params': - case 'NamedParam': - return tokenTypes.indexOf('parameter') - - case 'DotGet': - return tokenTypes.indexOf('property') - - case 'Regex': - return tokenTypes.indexOf('regexp') - - default: - return undefined - } - } -} diff --git a/vscode-extension/tsconfig.json b/vscode-extension/tsconfig.json index 9794d47..a915a81 100644 --- a/vscode-extension/tsconfig.json +++ b/vscode-extension/tsconfig.json @@ -3,7 +3,7 @@ "target": "ES2022", "lib": ["ES2022"], "module": "commonjs", - "moduleResolution": "node", + "moduleResolution": "bundler", "outDir": "./dist", "strict": true, "esModuleInterop": true, @@ -11,6 +11,6 @@ "forceConsistentCasingInFileNames": true, "resolveJsonModule": true }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + "include": ["client/src/**/*", "server/src/**/*", "../src/**/*"], + "exclude": ["node_modules", "client/dist", "server/dist"] } -- 2.50.1 From b99394e94fecc84a8914c1231f857bae9fe2b8b2 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 4 Nov 2025 14:57:13 -0800 Subject: [PATCH 03/10] neat --- vscode-extension/language-configuration.json | 6 +- vscode-extension/server/src/server.ts | 74 ++++++++++++++------ 2 files changed, 59 insertions(+), 21 deletions(-) diff --git a/vscode-extension/language-configuration.json b/vscode-extension/language-configuration.json index 271b346..eef8f23 100644 --- a/vscode-extension/language-configuration.json +++ b/vscode-extension/language-configuration.json @@ -20,5 +20,9 @@ ["'", "'"], ["\"", "\""] ], - "wordPattern": "([a-z][a-z0-9-]*)|(-?\\d+\\.?\\d*)" + "wordPattern": "([a-z][a-z0-9-]*)|(-?\\d+\\.?\\d*)", + "indentationRules": { + "increaseIndentPattern": ":\\s*$", + "decreaseIndentPattern": "^\\s*(end|else)\\b" + } } diff --git a/vscode-extension/server/src/server.ts b/vscode-extension/server/src/server.ts index 40ce3fc..cc97e05 100644 --- a/vscode-extension/server/src/server.ts +++ b/vscode-extension/server/src/server.ts @@ -1,20 +1,48 @@ -import { TextDocuments } from 'vscode-languageserver/node' import { TextDocument } from 'vscode-languageserver-textdocument' -import { createConnection, ProposedFeatures } from 'vscode-languageserver/node' import { buildDiagnostics } from './diagnostics' import { buildSemanticTokens, TOKEN_MODIFIERS, TOKEN_TYPES } from './semanticTokens' import { parser } from '../../../src/parser/shrimp' import { Compiler } from '../../../src/compiler/compiler' +import { + InitializeResult, + TextDocuments, + TextDocumentSyncKind, + createConnection, + ProposedFeatures, + CompletionItemKind, +} from 'vscode-languageserver/node' const connection = createConnection(ProposedFeatures.all) const documents = new TextDocuments(TextDocument) documents.listen(connection) -connection.onInitialize(() => { +// Server capabilities +connection.onInitialize(handleInitialize) + +// Language features +connection.languages.semanticTokens.on(handleSemanticTokens) +documents.onDidChangeContent(handleDocumentChange) +connection.onCompletion(handleCompletion) + +// Debug commands +connection.onRequest('shrimp/parseTree', handleParseTree) +connection.onRequest('shrimp/bytecode', handleBytecode) + +// Start listening +connection.listen() + +// ============================================================================ +// Handler implementations +// ============================================================================ + +function handleInitialize(): InitializeResult { connection.console.log('🦐 Server initialized with capabilities') - return { + const result: InitializeResult = { capabilities: { - textDocumentSync: 1, + textDocumentSync: TextDocumentSyncKind.Full, + completionProvider: { + triggerCharacters: ['.'], + }, semanticTokensProvider: { legend: { tokenTypes: TOKEN_TYPES, @@ -24,26 +52,34 @@ connection.onInitialize(() => { }, }, } -}) -connection.languages.semanticTokens.on((params) => { + return result +} + +function handleSemanticTokens(params: any) { const document = documents.get(params.textDocument.uri) - if (!document) { - return { data: [] } - } + if (!document) return { data: [] } const data = buildSemanticTokens(document) return { data } -}) +} -documents.onDidChangeContent((change) => { +function handleDocumentChange(change: any) { const textDocument = change.document - const diagnostics = buildDiagnostics(textDocument) connection.sendDiagnostics({ uri: textDocument.uri, diagnostics }) -}) +} -connection.onRequest('shrimp/parseTree', (params: { uri: string }) => { +function handleCompletion(params: any) { + const keywords = ['if', 'else', 'do', 'end', 'and', 'or', 'true', 'false', 'null'] + + return keywords.map((keyword) => ({ + label: keyword, + kind: CompletionItemKind.Keyword, + })) +} + +function handleParseTree(params: { uri: string }) { connection.console.log(`🦐 Parse tree requested for: ${params.uri}`) const document = documents.get(params.uri) if (!document) return 'Document not found' @@ -72,9 +108,9 @@ connection.onRequest('shrimp/parseTree', (params: { uri: string }) => { } return formatted -}) +} -connection.onRequest('shrimp/bytecode', (params: { uri: string }) => { +function handleBytecode(params: { uri: string }) { connection.console.log(`🦐 Bytecode requested for: ${params.uri}`) const document = documents.get(params.uri) if (!document) return 'Document not found' @@ -100,6 +136,4 @@ connection.onRequest('shrimp/bytecode', (params: { uri: string }) => { // Strip ANSI color codes from error message too return `Compilation failed: ${errorMsg.replace(/\x1b\[[0-9;]*m/g, '')}` } -}) - -connection.listen() +} -- 2.50.1 From b651ff958364ccbfcd006f0f5ec6ca2176037f6c Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 4 Nov 2025 15:52:39 -0800 Subject: [PATCH 04/10] cool --- vscode-extension/.vscode/launch.json | 3 +- vscode-extension/.vscode/tasks.json | 12 ------- vscode-extension/README.md | 49 ++++++++++++++++++++++++++++ vscode-extension/example.sh | 13 ++++++++ vscode-extension/package.json | 5 +-- 5 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 vscode-extension/README.md create mode 100644 vscode-extension/example.sh diff --git a/vscode-extension/.vscode/launch.json b/vscode-extension/.vscode/launch.json index 92a7d04..b3decc9 100644 --- a/vscode-extension/.vscode/launch.json +++ b/vscode-extension/.vscode/launch.json @@ -6,7 +6,8 @@ "type": "extensionHost", "request": "launch", "args": [ - "--extensionDevelopmentPath=${workspaceFolder}" + "--extensionDevelopmentPath=${workspaceFolder}", + "--profile=Shrimp Dev" ], "outFiles": [ "${workspaceFolder}/client/dist/**/*.js", diff --git a/vscode-extension/.vscode/tasks.json b/vscode-extension/.vscode/tasks.json index cca534f..f1998c2 100644 --- a/vscode-extension/.vscode/tasks.json +++ b/vscode-extension/.vscode/tasks.json @@ -14,17 +14,5 @@ "kind": "build", "isDefault": true } - }, - { - "type": "shell", - "label": "bun: watch", - "command": "bun", - "args": ["run", "watch"], - "options": { - "cwd": "${workspaceFolder}" - }, - "problemMatcher": "$tsc-watch", - "isBackground": true } - ] } diff --git a/vscode-extension/README.md b/vscode-extension/README.md new file mode 100644 index 0000000..9c87c8e --- /dev/null +++ b/vscode-extension/README.md @@ -0,0 +1,49 @@ +# Shrimp VSCode Extension + +Language support for Shrimp in VSCode. This README is for probablycorey and defunkt. + +**What it provides:** + +- Syntax highlighting and semantic tokens +- Language server with error diagnostics +- Commands: "Show Parse Tree" (Alt+K Alt+I) and "Show Bytecode" (Alt+K Alt+,) +- `.sh` file association + +## Development Workflow + +**Developing the extension:** + +1. Open `vscode-extension/` in VSCode +2. Run `bun run watch` in a terminal (keeps it compiling as you make changes) +3. Use **Run > Start Debugging** to launch Extension Development Host +4. Make changes to the code +5. Press **Cmd+R** (or Ctrl+R) in the Extension Development Host window to reload +6. Repeat steps 4-5 + +The `.vscode/launch.json` is configured to compile before launching and use a separate "Shrimp Dev" profile. This means you can have the extension installed in your main VSCode while developing without conflicts. + +**Installing for daily use:** + +Run `bun run build-and-install` to build a VSIX and install it in your current VSCode profile. This lets you use the extension when working on Shrimp scripts outside of development mode. + +## Project Structure + +The extension has two parts: a **client** (`client/src/extension.ts`) that registers commands and starts the language server, and a **server** (`server/src/`) that implements the Language Server Protocol for diagnostics and semantic highlighting. + +Both compile to their respective `dist/` folders. + +## Next Steps + +**Autocomplete:** + +- [ ] Identifiers in scope +- [ ] Globals from the prelude (including native functions) +- [ ] Imports +- [ ] Dot-get properties +- [ ] Function argument completion + +**Other features:** + +- [ ] Better syntax coloring +- [ ] Run shortcut - command to execute the current Shrimp file +- [ ] REPL integration diff --git a/vscode-extension/example.sh b/vscode-extension/example.sh new file mode 100644 index 0000000..41e61ba --- /dev/null +++ b/vscode-extension/example.sh @@ -0,0 +1,13 @@ +# This just has some stuff I use to make sure the extension is working! + +like-a-function = do x y z: + echo 'This is a function with parameters: $x, $y, $z' +end + +value = if true: + 'This is true!' +else: + 'This is false!' +end + +echo 'value is $(value)' \ No newline at end of file diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 0dfdac0..e0f53ea 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -63,10 +63,11 @@ "vscode:prepublish": "bun run package", "compile": "bun run compile:client && bun run compile:server", "compile:client": "bun build client/src/extension.ts --outdir client/dist --target node --format cjs --external vscode", - "compile:server": "bun build server/src/server.ts --outdir server/dist --target node --format cjs --external vscode-languageserver --external vscode-languageserver-textdocument", + "compile:server": "bun build server/src/server.ts --outdir server/dist --target node --format cjs", "watch": "bun run compile:client --watch", "package": "bun run compile:client --minify && bun run compile:server --minify", - "check-types": "tsc --noEmit" + "check-types": "tsc --noEmit", + "build-and-install": "bun run package && bunx @vscode/vsce package --allow-missing-repository && code --install-extension shrimp-*.vsix" }, "dependencies": { "vscode-languageclient": "^9.0.1", -- 2.50.1 From e49583d9591204f9eaeecc3ec77c803c38151dd2 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 4 Nov 2025 16:25:22 -0800 Subject: [PATCH 05/10] Add run! --- vscode-extension/README.md | 4 ++-- vscode-extension/client/src/extension.ts | 26 ++++++++++++++++++++++++ vscode-extension/package.json | 19 +++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/vscode-extension/README.md b/vscode-extension/README.md index 9c87c8e..7218f5c 100644 --- a/vscode-extension/README.md +++ b/vscode-extension/README.md @@ -6,7 +6,7 @@ Language support for Shrimp in VSCode. This README is for probablycorey and defu - Syntax highlighting and semantic tokens - Language server with error diagnostics -- Commands: "Show Parse Tree" (Alt+K Alt+I) and "Show Bytecode" (Alt+K Alt+,) +- Commands: "Show Parse Tree" (Alt+K Alt+I), "Show Bytecode" (Alt+K Alt+,), and "Run File" (Cmd+R) - `.sh` file association ## Development Workflow @@ -45,5 +45,5 @@ Both compile to their respective `dist/` folders. **Other features:** - [ ] Better syntax coloring -- [ ] Run shortcut - command to execute the current Shrimp file - [ ] REPL integration +- [ ] Bundle shrimp binary with extension (currently uses `shrimp.binaryPath` setting) diff --git a/vscode-extension/client/src/extension.ts b/vscode-extension/client/src/extension.ts index 7b32915..70d7c6b 100644 --- a/vscode-extension/client/src/extension.ts +++ b/vscode-extension/client/src/extension.ts @@ -69,6 +69,32 @@ export function activate(context: vscode.ExtensionContext) { await vscode.window.showTextDocument(doc, { preview: false }) }) ) + + // Command: Run File + context.subscriptions.push( + vscode.commands.registerCommand('shrimp.run', async () => { + const editor = vscode.window.activeTextEditor + if (!editor || editor.document.languageId !== 'shrimp') { + vscode.window.showErrorMessage('No active Shrimp file') + return + } + + // Auto-save before running + await editor.document.save() + + // Get binary path from settings + const config = vscode.workspace.getConfiguration('shrimp') + const binaryPath = config.get('binaryPath', 'shrimp') + + // Get the file path + const filePath = editor.document.uri.fsPath + + // Create or show terminal + const terminal = vscode.window.createTerminal('Shrimp') + terminal.show() + terminal.sendText(`${binaryPath} "${filePath}"`) + }) + ) } export function deactivate() {} diff --git a/vscode-extension/package.json b/vscode-extension/package.json index e0f53ea..2bc3b25 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -29,6 +29,16 @@ "editor.semanticHighlighting.enabled": true } }, + "configuration": { + "title": "Shrimp", + "properties": { + "shrimp.binaryPath": { + "type": "string", + "default": "shrimp", + "description": "Path to the shrimp binary" + } + } + }, "commands": [ { "command": "shrimp.showParseTree", @@ -37,6 +47,10 @@ { "command": "shrimp.showBytecode", "title": "Shrimp: Show Bytecode" + }, + { + "command": "shrimp.run", + "title": "Shrimp: Run File" } ], "keybindings": [ @@ -49,6 +63,11 @@ "command": "shrimp.showBytecode", "key": "alt+k alt+,", "when": "editorLangId == shrimp" + }, + { + "command": "shrimp.run", + "key": "cmd+r", + "when": "editorLangId == shrimp" } ] }, -- 2.50.1 From d074b59a89334bf94a07febe8eec684ea6174d23 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 5 Nov 2025 10:17:26 -0800 Subject: [PATCH 06/10] wip --- vscode-extension/example.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/vscode-extension/example.sh b/vscode-extension/example.sh index 41e61ba..b5b4a64 100644 --- a/vscode-extension/example.sh +++ b/vscode-extension/example.sh @@ -10,4 +10,16 @@ else: 'This is false!' end -echo 'value is $(value)' \ No newline at end of file +echo 'value is $(value)' + +html lang=en do: + head do: + meta charset='UTF-8' + meta name='viewport' content='width=device-width, initial-scale=1.0' + end + + body do: + h1 'Hello, World!' + p 'This is a sample HTML generated by the extension.' + end +end \ No newline at end of file -- 2.50.1 From 7589518ca7080b57287fd5a9fa0f4259b23c902d Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 5 Nov 2025 12:22:02 -0800 Subject: [PATCH 07/10] wip --- vscode-extension/.gitignore | 2 +- vscode-extension/server/src/semanticTokens.ts | 114 +++++++++++++++--- vscode-extension/server/src/server.ts | 43 ++++--- 3 files changed, 122 insertions(+), 37 deletions(-) diff --git a/vscode-extension/.gitignore b/vscode-extension/.gitignore index 3a53163..e3eaf16 100644 --- a/vscode-extension/.gitignore +++ b/vscode-extension/.gitignore @@ -1,4 +1,4 @@ node_modules client/dist server/dist -*.vsix +*.vsix \ No newline at end of file diff --git a/vscode-extension/server/src/semanticTokens.ts b/vscode-extension/server/src/semanticTokens.ts index cd2ac28..08ab812 100644 --- a/vscode-extension/server/src/semanticTokens.ts +++ b/vscode-extension/server/src/semanticTokens.ts @@ -2,7 +2,11 @@ import { parser } from '../../../src/parser/shrimp' import * as Terms from '../../../src/parser/shrimp.terms' import { SyntaxNode } from '@lezer/common' import { TextDocument } from 'vscode-languageserver-textdocument' -import { SemanticTokensBuilder, SemanticTokenTypes } from 'vscode-languageserver/node' +import { + SemanticTokensBuilder, + SemanticTokenTypes, + SemanticTokenModifiers, +} from 'vscode-languageserver/node' export const TOKEN_TYPES = [ SemanticTokenTypes.function, @@ -14,9 +18,14 @@ export const TOKEN_TYPES = [ SemanticTokenTypes.parameter, SemanticTokenTypes.property, SemanticTokenTypes.regexp, + SemanticTokenTypes.comment, ] -export const TOKEN_MODIFIERS: string[] = [] +export const TOKEN_MODIFIERS = [ + SemanticTokenModifiers.declaration, + SemanticTokenModifiers.modification, + SemanticTokenModifiers.readonly, +] export function buildSemanticTokens(document: TextDocument): number[] { const text = document.getText() @@ -30,12 +39,12 @@ export function buildSemanticTokens(document: TextDocument): number[] { // Walk the tree and collect tokens function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTokensBuilder) { - const tokenType = getTokenType(node.type.id) + const tokenInfo = getTokenType(node.type.id, node.parent?.type.id) - if (tokenType !== undefined) { + if (tokenInfo !== undefined) { const start = document.positionAt(node.from) const length = node.to - node.from - builder.push(start.line, start.character, length, tokenType, 0) + builder.push(start.line, start.character, length, tokenInfo.type, tokenInfo.modifiers) } let child = node.firstChild @@ -45,25 +54,54 @@ function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTok } } -// Map Lezer node IDs to semantic token type indices -function getTokenType(nodeTypeId: number): number | undefined { +// Map Lezer node IDs to semantic token type indices and modifiers +function getTokenType(nodeTypeId: number, parentTypeId?: number): { type: number; modifiers: number } | undefined { switch (nodeTypeId) { - case Terms.FunctionCall: - case Terms.FunctionDef: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.function) - case Terms.Identifier: + // Check parent to determine if this identifier is a function call or variable + if (parentTypeId === Terms.FunctionCall) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.function), + modifiers: 0, + } + } + if (parentTypeId === Terms.FunctionDef) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.function), + modifiers: getModifierBits(SemanticTokenModifiers.declaration), + } + } + if (parentTypeId === Terms.FunctionCallOrIdentifier) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.function), + modifiers: 0, + } + } + // Otherwise it's a regular variable + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), + modifiers: 0, + } + case Terms.AssignableIdentifier: - case Terms.FunctionCallOrIdentifier: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.variable) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), + modifiers: getModifierBits(SemanticTokenModifiers.modification), + } case Terms.String: case Terms.StringFragment: case Terms.Word: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.string) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.string), + modifiers: 0, + } case Terms.Number: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.number) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.number), + modifiers: 0, + } case Terms.Plus: case Terms.Minus: @@ -79,23 +117,59 @@ function getTokenType(nodeTypeId: number): number | undefined { case Terms.Modulo: case Terms.And: case Terms.Or: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.operator) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.operator), + modifiers: 0, + } case Terms.keyword: case Terms.Do: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.keyword) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.keyword), + modifiers: 0, + } case Terms.Params: case Terms.NamedParam: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.parameter) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.parameter), + modifiers: 0, + } case Terms.DotGet: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.property) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), + modifiers: 0, + } case Terms.Regex: - return TOKEN_TYPES.indexOf(SemanticTokenTypes.regexp) + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.regexp), + modifiers: 0, + } + + case Terms.Comment: + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.comment), + modifiers: 0, + } + + case Terms.NamedArg: + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), + modifiers: 0, + } default: return undefined } } + +const getModifierBits = (...modifiers: SemanticTokenModifiers[]): number => { + let bits = 0 + for (const modifier of modifiers) { + const index = TOKEN_MODIFIERS.indexOf(modifier) + if (index !== -1) bits |= 1 << index + } + return bits +} diff --git a/vscode-extension/server/src/server.ts b/vscode-extension/server/src/server.ts index cc97e05..194b35e 100644 --- a/vscode-extension/server/src/server.ts +++ b/vscode-extension/server/src/server.ts @@ -86,27 +86,38 @@ function handleParseTree(params: { uri: string }) { const text = document.getText() const tree = parser.parse(text) - const treeString = tree.toString() + const cursor = tree.cursor() - // Format with indentation, without parentheses let formatted = '' - let indent = 0 - for (let i = 0; i < treeString.length; i++) { - const char = treeString[i] - if (char === '(') { - formatted += '\n' - indent++ - formatted += ' '.repeat(indent) - } else if (char === ')') { - indent-- - } else if (char === ',') { - formatted += '\n' - formatted += ' '.repeat(indent) - } else { - formatted += char + let depth = 0 + + const printNode = () => { + const nodeName = cursor.name + const nodeText = text.slice(cursor.from, cursor.to) + const indent = ' '.repeat(depth) + + formatted += `${indent}${nodeName}` + if (nodeText) { + const escapedText = nodeText.replace(/\n/g, '\\n').replace(/\r/g, '\\r') + formatted += ` "${escapedText}"` + } + formatted += '\n' + } + + const traverse = (): void => { + printNode() + + if (cursor.firstChild()) { + depth++ + do { + traverse() + } while (cursor.nextSibling()) + cursor.parent() + depth-- } } + traverse() return formatted } -- 2.50.1 From fa67c26c0a611ae2b897d9fdab1960f1f482faaf Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 5 Nov 2025 13:31:31 -0800 Subject: [PATCH 08/10] wip --- vscode-extension/package.json | 2 +- vscode-extension/server/src/semanticTokens.ts | 51 +++++++++++-------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 2bc3b25..0b5d6bb 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -83,7 +83,7 @@ "compile": "bun run compile:client && bun run compile:server", "compile:client": "bun build client/src/extension.ts --outdir client/dist --target node --format cjs --external vscode", "compile:server": "bun build server/src/server.ts --outdir server/dist --target node --format cjs", - "watch": "bun run compile:client --watch", + "watch": "bun run compile:client --watch & bun run compile:server --watch", "package": "bun run compile:client --minify && bun run compile:server --minify", "check-types": "tsc --noEmit", "build-and-install": "bun run package && bunx @vscode/vsce package --allow-missing-repository && code --install-extension shrimp-*.vsix" diff --git a/vscode-extension/server/src/semanticTokens.ts b/vscode-extension/server/src/semanticTokens.ts index 08ab812..f7f60b7 100644 --- a/vscode-extension/server/src/semanticTokens.ts +++ b/vscode-extension/server/src/semanticTokens.ts @@ -55,10 +55,13 @@ function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTok } // Map Lezer node IDs to semantic token type indices and modifiers -function getTokenType(nodeTypeId: number, parentTypeId?: number): { type: number; modifiers: number } | undefined { +function getTokenType( + nodeTypeId: number, + parentTypeId?: number +): { type: number; modifiers: number } | undefined { switch (nodeTypeId) { case Terms.Identifier: - // Check parent to determine if this identifier is a function call or variable + // Check parent to determine context if (parentTypeId === Terms.FunctionCall) { return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.function), @@ -77,12 +80,36 @@ function getTokenType(nodeTypeId: number, parentTypeId?: number): { type: number modifiers: 0, } } + if (parentTypeId === Terms.Params) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.parameter), + modifiers: 0, + } + } + if (parentTypeId === Terms.DotGet) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), + modifiers: 0, + } + } // Otherwise it's a regular variable return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), modifiers: 0, } + case Terms.IdentifierBeforeDot: + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), + modifiers: 0, + } + + case Terms.NamedArgPrefix: + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), + modifiers: 0, + } + case Terms.AssignableIdentifier: return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), @@ -124,24 +151,12 @@ function getTokenType(nodeTypeId: number, parentTypeId?: number): { type: number case Terms.keyword: case Terms.Do: + case Terms.colon: return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.keyword), modifiers: 0, } - case Terms.Params: - case Terms.NamedParam: - return { - type: TOKEN_TYPES.indexOf(SemanticTokenTypes.parameter), - modifiers: 0, - } - - case Terms.DotGet: - return { - type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), - modifiers: 0, - } - case Terms.Regex: return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.regexp), @@ -154,12 +169,6 @@ function getTokenType(nodeTypeId: number, parentTypeId?: number): { type: number modifiers: 0, } - case Terms.NamedArg: - return { - type: TOKEN_TYPES.indexOf(SemanticTokenTypes.property), - modifiers: 0, - } - default: return undefined } -- 2.50.1 From 03c7bfee399a766fd6fb0b1e6ab5cd1a1a4c5075 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 5 Nov 2025 14:48:12 -0800 Subject: [PATCH 09/10] Track that scope! --- .../server/src/scopeTracker.test.ts | 145 ++++++++++++++++++ vscode-extension/server/src/scopeTracker.ts | 135 ++++++++++++++++ vscode-extension/server/src/semanticTokens.ts | 53 ++++++- 3 files changed, 325 insertions(+), 8 deletions(-) create mode 100644 vscode-extension/server/src/scopeTracker.test.ts create mode 100644 vscode-extension/server/src/scopeTracker.ts diff --git a/vscode-extension/server/src/scopeTracker.test.ts b/vscode-extension/server/src/scopeTracker.test.ts new file mode 100644 index 0000000..9604e36 --- /dev/null +++ b/vscode-extension/server/src/scopeTracker.test.ts @@ -0,0 +1,145 @@ +import { test, expect, describe } from 'bun:test' +import { ScopeTracker } from './scopeTracker' +import { TextDocument } from 'vscode-languageserver-textdocument' +import { parser } from '../../../src/parser/shrimp' +import * as Terms from '../../../src/parser/shrimp.terms' + +describe('ScopeTracker', () => { + test('top-level assignment is in scope', () => { + const code = 'x = 5\necho x' + const { tree, tracker } = parseAndGetScope(code) + + // Find the 'x' identifier in 'echo x' + const identifiers: any[] = [] + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + identifiers.push(node.node) + } + }) + + // Second identifier should be the 'x' in 'echo x' + const xInEcho = identifiers[1] + expect(xInEcho).toBeDefined() + expect(tracker.isInScope('x', xInEcho)).toBe(true) + }) + + test('undeclared variable is not in scope', () => { + const code = 'echo x' + const { tree, tracker } = parseAndGetScope(code) + + // Find the 'x' identifier + let xNode: any = null + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + xNode = node.node + } + }) + + expect(xNode).toBeDefined() + expect(tracker.isInScope('x', xNode)).toBe(false) + }) + + test('function parameter is in scope inside function', () => { + const code = `greet = do name: + echo name +end` + const { tree, tracker } = parseAndGetScope(code) + + // Find all identifiers + const identifiers: any[] = [] + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + identifiers.push(node.node) + } + }) + + // Find the 'name' in 'echo name' (should be last identifier) + const nameInEcho = identifiers[identifiers.length - 1] + expect(tracker.isInScope('name', nameInEcho)).toBe(true) + }) + + test('assignment before usage is in scope', () => { + const code = `x = 5 +y = 10 +echo x y` + const { tree, tracker } = parseAndGetScope(code) + + // Find identifiers + const identifiers: any[] = [] + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + identifiers.push(node.node) + } + }) + + // Last two identifiers should be 'x' and 'y' in 'echo x y' + const xInEcho = identifiers[identifiers.length - 2] + const yInEcho = identifiers[identifiers.length - 1] + + expect(tracker.isInScope('x', xInEcho)).toBe(true) + expect(tracker.isInScope('y', yInEcho)).toBe(true) + }) + + test('assignment after usage is not in scope', () => { + const code = `echo x +x = 5` + const { tree, tracker } = parseAndGetScope(code) + + // Find the first 'x' identifier (in echo) + let xNode: any = null + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier && !xNode) { + xNode = node.node + } + }) + + expect(tracker.isInScope('x', xNode)).toBe(false) + }) + + test('nested function has access to outer scope', () => { + const code = `x = 5 +greet = do: + echo x +end` + const { tree, tracker } = parseAndGetScope(code) + + // Find all identifiers + const identifiers: any[] = [] + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + identifiers.push(node.node) + } + }) + + // Find the 'x' in 'echo x' (should be last identifier) + const xInEcho = identifiers[identifiers.length - 1] + expect(tracker.isInScope('x', xInEcho)).toBe(true) + }) + + test('inner function parameter shadows outer variable', () => { + const code = `x = 5 +greet = do x: + echo x +end` + const { tree, tracker } = parseAndGetScope(code) + + // Find all identifiers + const identifiers: any[] = [] + tree.topNode.cursor().iterate((node: any) => { + if (node.type.id === Terms.Identifier) { + identifiers.push(node.node) + } + }) + + // The 'x' in 'echo x' should have 'x' in scope (from parameter) + const xInEcho = identifiers[identifiers.length - 1] + expect(tracker.isInScope('x', xInEcho)).toBe(true) + }) +}) + +const parseAndGetScope = (code: string) => { + const document = TextDocument.create('test://test.sh', 'shrimp', 1, code) + const tree = parser.parse(code) + const tracker = new ScopeTracker(document) + return { document, tree, tracker } +} diff --git a/vscode-extension/server/src/scopeTracker.ts b/vscode-extension/server/src/scopeTracker.ts new file mode 100644 index 0000000..70ebf73 --- /dev/null +++ b/vscode-extension/server/src/scopeTracker.ts @@ -0,0 +1,135 @@ +import { SyntaxNode } from '@lezer/common' +import { TextDocument } from 'vscode-languageserver-textdocument' +import * as Terms from '../../../src/parser/shrimp.terms' + +/** + * Tracks variables in scope at a given position in the parse tree. + * Used to distinguish identifiers (in scope) from words (not in scope). + */ +export class ScopeTracker { + private document: TextDocument + private scopeCache = new Map>() + + constructor(document: TextDocument) { + this.document = document + } + + /** + * Check if a name is in scope at the given node's position. + */ + isInScope(name: string, node: SyntaxNode): boolean { + const scope = this.getScopeAt(node) + return scope.has(name) + } + + /** + * Get all variables in scope at the given node's position. + */ + private getScopeAt(node: SyntaxNode): Set { + const position = node.from + + // Check cache first + if (this.scopeCache.has(position)) { + return this.scopeCache.get(position)! + } + + const scope = new Set() + + // Find all containing function definitions + const containingFunctions = this.findContainingFunctions(node) + + // Collect scope from each containing function (inner to outer) + for (const fnNode of containingFunctions) { + this.collectParams(fnNode, scope) + this.collectAssignments(fnNode, position, scope) + } + + // Collect top-level assignments + const root = this.getRoot(node) + this.collectAssignments(root, position, scope) + + this.scopeCache.set(position, scope) + return scope + } + + /** + * Find all function definitions that contain the given node. + */ + private findContainingFunctions(node: SyntaxNode): SyntaxNode[] { + const functions: SyntaxNode[] = [] + let current = node.parent + + while (current) { + if (current.type.id === Terms.FunctionDef) { + functions.unshift(current) // Add to beginning for outer-to-inner order + } + current = current.parent + } + + return functions + } + + /** + * Get the root node of the tree. + */ + private getRoot(node: SyntaxNode): SyntaxNode { + let current = node + while (current.parent) { + current = current.parent + } + return current + } + + /** + * Collect parameter names from a function definition. + */ + private collectParams(fnNode: SyntaxNode, scope: Set) { + let child = fnNode.firstChild + while (child) { + if (child.type.id === Terms.Params) { + let param = child.firstChild + while (param) { + if (param.type.id === Terms.Identifier) { + const text = this.document.getText({ + start: this.document.positionAt(param.from), + end: this.document.positionAt(param.to), + }) + scope.add(text) + } + param = param.nextSibling + } + break + } + child = child.nextSibling + } + } + + /** + * Collect assignment names from a scope node that occur before the given position. + */ + private collectAssignments(scopeNode: SyntaxNode, beforePosition: number, scope: Set) { + const cursor = scopeNode.cursor() + + cursor.iterate((node) => { + // Stop if we've passed the position we're checking + if (node.from >= beforePosition) return false + + if (node.type.id === Terms.Assign) { + const assignNode = node.node + const child = assignNode.firstChild + if (child?.type.id === Terms.AssignableIdentifier) { + const text = this.document.getText({ + start: this.document.positionAt(child.from), + end: this.document.positionAt(child.to), + }) + scope.add(text) + } + } + + // Don't descend into nested functions unless it's the current scope + if (node.type.id === Terms.FunctionDef && node.node !== scopeNode) { + return false + } + }) + } +} diff --git a/vscode-extension/server/src/semanticTokens.ts b/vscode-extension/server/src/semanticTokens.ts index f7f60b7..a01b06a 100644 --- a/vscode-extension/server/src/semanticTokens.ts +++ b/vscode-extension/server/src/semanticTokens.ts @@ -7,6 +7,7 @@ import { SemanticTokenTypes, SemanticTokenModifiers, } from 'vscode-languageserver/node' +import { ScopeTracker } from './scopeTracker' export const TOKEN_TYPES = [ SemanticTokenTypes.function, @@ -31,15 +32,21 @@ export function buildSemanticTokens(document: TextDocument): number[] { const text = document.getText() const tree = parser.parse(text) const builder = new SemanticTokensBuilder() + const scopeTracker = new ScopeTracker(document) - walkTree(tree.topNode, document, builder) + walkTree(tree.topNode, document, builder, scopeTracker) return builder.build().data } // Walk the tree and collect tokens -function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTokensBuilder) { - const tokenInfo = getTokenType(node.type.id, node.parent?.type.id) +function walkTree( + node: SyntaxNode, + document: TextDocument, + builder: SemanticTokensBuilder, + scopeTracker: ScopeTracker +) { + const tokenInfo = getTokenType(node, document, scopeTracker) if (tokenInfo !== undefined) { const start = document.positionAt(node.from) @@ -49,16 +56,29 @@ function walkTree(node: SyntaxNode, document: TextDocument, builder: SemanticTok let child = node.firstChild while (child) { - walkTree(child, document, builder) + walkTree(child, document, builder, scopeTracker) child = child.nextSibling } } // Map Lezer node IDs to semantic token type indices and modifiers +type TokenInfo = { type: number; modifiers: number } | undefined function getTokenType( - nodeTypeId: number, - parentTypeId?: number -): { type: number; modifiers: number } | undefined { + node: SyntaxNode, + document: TextDocument, + scopeTracker: ScopeTracker +): TokenInfo { + const nodeTypeId = node.type.id + const parentTypeId = node.parent?.type.id + + // Special case for now, eventually keywords will go away + if (node.type.name === 'keyword') { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.keyword), + modifiers: 0, + } + } + switch (nodeTypeId) { case Terms.Identifier: // Check parent to determine context @@ -92,6 +112,24 @@ function getTokenType( modifiers: 0, } } + + // Special case: Identifier in PositionalArg - check scope + if (parentTypeId === Terms.PositionalArg) { + const identifierText = document.getText({ + start: document.positionAt(node.from), + end: document.positionAt(node.to), + }) + + // If not in scope, treat as string (like a Word) + if (!scopeTracker.isInScope(identifierText, node)) { + return { + type: TOKEN_TYPES.indexOf(SemanticTokenTypes.string), + modifiers: 0, + } + } + // If in scope, fall through to treat as variable + } + // Otherwise it's a regular variable return { type: TOKEN_TYPES.indexOf(SemanticTokenTypes.variable), @@ -149,7 +187,6 @@ function getTokenType( modifiers: 0, } - case Terms.keyword: case Terms.Do: case Terms.colon: return { -- 2.50.1 From dec2f2d0946b3fecd908e57290d88cabeda9010c Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 5 Nov 2025 16:20:20 -0800 Subject: [PATCH 10/10] ok --- src/parser/shrimp.terms.ts | 62 +++++++++++++++++++------------------- src/parser/shrimp.ts | 18 +++++------ 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/parser/shrimp.terms.ts b/src/parser/shrimp.terms.ts index bcdf7b8..716ef1c 100644 --- a/src/parser/shrimp.terms.ts +++ b/src/parser/shrimp.terms.ts @@ -31,36 +31,36 @@ export const DotGet = 29, Number = 30, ParenExpr = 31, - FunctionCallOrIdentifier = 32, - BinOp = 33, - String = 34, - StringFragment = 35, - Interpolation = 36, - EscapeSeq = 37, - Boolean = 38, - Regex = 39, - Dict = 40, - NamedArg = 41, - NamedArgPrefix = 42, - FunctionDef = 43, - Params = 44, - NamedParam = 45, - Null = 46, - colon = 47, - CatchExpr = 48, - keyword = 69, - Block = 50, - FinallyExpr = 51, - Underscore = 54, - Array = 55, - ConditionalOp = 56, - PositionalArg = 57, - WhileExpr = 59, - FunctionCallWithBlock = 61, - TryExpr = 62, - Throw = 64, - IfExpr = 66, - ElseIfExpr = 68, - ElseExpr = 70, + IfExpr = 32, + keyword = 70, + ConditionalOp = 34, + String = 35, + StringFragment = 36, + Interpolation = 37, + EscapeSeq = 38, + Boolean = 39, + Regex = 40, + Dict = 41, + NamedArg = 42, + NamedArgPrefix = 43, + FunctionDef = 44, + Params = 45, + NamedParam = 46, + Null = 47, + colon = 48, + CatchExpr = 49, + Block = 51, + FinallyExpr = 52, + Underscore = 55, + Array = 56, + ElseIfExpr = 57, + ElseExpr = 59, + FunctionCallOrIdentifier = 60, + BinOp = 61, + PositionalArg = 62, + WhileExpr = 64, + FunctionCallWithBlock = 66, + TryExpr = 67, + Throw = 69, CompoundAssign = 71, Assign = 72 diff --git a/src/parser/shrimp.ts b/src/parser/shrimp.ts index c8c217c..afd774f 100644 --- a/src/parser/shrimp.ts +++ b/src/parser/shrimp.ts @@ -4,24 +4,24 @@ import {operatorTokenizer} from "./operatorTokenizer" import {tokenizer, specializeKeyword} from "./tokenizer" import {trackScope} from "./scopeTracker" import {highlighting} from "./highlight" -const spec_Identifier = {__proto__:null,null:92, catch:98, finally:104, end:106, while:120, try:126, throw:130, if:134, else:138} +const spec_Identifier = {__proto__:null,if:66, null:94, catch:100, finally:106, end:108, else:116, while:130, try:136, throw:140} export const parser = LRParser.deserialize({ version: 14, - states: "9OQYQbOOO#zQcO'#C|O$zOSO'#DOOOQa'#DU'#DUO&TQbO'#DeO'iQcO'#E]OOQa'#E]'#E]O(lQcO'#E]O)nQcO'#E[O*UQRO'#C}O+eQcO'#EWO+uQcO'#EWO,PQbO'#C{O,wOpO'#CyOOQ`'#EX'#EXO,|QbO'#EWO-WQRO'#DuOOQ`'#EW'#EWO-lQQO'#EVOOQ`'#EV'#EVOOQ`'#Dw'#DwQYQbOOO-tQbO'#DXO.PQbO'#DiO.tQQO'#DlO.PQbO'#DnO.PQbO'#DpO.yQbO'#DVOOQa'#E['#E[OOQ`'#Dg'#DgOOQ`'#Ek'#EkOOQ`'#EP'#EPO/TQbO,59dO/}QbO'#DQO0VQWO'#DROOOO'#E_'#E_OOOO'#Dx'#DxO0kOSO,59jOOQa,59j,59jOOQ`'#Dy'#DyO0yQbO,5:PO1QQQO,59pOOQa,5:P,5:PO1]QbO,5:PO1gQbO,5:bO.PQbO,59iO.PQbO,59iO.PQbO,59iO.PQbO,5:QO.PQbO,5:QO.PQbO,5:QO1zQRO,59gO2RQRO,59gO2dQRO,59gO2_QQO,59gO2oQQO,59gO2wObO,59eO3SQbO'#EQO3_QbO,59cO3yQbO,5:VO1gQbO,5:aOOQ`,5:q,5:qOOQ`-E7u-E7uOOQ`'#Dz'#DzO4aQbO'#DYO4lQbO'#DZOOQO'#D{'#D{O4dQQO'#DYO4zQQO,59sO5kQRO,5:TO5rQRO,5:TO3yQbO,5:WO5}QcO,5:YO6yQcO,5:YO7ZQcO,5:YO7eQRO,5:[O7lQRO,5:[OOQ`,59q,59qOOQ`-E7}-E7}OOOO,59l,59lOOOO,59m,59mOOOO-E7v-E7vOOQa1G/U1G/UOOQ`-E7w-E7wO7wQQO1G/[OOQa1G/k1G/kO8SQbO1G/kOOQO'#D}'#D}O7wQQO1G/[OOQa1G/[1G/[OOQ`'#EO'#EOO8SQbO1G/kOOQ`1G/|1G/|OOQa1G/T1G/TO9OQcO1G/TO9YQcO1G/TO9dQcO1G/TOOQa1G/l1G/lO;YQcO1G/lO;aQcO1G/lO;hQcO1G/lOOQa1G/R1G/ROOQa1G/P1G/PO!dQbO'#C|O;oQbO'#CxOOQ`,5:l,5:lOOQ`-E8O-E8OOOQ`'#D`'#D`O;|QbO'#D`ORQbO7+%VOOQa7+%V7+%VOOQO-E7{-E7{OOQ`-E7|-E7|OOQ`'#D|'#D|O>]QQO'#D|O>bQbO'#EhOOQ`,59z,59zO?UQbO'#D^O?ZQQO'#DaOOQ`7+%]7+%]O?`QbO7+%]O?eQbO7+%]O?mQbO7+$yO?xQbO7+$yO@iQbO7+%ZOOQ`7+%^7+%^O@nQbO7+%^O@sQbO7+%^O@{QbO7+%bOOQa<cAN>cOOQ`AN>PAN>POBcQbOAN>POBhQbOAN>POOQ`AN>dAN>dOOQ`-E8P-E8POOQ`AN>hAN>hOBpQbOAN>hO.PQbO,5:^O3yQbO,5:`OOQ`7+%O7+%OOOQ`G23kG23kOBuQbOG23kPBXQbO'#DrOOQ`G24SG24SOBzQRO1G/xOCRQRO1G/xOOQ`1G/z1G/zOOQ`LD)VLD)VO3yQbO7+%dOOQ`<]QbO1G/vOOQ`1G/{1G/{OOQ`-E7x-E7xO>hQQO,59uOOQO,59v,59vOOQO-E7y-E7yO>pQbO1G/`O3vQbO1G/SO3vQbO1G/tO?TQbO1G/wO?`QQO7+$wOOQa7+$w7+$wO?kQbO7+%WOOQa7+%W7+%WOOQO-E7{-E7{OOQ`-E7|-E7|OOQ`'#D|'#D|O?uQQO'#D|O?zQbO'#EiOOQ`,59{,59{O@kQbO'#D_O@pQQO'#DbOOQ`7+%b7+%bO@uQbO7+%bO@zQbO7+%bOASQbO7+$zOA_QbO7+$zOA{QbO7+$nOBTQbO7+%`OOQ`7+%c7+%cOBYQbO7+%cOB_QbO7+%cOOQa<hAN>hOOQ`AN>QAN>QOCuQbOAN>QOCzQbOAN>QOOQ`-E7}-E7}OOQ`AN=tAN=tODSQbOAN=tO-[QbO,5:RO3vQbO,5:TOOQ`AN>iAN>iOOQ`7+%P7+%POOQ`G23lG23lODXQbOG23lPD^QbO'#DgOOQ`G23`G23`ODcQQO1G/mOOQ`1G/o1G/oOOQ`LD)WLD)WO3vQbO7+%XOOQ`<c#Y#o,w#o;'S#{;'S;=`$d<%lO#{U>j[vQsSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^?g[#UWsSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^@d[#WWsSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^Aa^#VWsSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#f,w#f#gB]#g#o,w#o;'S#{;'S;=`$d<%lO#{UBb^sSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#i,w#i#j=b#j#o,w#o;'S#{;'S;=`$d<%lO#{UCeU![QsSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~C|O#`~", + tokenData: "C|~R|OX#{XY$jYZ%TZp#{pq$jqs#{st%ntu'tuw#{wx'yxy(Oyz(iz{#{{|)S|}#{}!O+v!O!P#{!P!Q.]!Q![)q![!]6x!]!^%T!^!}#{!}#O7c#O#P9X#P#Q9^#Q#R#{#R#S9w#S#T#{#T#Y,w#Y#Z:b#Z#b,w#b#c?`#c#f,w#f#g@]#g#h,w#h#iAY#i#o,w#o#p#{#p#qC^#q;'S#{;'S;=`$d<%l~#{~O#{~~CwS$QUtSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{S$gP;=`<%l#{^$qUtS!xYOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U%[UtS#[QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^%sWtSOp#{pq&]qt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^&dZiYtSOY&]YZ#{Zt&]tu'Vuw&]wx'Vx#O&]#O#P'V#P;'S&];'S;=`'n<%lO&]Y'[SiYOY'VZ;'S'V;'S;=`'h<%lO'VY'kP;=`<%l'V^'qP;=`<%l&]~'yO#T~~(OO#R~U(VUtS!}QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(pUtS#_QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U)XWtSOt#{uw#{x!Q#{!Q![)q![#O#{#P;'S#{;'S;=`$d<%lO#{U)xYtSnQOt#{uw#{x!O#{!O!P*h!P!Q#{!Q![)q![#O#{#P;'S#{;'S;=`$d<%lO#{U*mWtSOt#{uw#{x!Q#{!Q![+V![#O#{#P;'S#{;'S;=`$d<%lO#{U+^WtSnQOt#{uw#{x!Q#{!Q![+V![#O#{#P;'S#{;'S;=`$d<%lO#{U+{^tSOt#{uw#{x}#{}!O,w!O!Q#{!Q![)q![!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{U,|[tSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{U-yU{QtSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U.bWtSOt#{uw#{x!P#{!P!Q.z!Q#O#{#P;'S#{;'S;=`$d<%lO#{U/P^tSOY/{YZ#{Zt/{tu1Ouw/{wx1Ox!P/{!P!Q#{!Q!}/{!}#O5q#O#P3^#P;'S/{;'S;=`6r<%lO/{U0S^tSxQOY/{YZ#{Zt/{tu1Ouw/{wx1Ox!P/{!P!Q3s!Q!}/{!}#O5q#O#P3^#P;'S/{;'S;=`6r<%lO/{Q1TXxQOY1OZ!P1O!P!Q1p!Q!}1O!}#O2_#O#P3^#P;'S1O;'S;=`3m<%lO1OQ1sP!P!Q1vQ1{UxQ#Z#[1v#]#^1v#a#b1v#g#h1v#i#j1v#m#n1vQ2bVOY2_Z#O2_#O#P2w#P#Q1O#Q;'S2_;'S;=`3W<%lO2_Q2zSOY2_Z;'S2_;'S;=`3W<%lO2_Q3ZP;=`<%l2_Q3aSOY1OZ;'S1O;'S;=`3m<%lO1OQ3pP;=`<%l1OU3xWtSOt#{uw#{x!P#{!P!Q4b!Q#O#{#P;'S#{;'S;=`$d<%lO#{U4ibtSxQOt#{uw#{x#O#{#P#Z#{#Z#[4b#[#]#{#]#^4b#^#a#{#a#b4b#b#g#{#g#h4b#h#i#{#i#j4b#j#m#{#m#n4b#n;'S#{;'S;=`$d<%lO#{U5v[tSOY5qYZ#{Zt5qtu2_uw5qwx2_x#O5q#O#P2w#P#Q/{#Q;'S5q;'S;=`6l<%lO5qU6oP;=`<%l5qU6uP;=`<%l/{U7PUtS!QQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U7jW#ZQtSOt#{uw#{x!_#{!_!`8S!`#O#{#P;'S#{;'S;=`$d<%lO#{U8XVtSOt#{uw#{x#O#{#P#Q8n#Q;'S#{;'S;=`$d<%lO#{U8uU#YQtSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~9^O#U~U9eU#^QtSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U:OUtS!XQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U:g]tSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#U;`#U#o,w#o;'S#{;'S;=`$d<%lO#{U;e^tSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#`,w#`#ac#Y#o,w#o;'S#{;'S;=`$d<%lO#{U>j[wQtSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^?g[#VWtSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^@d[#XWtSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#o,w#o;'S#{;'S;=`$d<%lO#{^Aa^#WWtSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#f,w#f#gB]#g#o,w#o;'S#{;'S;=`$d<%lO#{UBb^tSOt#{uw#{x}#{}!O,w!O!_#{!_!`-r!`#O#{#P#T#{#T#i,w#i#j=b#j#o,w#o;'S#{;'S;=`$d<%lO#{UCeU!aQtSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~C|O#a~", tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!|~~", 11)], topRules: {"Program":[0,26]}, specialized: [{term: 20, get: (value: any, stack: any) => (specializeKeyword(value, stack) << 1), external: specializeKeyword},{term: 20, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}], - tokenPrec: 1578 + tokenPrec: 1634 }) -- 2.50.1