{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "Zero", "scopeName": "source.zero", "patterns": [ { "include": "#comments" }, { "include": "#strings" }, { "include": "#chars" }, { "include": "#numbers" }, { "include": "#keywords" }, { "include": "#types" }, { "include": "#functions" }, { "include": "#operators" } ], "repository": { "comments": { "patterns": [ { "name": "comment.line.double-slash.zero", "match": "//.*$" }, { "name": "comment.block.zero", "begin": "/\\*", "end": "\\*/" } ] }, "strings": { "patterns": [ { "name": "string.quoted.double.zero", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.zero", "match": "\\\\(?:[nrt0\"\\\\]|x[0-9A-Fa-f]{2}|u\\{[0-9A-Fa-f]+\\})" } ] } ] }, "chars": { "patterns": [ { "name": "constant.character.zero", "match": "'(?:[^'\\\\\\n]|\\\\(?:[nrt0'\"\\\\]|x[0-9A-Fa-f]{2}))'" } ] }, "numbers": { "patterns": [ { "name": "constant.numeric.zero", "match": "\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|0x[0-9A-Fa-f_]+|0b[01_]+|0o[0-7_]+|[0-9][0-9_]*(?:_[A-Za-z][A-Za-z0-9_]*)?)\\b" } ] }, "keywords": { "patterns": [ { "name": "keyword.control.zero", "match": "\\b(?:break|check|continue|defer|else|for|if|match|raise|raises|rescue|return|while)\\b" }, { "name": "keyword.declaration.zero", "match": "\\b(?:alias|choice|const|enum|export|extern|fn|interface|let|meta|mut|packed|pub|static|test|type|use|var)\\b" }, { "name": "constant.language.zero", "match": "\\b(?:false|null|true)\\b" } ] }, "types": { "patterns": [ { "name": "support.type.primitive.zero", "match": "\\b(?:Bool|Void|Type|char|usize|isize|u[0-9]+|i[0-9]+|f(?:16|32|64)|c_(?:int|long|size|char)|World|Alloc|Fs|Net|Env|Args|Clock|Rand|Proc|Sync)\\b" }, { "name": "support.type.container.zero", "match": "\\b(?:Maybe|Span|owned|ref|mutref|Vec|String)\\b" } ] }, "functions": { "patterns": [ { "name": "entity.name.function.zero", "match": "(?<=\\bfn\\s+)[A-Za-z_][A-Za-z0-9_]*" }, { "name": "entity.name.function.method.zero", "match": "\\b[A-Za-z_][A-Za-z0-9_]*(?=\\s*\\()" } ] }, "operators": { "patterns": [ { "name": "keyword.operator.zero", "match": "\\b(?:as)\\b|->|=>|\\+%|\\+\\||==|!=|<=|>=|&&|\\|\\||[=+\\-*/%<>.:]" } ] } } }