NHRV5JP3IOPM3JRAT2FPM4D66UUUGQLHOJ6R7XGAVM2Z3FHTPLNQC {"folders": [{"path": "."}],"settings": {}}
# Welcome to your VS Code Extension## What's in the folder* This folder contains all of the files necessary for your extension.* `package.json` - this is the manifest file in which you declare your language support and define the location of the grammar file that has been copied into your extension.* `syntaxes/sprak.tmLanguage.json` - this is the Text mate grammar file that is used for tokenization.* `language-configuration.json` - this is the language configuration, defining the tokens that are used for comments and brackets.## Get up and running straight away* Make sure the language configuration settings in `language-configuration.json` are accurate.* Press `F5` to open a new window with your extension loaded.* Create a new file with a file name suffix matching your language.* Verify that syntax highlighting works and that the language configuration settings are working.## Make changes* You can relaunch the extension from the debug toolbar after making changes to the files listed above.* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.## Add more language features* To add features such as intellisense, hovers and validators check out the VS Code extenders documentation at https://code.visualstudio.com/docs## Install your extension* To start using your extension with Visual Studio Code copy it into the `<user home>/.vscode/extensions` folder and restart Code.* To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension.
{"name": "Sprak Language Extension","scopeName": "source.sprak","fileTypes": ["sprak","Sprak","SPRAK"],"uuid": "92b7c74c-cde8-4611-979e-a162a03c37fb","patterns": [{"comment": "Comment","name": "comment.line.sprak","match": "(#).*","captures": {"1": {"name": "punctuation.definition.comment.sprak"}}},{"comment": "Keywords","name": "keyword.control.sprak","match": "\\b(else if|(end )?if|(end )?void|end|else|loop|in|from|to|break|return)\\b"},{"comment": "Operators","name": "keyword.operator.sprak","match": "^(?:(?i)and|(?i)or|[!<->]=|&&|\\|\\||[!<->]|[*+\\-/])$"},{"comment": "Types","name": "storage.type.sprak","match": "\\b(void|bool|number|string|array|var)\\b"},{"comment": "Functions","name": "support.function.sprak","match": "\\b(Allow|Append|Blip|BootFromFloppy|Broadcast|ChangeBalance|CharToInt|Charisma|ClearData|ClearMemories|ClearText|Color|Connect|CopyToClipBoard|Corruption|Cos|Count|DisconnectAll|DisplayGraphics|Drink|Drunkenness|EnableAPI|EraseMemory|FastForward|FindPath|GetAction|GetAllRooms|GetBalanceForPerson|GetChannel|GetConnections|GetHour|GetIndexes|GetMemories|GetMinute|GetNumericData|GetPosition|GetPeople|GetRain|GetRoom|GetThingsInRoom|GetThingsOfType|GetTypeOfThing|GetUser|HD|HSVtoRGB|HasFloppy|HasFunction|HasIndex|HasMemory|Height|Info|Input|Int|InteractWith|IntToChar|IsKeyPressed|IsUser|Line|Lines|LoadData|LoadMemory|Lock|Log|Mod|Move|MovePerson|Name|OnHack|OnIntruder|Pitch|PlaySound|Position|Print|PrintS|QuickBoost|Quit|RGBToHSV|Random|Range|Rect|RegisterSeller|RemoteFunctionCall|Remove|RemoveAll|Repeat|RestoreCode|Round|SaveData|SaveMemory|Say|SetChannel|SetMaxTime|SetMhz|SetNumericData|SetPosition|SetRain|Sin|Sleep|Sleepiness|Slurp|Smelliness|Speed|StringContains|Switch|TeleportSetWorldPosition|Text|Time|Toggle|Trippy|TurnLeft|TurnOff|TurnOffSound|TurnOn|TurnOnSound|TurnRight|Type|Unlock|Width|ZapPerson|ZapPersonGently)\\b"},{"comment": "Numeric","name": "constant.numeric.sprak","match": "\\b(\\d(\\.\\d)?)+"},{"comment": "Global","name": "constant.global.sprak","match": "\\b\\w+\\$"},{"comment": "SUB","name": "meta.function.sprak","match": "^(\\w+):","captures": {"1": {"name": "entity.name.function.sprak"}}},{"comment": "Brace, round","name": "meta.brace.round.sprak","match": "[\\(\\)]"},{"comment": "Brace, curly","name": "meta.brace.curly.sprak","match": "[\\{\\}]"},{"comment": "Array","name": "other.array.sprak","begin": "(\\w+\\()","beginCaptures": {"1": {"name": "constant.array.sprak"}},"end": "(\\))","endCaptures": {"1": {"name": "constant.array.sprak"}},"patterns": [{"include": "$self"}]},{"comment": "String, double-quoted","name": "string.quoted.double.sprak","match": "\\\"[^\"]*\\\""},{"comment": "String, single-quoted","name": "string.quoted.single.sprak","match": "\\'[^']*\\'"}]}
# [PackageDev] target_format: plist, ext: tmLanguage---name: Sprak Language ExtensionscopeName: source.sprakfileTypes: [sprak,Sprak,SPRAK]uuid: 92b7c74c-cde8-4611-979e-a162a03c37fbpatterns:- comment: Commentname: comment.line.sprakmatch: (#).*captures:'1': { name: punctuation.definition.comment.sprak }- comment: Keywordsname: keyword.control.sprakmatch: \b(else if|(end )?if|(end )?void|end|else|loop|in|from|to|break|return)\b- comment: Operatorsname: keyword.operator.sprakmatch: '^(?:(?i)and|(?i)or|[!<->]=|&&|\|\||[!<->]|[*+\-/])$'- comment: Typesname: storage.type.sprakmatch: \b(void|bool|number|string|array|var)\b- comment: Functionsname: support.function.sprakmatch: \b(Allow|Append|Blip|BootFromFloppy|Broadcast|ChangeBalance|CharToInt|Charisma|ClearData|ClearMemories|ClearText|Color|Connect|CopyToClipBoard|Corruption|Cos|Count|DisconnectAll|DisplayGraphics|Drink|Drunkenness|EnableAPI|EraseMemory|FastForward|FindPath|GetAction|GetAllRooms|GetBalanceForPerson|GetChannel|GetConnections|GetHour|GetIndexes|GetMemories|GetMinute|GetNumericData|GetPosition|GetPeople|GetRain|GetRoom|GetThingsInRoom|GetThingsOfType|GetTypeOfThing|GetUser|HD|HSVtoRGB|HasFloppy|HasFunction|HasIndex|HasMemory|Height|Info|Input|Int|InteractWith|IntToChar|IsKeyPressed|IsUser|Line|Lines|LoadData|LoadMemory|Lock|Log|Mod|Move|MovePerson|Name|OnHack|OnIntruder|Pitch|PlaySound|Position|Print|PrintS|QuickBoost|Quit|RGBToHSV|Random|Range|Rect|RegisterSeller|RemoteFunctionCall|Remove|RemoveAll|Repeat|RestoreCode|Round|SaveData|SaveMemory|Say|SetChannel|SetMaxTime|SetMhz|SetNumericData|SetPosition|SetRain|Sin|Sleep|Sleepiness|Slurp|Smelliness|Speed|StringContains|Switch|TeleportSetWorldPosition|Text|Time|Toggle|Trippy|TurnLeft|TurnOff|TurnOffSound|TurnOn|TurnOnSound|TurnRight|Type|Unlock|Width|ZapPerson|ZapPersonGently)\b- comment: Numericname: constant.numeric.sprakmatch: \b(\d(\.\d)?)+- comment: Globalname: constant.global.sprakmatch: \b\w+\$- comment: SUBname: meta.function.sprakmatch: '^(\w+):'captures:'1': { name: entity.name.function.sprak }- comment: Brace, roundname: meta.brace.round.sprakmatch: '[\(\)]'- comment: Brace, curlyname: meta.brace.curly.sprakmatch: '[\{\}]'- comment: Arrayname: other.array.sprakbegin: (\w+\()beginCaptures:'1': { name: constant.array.sprak }end: (\))endCaptures:'1': { name: constant.array.sprak }patterns:- include: $self- comment: String, double-quotedname: string.quoted.double.sprakmatch: \"[^"]*\"- comment: String, single-quotedname: string.quoted.single.sprakmatch: \'[^']*\'...
{"Variable Array": {"prefix": ["array"],"body": ["array ${1:name} = [$0]"],"description": "Array variable declaration."},"Variable Boolean": {"prefix": ["bool"],"body": ["bool ${1:name} = $0"],"description": "Boolean variable declaration."},"Variable Number": {"prefix": ["number"],"body": ["number ${1:name} = $0"],"description": "Number variable declaration."},"Variable String": {"prefix": ["string"],"body": ["string ${1:name} = \"$0\""],"description": "String variable declaration."},"Variable Generic": {"prefix": ["var"],"body": ["var ${1:name} = $0"],"description": "Generic variable declaration."},"Array Function": {"prefix": ["array"],"body": ["array ${1:name}(${2:inputs})","\treturn [$0]","end"],"description": "Array function definition."},"Function Boolean": {"prefix": ["bool"],"body": ["bool ${1:name}(${2:inputs})","\treturn $0","end"],"description": "Boolean function definition."},"Function Generic": {"prefix": ["var"],"body": ["var ${1:name}(${2:inputs})","\treturn $0","end"],"description": "Generic function definition."},"Function Number": {"prefix": ["number"],"body": ["number ${1:name}(${2:inputs})","\treturn $0","end"],"description": "Number function definition."},"Function String": {"prefix": ["string"],"body": ["string ${1:name}(${2:inputs})","\treturn \"$0\"","end"],"description": "String function definition."},"Function Void": {"prefix": ["void"],"body": ["void ${1:name}(${2:inputs})","\t$0","end"],"description": "Generic function definition."},"Conditional": {"prefix": ["if"],"body": ["if $1","\t$3","else if $2","\t$4","else","\t$0","end"],"description": "Conditional."},"Loop": {"prefix": ["loop"],"body": ["loop","\t$0","end"],"description": "Loop forever."},"Loop over array": {"prefix": ["loop"],"body": ["loop ${1:array}","\tvar element = @","\t$0","end"],"description": "Loop over an array."},"Loop elements in array": {"prefix": ["loop"],"body": ["loop ${1:element} in ${2:array}","\t$0","end"],"description": "Loop over elements in an array."},"Loop over range": {"prefix": ["loop"],"body": ["loop from ${1:start} to ${2:finish}","\tnumber element = @","\t$0","end"],"description": "Loop over a range."},"Loop element in range": {"prefix": ["loop"],"body": ["loop ${1:element} from ${2:start} to ${3:finish}","\t$0","end"],"description": "Loop over numbers in a range."},"Sebastian": {"prefix": ["Sebastian", "sebastian"],"body": ["Sebastian$0"],"description": "Player character's name."}}
{ pkgs ? import <nixpkgs> {} }:letinherit (builtins)attrValuesfetchGit;in pkgs.mkShell {nativeBuildInputs = (attrValues {inherit (pkgs)gitnodejsvscodium;}) ++ [pkgs.nodePackages.js-yamlpkgs.nodePackages.yopkgs.nodePackages.generator-code];}
{"name": "sprak-language-extension","displayName": "Sprak Language Extension","description": "Support for the Sprak programming language used in the game \"else Heart.Break()\".","version": "0.0.1","engines": {"vscode": "^1.62.0"},"categories": ["Programming Languages","Snippets"],"contributes": {"languages": [{"id": "sprak","aliases": ["Sprak","sprak"],"extensions": [".sprak",".Sprak",".SPRAK"],"configuration": "./language-configuration.json"}],"grammars": [{"language": "sprak","scopeName": "source.sprak","path": "./syntaxes/sprak.tmLanguage.json"}],"snippets": [{"language": "sprak","path": "./snippets/snippets.code-snippets"}]}}
+-*/=<>==!=>=<=andanDaNdaNDAndAnDANDoroROrOR&&||!
{"comments": {"lineComment": "#"},"brackets": [["[", "]"],["(", ")"]],"autoClosingPairs": [["{", "}"],["[", "]"],["(", ")"],["\"", "\""],["'", "'"],{ "open": "'", "close": "'", "notIn": ["string", "comment"] },{ "open": "\"", "close": "\"", "notIn": ["string"] },{ "open": "`", "close": "`", "notIn": ["string", "comment"] }],"autoCloseBefore": ";:.,=}])>` \n\t","surroundingPairs": [["{", "}"],["[", "]"],["(", ")"],{ "open": "'", "close": "'", "notIn": ["string", "comment"] },{ "open": "\"", "close": "\"", "notIn": ["string"] },{ "open": "`", "close": "`", "notIn": ["string", "comment"] }]// "folding": {// "markers": {// "start": "^\\s*//\\s*#?region\\b",// "end": "^\\s*//\\s*#?endregion\\b"// }// },// "wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)",// "indentationRules": {// "increaseIndentPattern": "^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$",// "decreaseIndentPattern": "^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$"// }}
AllowAppendBlipBootFromFloppyBroadcastChangeBalanceCharToIntCharismaClearDataClearMemoriesClearTextColorConnectCopyToClipBoardCorruptionCosCountDisconnectAllDisplayGraphicsDrinkDrunkennessEnableAPIEraseMemoryFastForwardFindPathGetActionGetAllRoomsGetBalanceForPersonGetChannelGetConnectionsGetHourGetIndexesGetMemoriesGetMinuteGetNumericDataGetPositionGetPeopleGetRainGetRoomGetThingsInRoomGetThingsOfTypeGetTypeOfThingGetUserHDHSVtoRGBHasFloppyHasFunctionHasIndexHasMemoryHeightInfoInputIntInteractWithIntToCharIsKeyPressedIsUserLineLinesLoadDataLoadMemoryLockLogModMoveMovePersonNameOnHackOnIntruderPitchPlaySoundPositionPrintSQuickBoostQuitRGBToHSVRandomRangeRectRegisterSellerRemoteFunctionCallRemoveRemoveAllRepeatRestoreCodeRoundSaveDataSaveMemorySaySetChannelSetMaxTimeSetMhzSetNumericDataSetPositionSetRainSinSleepSleepinessSlurpSmellinessSpeedStringContainsSwitchTeleportSetWorldPositionTextTimeToggleTrippyTurnLeftTurnOffTurnOffSoundTurnOnTurnOnSoundTurnRightTypeUnlockWidthZapPersonZapPersonGently
#!/usr/bin/env nix-shell#!nix-shell -i bashnpx js-yaml syntaxes/sprak.YAML-tmLanguage > syntaxes/sprak.tmLanguage.jsonnpx vsce package
# Sprak Language Extension for CodiumAdds support for the Sprak programming language used in the game "else Heart.Break()".## Features* Syntax highlighting.* Code snippets.## Building* Dependencies:* `nix`* To build:```shellsh build.sh```### LicenseThis software is distributed and licensed under the terms of the [Blue Oak Model License 1.0.0](https://web.archive.org/web/20190309191626/https://blueoakcouncil.org/license/1.0.0).
# Blue Oak Model LicenseVersion 1.0.0## PurposeThis license gives everyone as much permission to work withthis software as possible, while protecting contributorsfrom liability.## AcceptanceIn order to receive this license, you must agree to itsrules. The rules of this license are both obligationsunder that agreement and conditions to your license.You must not do anything with this software that triggersa rule that you cannot or will not follow.## CopyrightEach contributor licenses you to do everything with thissoftware that would otherwise infringe that contributor'scopyright in it.## NoticesYou must ensure that everyone who gets a copy ofany part of this software from you, with or withoutchanges, also gets the text of this license or a link to<https://blueoakcouncil.org/license/1.0.0>.## ExcuseIf anyone notifies you in writing that you have notcomplied with [Notices](#notices), you can keep yourlicense by taking all practical steps to comply within 30days after the notice. If you do not do so, your licenseends immediately.## PatentEach contributor licenses you to do everything with thissoftware that would otherwise infringe any patent claimsthey can license or become able to license.## ReliabilityNo contributor can revoke this license.## No Liability***As far as the law allows, this software comes as is,without any warranty or condition, and no contributorwill be liable to anyone for any damages related to thissoftware or this license, under any kind of legal claim.***
# Change LogAll notable changes to the "sprak-language-extension" extension will be documented in this file.Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.## [Unreleased]- Initial release
.vscode/**.vscode-test/**.gitignorevsc-extension-quickstart.md
// A launch configuration that launches the extension inside a new window// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387{"version": "0.2.0","configurations": [{"name": "Extension","type": "extensionHost","request": "launch","args": ["--extensionDevelopmentPath=${workspaceFolder}"]}]}
.git.DS_Store