sprak.YAML-tmLanguage
# [PackageDev] target_format: plist, ext: tmLanguage
---
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: \'[^']*\'
...