{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "Judge DSL", "scopeName": "source.jdg", "fileTypes": ["jdg"], "patterns": [ { "include": "#comments" }, { "include": "#heredoc" }, { "include": "#string" }, { "include": "#size" }, { "include": "#duration" }, { "include": "#number" }, { "include": "#boolean" }, { "include": "#top-keywords" }, { "include": "#os-block" }, { "include": "#build-fields" }, { "include": "#block-keywords" }, { "include": "#matcher-keywords" }, { "include": "#profile-values" }, { "include": "#warnings-values" }, { "include": "#scoring-values" }, { "include": "#class-values" }, { "include": "#operators" }, { "include": "#braces" }, { "include": "#identifier" } ], "repository": { "comments": { "name": "comment.line.double-slash.jdg", "match": "//.*$" }, "heredoc": { "name": "string.quoted.triple.jdg", "begin": "\"\"\"", "end": "\"\"\"", "patterns": [ { "name": "constant.character.escape.jdg", "match": "\\\\[nt\\\\\"]" } ] }, "string": { "name": "string.quoted.double.jdg", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.jdg", "match": "\\\\[nt\\\\\"]" } ] }, "size": { "name": "constant.numeric.size.jdg", "match": "\\b\\d+(?:KiB|MiB|GiB|KB|MB|GB|B|K|M|G)\\b" }, "duration": { "name": "constant.numeric.duration.jdg", "match": "\\b-?\\d+(?:\\.\\d+)?(?:ms|s|m|h)\\b" }, "number": { "name": "constant.numeric.jdg", "match": "\\b-?\\d+(?:\\.\\d+)?\\b" }, "boolean": { "name": "constant.language.boolean.jdg", "match": "\\b(?:true|false)\\b" }, "top-keywords": { "name": "keyword.control.jdg", "match": "\\b(?:include|build|build_defaults|build_linux|build_windows|build_darwin|toolchains|binary|sources|timeout|memory_limit|normalize_crlf|trim_trailing_ws|group|test|pattern|env|file|outFile|define)\\b" }, "os-block": { "name": "support.type.os.jdg", "match": "\\b(?:linux|windows|darwin)\\b(?=\\s*\\{)" }, "build-fields": { "name": "variable.parameter.build.jdg", "match": "\\b(?:language|standard|output|wrapper|includes|sanitize|link|extra|platforms|compilers|profile|warnings|class)\\b" }, "block-keywords": { "name": "variable.parameter.jdg", "match": "\\b(?:weight|scoring|stdin|stdout|stderr|args|exitCode|input|dirs)\\b" }, "matcher-keywords": { "name": "support.function.jdg", "match": "\\b(?:contains|matches|anyOrder|of)\\b" }, "profile-values": { "name": "constant.language.profile.jdg", "match": "\\b(?:release|debug|sanitized)\\b" }, "warnings-values": { "name": "constant.language.warnings.jdg", "match": "\\b(?:default|strict|pedantic)\\b" }, "scoring-values": { "name": "constant.language.scoring.jdg", "match": "\\b(?:partial|all_or_none)\\b" }, "class-values": { "name": "constant.language.class.jdg", "match": "\\b(?:gnu|msvc)\\b" }, "operators": { "name": "keyword.operator.jdg", "match": "[=~]" }, "braces": { "name": "punctuation.section.braces.jdg", "match": "[{}()]" }, "identifier": { "name": "variable.other.jdg", "match": "\\b[A-Za-z_][A-Za-z0-9_]*\\b" } } }