{ "scopeName": "source.hblang", "name": "hblang", "fileTypes": [ "hb" ], "patterns": [ { "include": "#all" } ], "repository": { "all": { "patterns": [ { "include": "#comment" }, { "include": "#string" }, { "include": "#struct" }, { "include": "#keyword" }, { "include": "#number" }, { "include": "#punctuation" }, { "include": "#function" }, { "include": "#operator" }, { "include": "#variable" }, { "include": "#type" }, { "include": "#array" } ] }, "parameter": { "patterns": [ { "name": "variable.parameter.hblang", "match": "\\b\\w+\\s*:\\s*(?:\\^)?[\\w\\$]+\\b" } ] }, "number": { "patterns": [ { "name": "constant.numeric.float.hblang", "match": "\\b\\d+\\.\\d+\\b" }, { "name": "constant.numeric.hex.hblang", "match": "0x[0-9A-Fa-f]+" }, { "name": "constant.numeric.binary.hblang", "match": "0b[0-1]+" }, { "name": "constant.numeric.octal.hblang", "match": "0o[0-7]+" }, { "name": "constant.numeric.decimal.hblang", "match": "\\b\\d+\\b" } ] }, "comment": { "patterns": [ { "name": "comment.block.hblang", "begin": "/\\*", "end": "\\*/" }, { "name": "comment.line.double-slash.hblang", "begin": "//", "end": "$" } ] }, "string": { "patterns": [ { "name": "string.quoted.double.hblang", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.hblang", "match": "\\\\(?:[\"'\\\\bfnrt]|[{\\[]\\w+[}\\]]|[a-zA-Z])" }, { "name": "invalid.illegal.escaped.hblang", "match": "\\\\." } ] } ] }, "keyword": { "patterns": [ { "name": "keyword.control.hblang", "match": "\\b(fn|loop|break|if|else|return|packed|continue|true|false|struct|idk|die|null)\\b" } ] }, "type": { "patterns": [ { "name": "storage.type.hblang", "match": "\\b(f(32|64))|(uint|int|(u|i)(8|16|32)|void|bool|type|never)\\b" } ] }, "variable": { "patterns": [ { "name": "variable.declaration.hblang", "match": "\\b\\w+\\b(?=\\s*:=)" }, { "name": "variable.assignment.hblang", "match": "\\b\\w+\\b(?=\\s*=(?!=))" }, { "name": "variable.member.hblang", "match": "(?<=\\.)\\w+\\b" } ] }, "operator": { "patterns": [ { "name": "keyword.operator.assignment.hblang", "match": ":=" }, { "name": "keyword.operator.assignment.hblang", "match": "=(?!=)" }, { "name": "keyword.operator.hblang", "match": "(\\$|\\?|@|<<=|>>=|>=|<=|\\^=|\\+=|-=|\\*=|\\/=|%=|\\|=|&=|\\^|\\*|&|<<|>>|\\+|\\-|\\/|%|\\||!|==|!=|<|>)" } ] }, "struct": { "patterns": [ { "name": "entity.name.type.struct.hblang", "match": "\\b[A-Z]\\w+\\b" } ] }, "punctuation": { "patterns": [ { "name": "punctuation.terminator.statement.hblang", "match": ";|\\.|,|(?