{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "VuurRaaf", "scopeName": "source.vuurraaf", "patterns": [ { "include": "#comments" }, { "include": "#strings" }, { "include": "#numbers" }, { "include": "#keywords" }, { "include": "#function-declaration" }, { "include": "#function-call" }, { "include": "#identifiers" }, { "include": "#operators" } ], "repository": { "comments": { "patterns": [ { "name": "comment.line.double-slash.vuurraaf", "match": "//.*$" } ] }, "strings": { "patterns": [ { "name": "string.quoted.raw.vuurraaf", "begin": "r\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.vuurraaf", "match": "\\\\(\\\\|n|t|r|\"|$)" } ] }, { "name": "string.quoted.double.vuurraaf", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.vuurraaf", "match": "\\\\(\\\\|n|t|r|\"|$)" }, { "name": "string.interpolated.vuurraaf", "begin": "\\$\\{", "end": "\\}", "patterns": [ { "include": "#identifiers" } ] } ] } ] }, "numbers": { "patterns": [ { "name": "constant.numeric.vuurraaf", "match": "\\b(0x[0-9a-fA-F]+|\\d+(\\.\\d+)?([eE][+-]?\\d+)?)\\b" } ] }, "keywords": { "patterns": [ { "name": "keyword.control.vuurraaf", "match": "\\b(fn|struct|enum|interface|import|const|let|if|else|while|for|in|match|break|continue|return|assert|try|catch|throw|and|or|not|true|false|none)\\b" } ] }, "function-declaration": { "patterns": [ { "name": "meta.function.vuurraaf", "begin": "\\b(fn)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(", "beginCaptures": { "1": { "name": "keyword.control.vuurraaf" }, "2": { "name": "entity.name.function.vuurraaf" } }, "end": "\\)", "patterns": [ { "include": "#identifiers" } ] } ] }, "function-call": { "patterns": [ { "name": "meta.function-call.vuurraaf", "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(", "beginCaptures": { "1": { "name": "entity.name.function.vuurraaf" } }, "end": "\\)", "patterns": [ { "include": "#identifiers" }, { "include": "#numbers" }, { "include": "#strings" } ] } ] }, "identifiers": { "patterns": [ { "name": "entity.name.type.vuurraaf", "match": "\\b[A-Z][a-zA-Z0-9_]*\\b" }, { "name": "variable.other.vuurraaf", "match": "\\b[a-z_][a-zA-Z0-9_]*\\b" } ] }, "operators": { "patterns": [ { "name": "keyword.operator.vuurraaf", "match": "==|!=|<=|>=|<<|>>|\\+|\\-|\\*|/|%|&|\\||\\^|~|=|<|>" } ] } } }