kjelsrud.dev/node_modules/shiki/languages/awk.tmLanguage.json
2023-07-19 21:31:30 +02:00

386 lines
8.5 KiB
JSON

{
"fileTypes": ["awk"],
"name": "awk",
"patterns": [
{
"include": "#comment"
},
{
"include": "#procedure"
},
{
"include": "#pattern"
}
],
"repository": {
"builtin-pattern": {
"match": "\\b(BEGINFILE|BEGIN|ENDFILE|END)\\b",
"name": "constant.language.awk"
},
"command": {
"patterns": [
{
"match": "\\b(?:next|print|printf)\\b",
"name": "keyword.other.command.awk"
},
{
"match": "\\b(?:close|getline|delete|system)\\b",
"name": "keyword.other.command.nawk"
},
{
"match": "\\b(?:fflush|nextfile)\\b",
"name": "keyword.other.command.bell-awk"
}
]
},
"comment": {
"match": "#.*",
"name": "comment.line.number-sign.awk"
},
"constant": {
"patterns": [
{
"include": "#numeric-constant"
},
{
"include": "#string-constant"
}
]
},
"escaped-char": {
"match": "\\\\(?:[\\\\abfnrtv/\"]|x[0-9A-Fa-f]{2}|[0-7]{3})",
"name": "constant.character.escape.awk"
},
"expression": {
"patterns": [
{
"include": "#command"
},
{
"include": "#function"
},
{
"include": "#constant"
},
{
"include": "#variable"
},
{
"include": "#regexp-in-expression"
},
{
"include": "#operator"
},
{
"include": "#groupings"
}
]
},
"function": {
"patterns": [
{
"match": "\\b(?:exp|int|log|sqrt|index|length|split|sprintf|substr)\\b",
"name": "support.function.awk"
},
{
"match": "\\b(?:atan2|cos|rand|sin|srand|gsub|match|sub|tolower|toupper)\\b",
"name": "support.function.nawk"
},
{
"match": "\\b(?:gensub|strftime|systime)\\b",
"name": "support.function.gawk"
}
]
},
"function-definition": {
"begin": "\\b(function)\\s+(\\w+)(\\()",
"beginCaptures": {
"1": {
"name": "storage.type.function.awk"
},
"2": {
"name": "entity.name.function.awk"
},
"3": {
"name": "punctuation.definition.parameters.begin.awk"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.awk"
}
},
"patterns": [
{
"match": "\\b(\\w+)\\b",
"name": "variable.parameter.function.awk"
},
{
"match": "\\b(,)\\b",
"name": "punctuation.separator.parameters.awk"
}
]
},
"groupings": {
"patterns": [
{
"match": "\\(",
"name": "meta.brace.round.awk"
},
{
"match": "\\)",
"name": "meta.brace.round.awk"
},
{
"match": "\\,",
"name": "punctuation.separator.parameters.awk"
}
]
},
"keyword": {
"match": "\\b(?:break|continue|do|while|exit|for|if|else|return)\\b",
"name": "keyword.control.awk"
},
"numeric-constant": {
"match": "\\b[0-9]+(?:\\.[0-9]+)?(?:e[+-][0-9]+)?\\b",
"name": "constant.numeric.awk"
},
"operator": {
"patterns": [
{
"match": "(!?~|[=<>!]=|[<>])",
"name": "keyword.operator.comparison.awk"
},
{
"match": "\\b(in)\\b",
"name": "keyword.operator.comparison.awk"
},
{
"match": "([+\\-*/%^]=|\\+\\+|--|>>|=)",
"name": "keyword.operator.assignment.awk"
},
{
"match": "(\\|\\||&&|!)",
"name": "keyword.operator.boolean.awk"
},
{
"match": "([+\\-*/%^])",
"name": "keyword.operator.arithmetic.awk"
},
{
"match": "([?:])",
"name": "keyword.operator.trinary.awk"
},
{
"match": "(\\[|\\])",
"name": "keyword.operator.index.awk"
}
]
},
"pattern": {
"patterns": [
{
"include": "#regexp-as-pattern"
},
{
"include": "#function-definition"
},
{
"include": "#builtin-pattern"
},
{
"include": "#expression"
}
]
},
"procedure": {
"begin": "\\{",
"end": "\\}",
"patterns": [
{
"include": "#comment"
},
{
"include": "#procedure"
},
{
"include": "#keyword"
},
{
"include": "#expression"
}
]
},
"regex-as-assignment": {
"begin": "([^=<>!+\\-*/%^]=)\\s*(/)",
"beginCaptures": {
"1": {
"name": "keyword.operator.assignment.awk"
},
"2": {
"name": "punctuation.definition.regex.begin.awk"
}
},
"contentName": "string.regexp",
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.regex.end.awk"
}
},
"patterns": [
{
"include": "source.regexp"
}
]
},
"regex-as-comparison": {
"begin": "(!?~)\\s*(/)",
"beginCaptures": {
"1": {
"name": "keyword.operator.comparison.awk"
},
"2": {
"name": "punctuation.definition.regex.begin.awk"
}
},
"contentName": "string.regexp",
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.regex.end.awk"
}
},
"patterns": [
{
"include": "source.regexp"
}
]
},
"regex-as-first-argument": {
"begin": "(\\()\\s*(/)",
"beginCaptures": {
"1": {
"name": "meta.brace.round.awk"
},
"2": {
"name": "punctuation.definition.regex.begin.awk"
}
},
"contentName": "string.regexp",
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.regex.end.awk"
}
},
"patterns": [
{
"include": "source.regexp"
}
]
},
"regex-as-nth-argument": {
"begin": "(,)\\s*(/)",
"beginCaptures": {
"1": {
"name": "punctuation.separator.parameters.awk"
},
"2": {
"name": "punctuation.definition.regex.begin.awk"
}
},
"contentName": "string.regexp",
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.regex.end.awk"
}
},
"patterns": [
{
"include": "source.regexp"
}
]
},
"regexp-as-pattern": {
"begin": "/",
"beginCaptures": {
"0": {
"name": "punctuation.definition.regex.begin.awk"
}
},
"contentName": "string.regexp",
"end": "/",
"endCaptures": {
"0": {
"name": "punctuation.definition.regex.end.awk"
}
},
"patterns": [
{
"include": "source.regexp"
}
]
},
"regexp-in-expression": {
"patterns": [
{
"include": "#regex-as-assignment"
},
{
"include": "#regex-as-comparison"
},
{
"include": "#regex-as-first-argument"
},
{
"include": "#regex-as-nth-argument"
}
]
},
"string-constant": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.awk"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.awk"
}
},
"name": "string.quoted.double.awk",
"patterns": [
{
"include": "#escaped-char"
}
]
},
"variable": {
"patterns": [
{
"match": "\\$[0-9]+",
"name": "variable.language.awk"
},
{
"match": "\\b(?:FILENAME|FS|NF|NR|OFMT|OFS|ORS|RS)\\b",
"name": "variable.language.awk"
},
{
"match": "\\b(?:ARGC|ARGV|CONVFMT|ENVIRON|FNR|RLENGTH|RSTART|SUBSEP)\\b",
"name": "variable.language.nawk"
},
{
"match": "\\b(?:ARGIND|ERRNO|FIELDWIDTHS|IGNORECASE|RT)\\b",
"name": "variable.language.gawk"
}
]
}
},
"scopeName": "source.awk",
"uuid": "67bd1ff0-006b-4c32-8b97-8bc198777582"
}