| { |
| "name": "PDLL", |
| "fileTypes": [ |
| "pdll" |
| ], |
| "patterns": [ |
| { |
| "include": "#comment" |
| }, |
| { |
| "include": "#string" |
| }, |
| { |
| "include": "#string_block" |
| }, |
| { |
| "include": "#integer" |
| }, |
| { |
| "include": "#include" |
| }, |
| { |
| "include": "#user_constraint" |
| }, |
| { |
| "include": "#user_rewrite" |
| }, |
| { |
| "include": "#pattern" |
| }, |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "repository": { |
| "comment": { |
| "match": "\/\/.*$", |
| "name": "comment.line.double-slash.pdll" |
| }, |
| "string": { |
| "name": "string.quoted.double.pdll", |
| "begin": "\"", |
| "end": "\"", |
| "beginCaptures": { |
| "0": { |
| "name": "punctuation.definition.string.begin.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "match": "\\\\[nt\"]", |
| "name": "constant.character.escape.pdll" |
| }, |
| { |
| "match": "\\\\.", |
| "name": "invalid.illegal.pdll" |
| } |
| ], |
| "endCaptures": { |
| "0": { |
| "name": "punctuation.definition.string.end.pdll" |
| } |
| } |
| }, |
| "string_block": { |
| "name": "string.quoted.triple.pdll", |
| "begin": "\\[{", |
| "end": "}]", |
| "beginCaptures": { |
| "0": { |
| "name": "punctuation.definition.string.begin.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "match": "\\\\[nt\"]", |
| "name": "constant.character.escape.pdll" |
| }, |
| { |
| "match": "\\\\.", |
| "name": "invalid.illegal.pdll" |
| } |
| ], |
| "endCaptures": { |
| "0": { |
| "name": "punctuation.definition.string.end.pdll" |
| } |
| } |
| }, |
| "integer": { |
| "match": "[0-9]+", |
| "name": "constant.numeric.pdll" |
| }, |
| "include": { |
| "patterns": [ |
| { |
| "match": "(#include)", |
| "name": "keyword.control.pdll" |
| } |
| ] |
| }, |
| "argument_or_result_list": { |
| "patterns": [ |
| { |
| "match": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*([aA-zZ_0-9]+)\\b(\\<([^\\>]+)\\>)?", |
| "captures": { |
| "1": { |
| "name": "variable.parameter.pdll" |
| }, |
| "2": { |
| "name": "entity.name.type.pdll" |
| }, |
| "4": { |
| "name": "variable.other.enummember.pdll" |
| } |
| } |
| }, |
| { |
| "match": "(\\(|\\>|,)\\s*([aA-zZ_0-9]+)\\b(\\<([^\\>]+)\\>)?\\s*(?=[^:])", |
| "captures": { |
| "2": { |
| "name": "entity.name.type.pdll" |
| }, |
| "4": { |
| "name": "variable.other.enummember.pdll" |
| } |
| } |
| } |
| ] |
| }, |
| "user_constraint": { |
| "patterns": [ |
| { |
| "begin": "\\b(Constraint)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| }, |
| "2": { |
| "name": "entity.name.type.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "begin": "(\\[{)", |
| "patterns": [ |
| { |
| "include": "source.cpp" |
| } |
| ], |
| "end": "(}])" |
| }, |
| { |
| "begin": "(?=\\()", |
| "patterns": [ |
| { |
| "include": "#argument_or_result_list" |
| } |
| ], |
| "end": "\\)" |
| }, |
| { |
| "include": "#argument_or_result_list" |
| }, |
| { |
| "begin": "{", |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "(?=})" |
| }, |
| { |
| "begin": "=>", |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "(?=;|,|\\))" |
| } |
| ], |
| "end": "(}|;|,)|(?=\\))" |
| } |
| ] |
| }, |
| "user_rewrite": { |
| "patterns": [ |
| { |
| "begin": "\\b(Rewrite)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| }, |
| "2": { |
| "name": "entity.name.function.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "begin": "(\\[{)", |
| "patterns": [ |
| { |
| "include": "source.cpp" |
| } |
| ], |
| "end": "(}])" |
| }, |
| { |
| "begin": "(?=\\()", |
| "patterns": [ |
| { |
| "include": "#argument_or_result_list" |
| } |
| ], |
| "end": "\\)" |
| }, |
| { |
| "include": "#argument_or_result_list" |
| }, |
| { |
| "begin": "{", |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "(?=})" |
| }, |
| { |
| "begin": "=>", |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "(?=;|,|\\))" |
| } |
| ], |
| "end": "(}|;|,)|(?=\\))" |
| } |
| ] |
| }, |
| "pattern_metadata": { |
| "patterns": [ |
| { |
| "match": "\\b(with)\\b", |
| "name": "keyword.other.pdll" |
| }, |
| { |
| "match": "\\b(benefit)\\b\\(([0-9]+)\\)", |
| "captures": { |
| "1": { |
| "name": "entity.name.variable.pdll" |
| }, |
| "2": { |
| "name": "constant.numeric.pdll" |
| } |
| } |
| }, |
| { |
| "match": "\\b(recursion)\\b", |
| "name": "entity.name.variable.pdll" |
| } |
| ] |
| }, |
| "pattern": { |
| "patterns": [ |
| { |
| "begin": "\\b(Pattern)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?\\s*(\\bwith\\b\\s*[^\\{]*)?\\s*({)", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| }, |
| "2": { |
| "name": "entity.name.function.pdll" |
| }, |
| "3": { |
| "patterns": [ |
| { |
| "include": "#pattern_metadata" |
| } |
| ] |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "(})" |
| }, |
| { |
| "begin": "\\b(Pattern)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?\\s*(\\bwith\\b\\s*[^\\=]*)?\\s*(=>)", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| }, |
| "2": { |
| "name": "entity.name.function.pdll" |
| }, |
| "3": { |
| "patterns": [ |
| { |
| "include": "#pattern_metadata" |
| } |
| ] |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": ";" |
| } |
| ] |
| }, |
| "inside_pattern": { |
| "patterns": [ |
| { |
| "match": "\\b(erase|let|replace|return|rewrite|with)\\b", |
| "captures": { |
| "1": { |
| "name": "keyword.control.pdll" |
| } |
| } |
| }, |
| { |
| "include": "#expressions" |
| } |
| ] |
| }, |
| "variable_constraint": { |
| "patterns": [ |
| { |
| "match": "\\b(Op)<([a-zA-Z0-9_\\.$-]*)>", |
| "captures": { |
| "1": { |
| "name": "entity.name.type.pdll" |
| }, |
| "2": { |
| "name": "variable.other.enummember.pdll" |
| } |
| } |
| }, |
| { |
| "begin": "<", |
| "patterns": [ |
| { |
| "include": "#expressions" |
| } |
| ], |
| "end": ">" |
| }, |
| { |
| "match": "[a-zA-Z_0-9]+", |
| "name": "entity.name.type.pdll" |
| } |
| ] |
| }, |
| "variable_definition": { |
| "patterns": [ |
| { |
| "begin": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*\\[", |
| "beginCaptures": { |
| "1": { |
| "name": "entity.name.variable.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#variable_constraint" |
| } |
| ], |
| "end": "\\]" |
| }, |
| { |
| "match": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*([aA-zZ_0-9]+(\\<([^\\>]+)\\>)?)", |
| "captures": { |
| "1": { |
| "name": "entity.name.variable.pdll" |
| }, |
| "2": { |
| "patterns": [ |
| { |
| "include": "#variable_constraint" |
| } |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| "expressions": { |
| "patterns": [ |
| { |
| "include": "#user_constraint" |
| }, |
| { |
| "include": "#user_rewrite" |
| }, |
| { |
| "include": "#attr_expr" |
| }, |
| { |
| "include": "#op_expr" |
| }, |
| { |
| "include": "#type_expr" |
| }, |
| { |
| "include": "#call_expr" |
| }, |
| { |
| "include": "#variable_definition" |
| }, |
| { |
| "include": "#identifier_expr" |
| }, |
| { |
| "include": "#string" |
| }, |
| { |
| "include": "#string_block" |
| }, |
| { |
| "include": "#comment" |
| }, |
| { |
| "begin": "{", |
| "patterns": [ |
| { |
| "include": "#inside_pattern" |
| } |
| ], |
| "end": "}" |
| }, |
| { |
| "begin": "\\(", |
| "patterns": [ |
| { |
| "include": "#expressions" |
| } |
| ], |
| "end": "\\)" |
| } |
| ] |
| }, |
| "attr_expr": { |
| "patterns": [ |
| { |
| "begin": "(attr)<", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#string" |
| }, |
| { |
| "include": "#string_block" |
| } |
| ], |
| "end": ">" |
| } |
| ] |
| }, |
| "call_expr": { |
| "begin": "\\b([a-zA-Z0-9_]+)\\(", |
| "beginCaptures": { |
| "1": { |
| "name": "entity.name.variable.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#expressions" |
| } |
| ], |
| "end": "\\)" |
| }, |
| "identifier_expr": { |
| "match": "\\b([a-zA-Z0-9_]+)\\b", |
| "name": "entity.name.variable.pdll" |
| }, |
| "op_expr": { |
| "match": "\\b(op)<([0-9a-zA-Z_\\.]*)>", |
| "captures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| }, |
| "2": { |
| "name": "variable.other.enummember.pdll" |
| } |
| } |
| }, |
| "type_expr": { |
| "patterns": [ |
| { |
| "begin": "\\b(type)<", |
| "beginCaptures": { |
| "1": { |
| "name": "keyword.other.pdll" |
| } |
| }, |
| "patterns": [ |
| { |
| "include": "#string" |
| }, |
| { |
| "include": "#string_block" |
| } |
| ], |
| "end": ">" |
| } |
| ] |
| } |
| }, |
| "scopeName": "source.pdll" |
| } |