{ "name": "Zeek", "scopeName": "source.zeek", "patterns": [ { "name": "comment.line.zeek", "begin": "(##!|##\u003c|##|#)", "end": "$", "beginCaptures": { "1": { "name": "punctuation.definition.comment.zeek" } } }, { "name": "string.quoted.double.zeek", "begin": "(\\\")", "end": "(\\\")", "patterns": [ { "name": "constant.character.escape.zeek", "match": "\\\\." }, { "name": "constant.other.placeholder.zeek", "match": "%-?[0-9]*(\\.[0-9]+)?[DTdxsefg]" } ], "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.zeek" } }, "endCaptures": { "1": { "name": "punctuation.definition.string.end.zeek" } } }, { "name": "string.regexp.zeek", "begin": "(/)(?=.*/)", "end": "(/)", "patterns": [ { "name": "constant.character.escape.zeek", "match": "\\\\." } ], "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.zeek" } }, "endCaptures": { "1": { "name": "punctuation.definition.string.end.zeek" } } }, { "name": "meta.preprocessor.zeek", "match": "(@(load-plugin|load-sigs|load|unload)).*$", "captures": { "1": { "name": "keyword.other.zeek" } } }, { "name": "meta.preprocessor.zeek", "match": "(@(DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif))", "captures": { "1": { "name": "keyword.other.zeek" } } }, { "name": "meta.preprocessor.zeek", "match": "(@prefixes)\\s*(\\+?=).*$", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "keyword.operator.zeek" } } }, { "name": "storage.modifier.attribute.zeek", "match": "\\\u0026\\b(redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|error_handler|type_column|deprecated)\\b" }, { "name": "constant.language.zeek", "match": "\\b(T|F)\\b" }, { "name": "constant.numeric.port.zeek", "match": "\\b\\d{1,5}/(udp|tcp|icmp|unknown)\\b" }, { "name": "constant.numeric.addr.zeek", "match": "\\b(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\b" }, { "name": "constant.numeric.addr.zeek", "match": "\\[([0-9a-fA-F]{0,4}:){2,7}([0-9a-fA-F]{0,4})?((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}))?\\]" }, { "name": "constant.numeric.float.decimal.interval.zeek", "match": "(((?:(\\d*\\.\\d*)([eE][+-]?\\d+)?)|(?:(\\d*)([eE][+-]?\\d+))|(?:(\\d*\\.\\d*)))|\\d+)\\s*(day|hr|min|msec|usec|sec)s?" }, { "name": "constant.numeric.float.decimal.zeek", "match": "((?:(\\d*\\.\\d*)([eE][+-]?\\d+)?)|(?:(\\d*)([eE][+-]?\\d+))|(?:(\\d*\\.\\d*)))" }, { "name": "constant.numeric.hostname.zeek", "match": "\\b(([A-Za-z0-9][A-Za-z0-9\\-]*)(?:\\.([A-Za-z0-9][A-Za-z0-9\\-]*))+)\\b" }, { "name": "constant.numeric.integer.hexadecimal.zeek", "match": "\\b(0x[0-9a-fA-F]+)\\b" }, { "name": "constant.numeric.integer.decimal.zeek", "match": "\\b(\\d+)\\b" }, { "name": "keyword.operator.zeek", "match": "(==)|(!=)|(\u003c=)|(\u003c)|(\u003e=)|(\u003e)" }, { "name": "keyword.operator.zeek", "match": "(\u0026\u0026)|(||)|(!)" }, { "name": "keyword.operator.zeek", "match": "(=)|(\\+=)|(-=)" }, { "name": "keyword.operator.zeek", "match": "(\\+\\+)|(\\+)|(--)|(-)|(\\*)|(/)|(%)" }, { "name": "keyword.operator.zeek", "match": "(\u0026)|(\\|)|(\\^)|(~)" }, { "name": "keyword.operator.zeek", "match": "\\b(in|as|is)\\b" }, { "name": "punctuation.terminator.zeek", "match": ";" }, { "name": "punctuation.accessor.zeek", "match": "\\??\\$" }, { "name": "punctuation.accessor.zeek", "match": "::" }, { "name": "keyword.operator.zeek", "match": "(\\?)" }, { "name": "punctuation.separator.zeek", "match": "(?\u003c=\\S)(:)" }, { "name": "punctuation.separator.zeek", "match": "(,)" }, { "name": "keyword.operator.zeek", "match": "(:)" }, { "name": "meta.namespace.zeek", "match": "(module)\\s+(([A-Za-z_][A-Za-z_0-9]*)(?:::([A-Za-z_][A-Za-z_0-9]*))*)", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "entity.name.namespace.zeek" } } }, { "name": "keyword.other.zeek", "match": "\\b(export)\\b" }, { "name": "keyword.control.conditional.zeek", "match": "\\b(if|else)\\b" }, { "name": "keyword.control.zeek", "match": "\\b(for|while)\\b" }, { "name": "keyword.control.zeek", "match": "\\b(return|break|next|continue|fallthrough)\\b" }, { "name": "keyword.control.zeek", "match": "\\b(switch|default|case)\\b" }, { "name": "keyword.other.zeek", "match": "\\b(add|delete)\\b" }, { "name": "keyword.other.zeek", "match": "\\b(print)\\b" }, { "name": "keyword.control.zeek", "match": "\\b(when|timeout|schedule)\\b" }, { "name": "meta.struct.record.zeek", "match": "\\b(type)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\s*(:)\\s*\\b(record)\\b", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "entity.name.struct.record.zeek" }, "3": { "name": "punctuation.separator.zeek" }, "4": { "name": "storage.type.struct.record.zeek keyword.declaration.struct.record.zeek" } } }, { "name": "meta.enum.zeek", "match": "\\b(type)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\s*(:)\\s*\\b(enum)\\b", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "entity.name.enum.zeek" }, "3": { "name": "punctuation.separator.zeek" }, "4": { "name": "storage.type.enum.zeek keyword.declaration.enum.zeek" } } }, { "name": "meta.type.zeek", "match": "\\b(type)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\s*(:)", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "entity.name.type.zeek" }, "3": { "name": "punctuation.separator.zeek" } } }, { "name": "meta.struct.record.zeek", "match": "\\b(redef)\\s+(record)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\b", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "storage.type.struct.record.zeek keyword.declaration.struct.record.zeek" }, "3": { "name": "entity.name.struct.record.zeek" } } }, { "name": "meta.enum.zeek", "match": "\\b(redef)\\s+(enum)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\b", "captures": { "1": { "name": "keyword.other.zeek" }, "2": { "name": "storage.type.enum.zeek keyword.declaration.enum.zeek" }, "3": { "name": "entity.name.enum.zeek" } } }, { "match": "\\b(event)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)(?=s*\\()", "captures": { "1": { "name": "storage.type.zeek" }, "2": { "name": "entity.name.function.event.zeek" } } }, { "match": "\\b(hook)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)(?=s*\\()", "captures": { "1": { "name": "storage.type.zeek" }, "2": { "name": "entity.name.function.hook.zeek" } } }, { "match": "\\b(function)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)(?=s*\\()", "captures": { "1": { "name": "storage.type.zeek" }, "2": { "name": "entity.name.function.zeek" } } }, { "name": "keyword.other.zeek", "match": "\\b(redef)\\b" }, { "name": "storage.type.zeek", "match": "\\b(any)\\b" }, { "name": "storage.type.zeek", "match": "\\b(enum|record|set|table|vector)\\b" }, { "match": "\\b(opaque)\\s+(of)\\s+((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)\\b", "captures": { "1": { "name": "storage.type.zeek" }, "2": { "name": "keyword.operator.zeek" }, "3": { "name": "storage.type.zeek" } } }, { "name": "keyword.operator.zeek", "match": "\\b(of)\\b" }, { "name": "storage.type.zeek", "match": "\\b(addr|bool|count|double|file|int|interval|pattern|port|string|subnet|time)\\b" }, { "name": "storage.type.zeek", "match": "\\b(function|hook|event)\\b" }, { "name": "storage.modifier.zeek", "match": "\\b(global|local|const|option)\\b" }, { "name": "entity.name.function.call.zeek", "match": "\\b((?:[A-Za-z_][A-Za-z_0-9]*)(?:::(?:[A-Za-z_][A-Za-z_0-9]*))*)(?=s*\\()" }, { "name": "punctuation.section.block.begin.zeek", "match": "\\{" }, { "name": "punctuation.section.block.end.zeek", "match": "\\}" }, { "name": "punctuation.section.brackets.begin.zeek", "match": "\\[" }, { "name": "punctuation.section.brackets.end.zeek", "match": "\\]" }, { "name": "punctuation.section.parens.begin.zeek", "match": "\\(" }, { "name": "punctuation.section.parens.end.zeek", "match": "\\)" } ] }