From d5906e552c3aef329a070015ed8a5da3a12f31db Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Thu, 22 Jan 2026 02:27:36 -0600 Subject: [PATCH] Add better crosslang --- vscode-extension/package.json | 13 +- .../syntaxes/bcrosslang.tmLanguage.json | 137 ++++++++++++++++++ .../syntaxes/crosslang.tmLanguage.json | 2 +- 3 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 vscode-extension/syntaxes/bcrosslang.tmLanguage.json diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 6f2fcb4..92a6afe 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -17,7 +17,14 @@ "aliases": ["CrossLang", "crosslang"], "extensions": [".tcross"], "configuration": "./language-configuration.json" - },{ + }, + { + "id": "bcrosslang", + "aliases": ["CrossLang", "better-crosslang"], + "extensions": [".btcross"], + "configuration": "./language-configuration.json" + } + ,{ "id": "crossasm", "aliases": ["CrossAsm", "crossasm"], "extensions": [".tcasm"], @@ -27,6 +34,10 @@ "language": "crosslang", "scopeName": "source.crosslang", "path": "./syntaxes/crosslang.tmLanguage.json" + },{ + "language": "bcrosslang", + "scopeName": "source.bcrosslang", + "path": "./syntaxes/bcrosslang.tmLanguage.json" },{ "language": "crossasm", "scopeName": "source.crossasm", diff --git a/vscode-extension/syntaxes/bcrosslang.tmLanguage.json b/vscode-extension/syntaxes/bcrosslang.tmLanguage.json new file mode 100644 index 0000000..a946907 --- /dev/null +++ b/vscode-extension/syntaxes/bcrosslang.tmLanguage.json @@ -0,0 +1,137 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "Better CrossLang", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#keywords" + }, + { + "include": "#chars" + }, + { + "include": "#operators" + }, + { + "include": "#function" + }, + { + "include": "#identifier" + }, + { + "include": "#consts" + }, + { + "include": "#double" + }, + { + "include": "#long" + }, + { + "include": "#strings" + } + ], + "repository": { + "comment": { + "patterns": [{ + "name": "comment.line.double-slash.bcrosslang", + "begin": "//", + "end": "\\n" + }, + { + "name": "comment.block.bcrosslang", + "begin": "\\/\\*", + "end": "\\*\\/" + }, + { + "name": "comment.line.bcrosslang", + "begin": "#", + "end": "\\n" + }, + { + "name":"comment.block.documentation.bcrosslang", + "begin": "\\/\\^", + "end": "\\^\\/" + } + ] + }, + "strings": { + "name": "string.quoted.double.bcrosslang", + "begin": "\\\"", + "end": "\\\"", + "patterns": [ + { + "name": "constant.character.escape.bcrosslang", + "match": "\\\\." + } + ] + }, + "operators": { + "patterns": [{ + "name": "keyword.operator", + "match": "(\\+|\\-|\\*|\\\/|\\%|\\!|\\||\\&|\\^|\\<\\<|\\>\\>|\\<|\\>|\\=)" + }] + }, + "function": { + "patterns": [{ + "name": "entity.name.function.bcrosslang", + "match": "\\b[_a-zA-Z\\x80-\\xFF\\$][_a-zA-Z0-9\\x80-\\xFF\\$]*\\(" + }] + }, + "identifier": { + "patterns": [{ + "name": "entity.name.bcrosslang", + "match": "\\b[_a-zA-Z\\x80-\\xFF\\$][_a-zA-Z0-9\\x80-\\xFF\\$]*" + }] + }, + "double": { + "name": "constant.numeric.bcrosslang", + "match": "\\b[0-9][0-9]*\\.[0-9]*\\b" + }, + + "long": { + "patterns": [ + { + "name": "constant.numeric.bcrosslang", + "match": "\\b[0-9][0-9]*\\b" + } + ] + }, + "keywords": { + "patterns": [ + { + + "name": "constant.language.bcrosslang", + "match": "\\b(true|false|null|undefined|this)\\b" + }, + { + "name": "keyword.operator.new.bcrosslang", + "match": "\\bnew\\b" + }, + { + "name": "keyword.control.bcrosslang", + "match": "\\b(if|else|while|for|do|return|each|break|try|catch|finally|defer|enumerable|yield|switch|case|default|await|breakpoint|throw)\\b" + }, + { + "name": "keyword.bcrosslang", + "match": "\\b(Double|Long|ByteArray|List|Dictionary|Object|String|Char|Callable|Path|Filesystem|Regex|Variant|Boolean|as|var|of|in|interface|delegate|extern|namespace|use|const|func|class|public|private|protected|static|operator|embed|embeddir|embedstrm|comptime|async)\\b" + } + ] + }, + "chars": { + "name": "constant.character.bcrosslang", + "begin": "'", + "end": "'", + "patterns": [ + { + "name": "constant.character.escape.bcrosslang", + "match": "\\\\." + } + ] + } + }, + "scopeName": "source.bcrosslang" +} + diff --git a/vscode-extension/syntaxes/crosslang.tmLanguage.json b/vscode-extension/syntaxes/crosslang.tmLanguage.json index 837c6a0..fbacc84 100644 --- a/vscode-extension/syntaxes/crosslang.tmLanguage.json +++ b/vscode-extension/syntaxes/crosslang.tmLanguage.json @@ -112,7 +112,7 @@ }, { "name": "keyword.control.crosslang", - "match": "\\b(if|else|while|for|do|return|each|break|try|catch|finally|defer|enumerable|yield|switch|case|default|await|breakpoint|throw)\\b" + "match": "\\b(if|else|while|for|do|return|each|in|break|try|catch|finally|defer|enumerable|yield|switch|case|default|await|breakpoint|throw)\\b" }, { "name": "keyword.crosslang",