{ "$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": "#duration" }, { "include": "#number" }, { "include": "#boolean" }, { "include": "#top-keywords" }, { "include": "#block-keywords" }, { "include": "#matcher-keywords" }, { "include": "#scoring-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\\\\\"]" } ] }, "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(?:build|build_linux|build_windows|build_darwin|binary|sources|timeout|normalize_crlf|trim_trailing_ws|group|test|pattern|env|file|outFile)\\b" }, "block-keywords": { "name": "variable.parameter.jdg", "match": "\\b(?:weight|scoring|wrapper|stdin|stdout|stderr|args|exitCode|input|output|dirs)\\b" }, "matcher-keywords": { "name": "support.function.jdg", "match": "\\b(?:contains|matches|anyOrder|of)\\b" }, "scoring-values": { "name": "constant.language.jdg", "match": "\\b(?:partial|all_or_none)\\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" } } }