// This is a TextMate grammar distributed by `starry-night`. // This grammar is developed at // // and licensed `mit`. // See for more info. /** * @import {Grammar} from '@wooorm/starry-night' */ /** @type {Grammar} */ const grammar = { extensions: ['.nasl'], names: ['nasl'], patterns: [ {include: '#pure_string'}, {include: '#impure_string'}, {include: '#comment'}, {include: '#augmented_assign_operators'}, {include: '#arithmetic_operators'}, {include: '#increment_decrement_operators'}, {include: '#assignment_operator'}, {include: '#logical_operators'}, {include: '#comparison_operators'}, {include: '#hexadecimal_literal'}, {include: '#octal_literal'}, {include: '#decimal_literal'}, {include: '#language_constants'}, {include: '#keywords'}, {include: '#builtin_variable_names'}, {include: '#builtin_constant_names'}, {include: '#loc_keyword'}, {include: '#glob_keyword'}, {include: '#var_keyword'}, {include: '#new_keyword'}, {include: '#delete_keyword'}, {include: '#include_keyword'}, {include: '#this_keyword'}, {include: '#super_keyword'}, {include: '#block'}, {include: '#function_call'}, {include: '#namespace_prefix'}, {include: '#keyword_arguments'}, {include: '#namespace_storage_type'}, {include: '#object_storage_type'}, {include: '#function_definition'}, {include: '#comment_block'} ], repository: { arithmetic_operators: { match: '\\+|\\-|\\*|\\*\\*|/|%|<<|>>|>>>|&|\\||\\^|~', name: 'keyword.operator.arithmetic.nasl' }, assignment_operator: { match: '\\=', name: 'keyword.operator.assignment.nasl' }, augmented_assign_operators: { match: '\\+\\=|-\\=|\\*\\=|/\\=|//\\=|%\\=|&\\=|\\|\\=|\\^\\=|>>\\=|>>>\\=|<<\\=|\\*\\*\\=', name: 'keyword.operator.assignment.augmented.nasl' }, block: { begin: '\\{', end: '\\}', name: 'meta.block.nasl', patterns: [{include: '#block_innards'}] }, block_innards: { patterns: [ {include: '#function_call'}, {include: '#block'}, {include: '$base'} ] }, builtin_constant_names: { match: '\\b(pcap_timeout|IPPROTO_TCP|IPPROTO_ICMP|IPPROTO_IGMP|IPPROTO_UDP|ENCAPS_SSLv23|ENCAPS_SSLv2|ENCAPS_SSLv3|ENCAPS_TLSv1|ENCAPS_TLSv1_1|ENCAPS_TLSv1_2|ENCAPS_TLSv1_3|ENCAPS_VERIFY_PEER|ENCAPS_VERIFY_HOST|ENCAPS_UNSAFE_DHKEYLEN|ENCAPS_DISABLE_SSLv2|ENCAPS_DISABLE_SSLv3|ENCAPS_DISABLE_TLSv1|ENCAPS_DISABLE_TLSv1_1|ENCAPS_DISABLE_TLSv1_2|ENCAPS_DISABLE_TLSv1_3|NID_SHA1|NID_SHA256|NID_SHA512|NESSUS_3|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG|IP_DF|IP_MF|IP_OFFMASK|ACT_GATHER_INFO|ACT_ATTACK|ACT_MIXED_ATTACK|ACT_DESTRUCTIVE_ATTACK|ACT_DENIAL|ACT_SCANNER|ACT_SETTINGS|ACT_KILL_HOST|ACT_FLOOD|ACT_COMPLIANCE_CHECK|ACT_PATCH_SETUP|ACT_PATCH_APPLY|ACT_PATCH_POST_APPLY|ACT_THIRD_PARTY_INFO|ACT_END|ACT_END_REPORT|ACT_END2|NOERR|ETIMEDOUT|ECONNRESET|EUNREACH|EUNKNOWN|ESSL|EINPROGRESS|ECONNREFUSED|ENOBUFS|EACCES|EADDRNOTAVAIL|EINVAL|ENOTSTARTED|EROLLEDBACK|EROLLBACKFAILED|ECOMMITFAILED|SO_PID|SO_SEND_CHUNK_SIZE|SO_RX|SO_TX|Z_RLE|Z_HUFFMAN_ONLY|Z_FILTERED|SEEK_CUR|SEEK_END|DLT_FDDI|DLT_ENC|DLT_EN10MB|DLT_IEEE802|DLT_SLIP|DLT_LINUX_SLL|DLT_LOOP|DLT_NULL|DLT_PPP_SERIAL|DLT_PPP_ETHER|DLT_PPP_BSDOS|DLT_SLIP_BSDOS|DLT_PPP|DLT_RAW|DLT_UNKNOWN|N_STATE_DIR|N_LOG_DIR|N_CONF_DIR|N_CA_PUB_DIR|N_CA_PRIV_DIR|N_WWW_DIR|N_PLUGIN_DIR|N_REPORT_ENGINE_DIR|N_AUDITS_DIR|N_TOOLS_DIR|N_WIZARDS_DIR|N_SBIN_DIR|N_BIN_DIR|N_REMOTE_DIR|N_TEMPLATES_DIR|N_LIB_DIR|N_LIBEXEC_DIR|SHUT_RD|SHUT_WR|SHUT_RDWR|XMLRPC_CTRL_SCAN_STOP|XMLRPC_CTRL_SCAN_PAUSE|XMLRPC_CTRL_SCAN_RESUME|XMLRPC_CTRL_SCAN_KILL|AF_INET|AF_INET6|NC_ENCODE_XML|NC_ENCODE_JSON|NC_ENCODE_RAW|DB_ACL_ATTACH|DB_ACL_DETACH|DB_ACL_ANALYZE|DB_ACL_CREATE_VTABLE|DB_ACL_DROP_VTABLE|DB_ACL_FUNCTION|DB_ACL_SAVEPOINT|JCS_UNKNOWN|JCS_GRAYSCALE|JCS_RGB|JCS_YCbCr|JCS_CMYK|JCS_YCCK|XML_PARSE_NOENT|XML_PARSE_DTDLOAD|XML_PARSE_DTDATTR|XML_PARSE_DTDVALID|XML_PARSE_NOERROR|XML_PARSE_NOWARNING|XML_PARSE_PEDANTIC|XML_PARSE_NOBLANKS|XML_PARSE_SAX1|XML_PARSE_XINCLUDE|XML_PARSE_NONET|XML_PARSE_NODICT|XML_PARSE_NSCLEAN|XML_PARSE_NOCDATA|XML_PARSE_NOXINCNODE|XML_PARSE_COMPACT|XML_PARSE_OLD10|XML_PARSE_NOBASEFIX|XML_PARSE_HUGE|XML_PARSE_OLDSAX|XML_PARSE_IGNORE_ENC|XML_PARSE_BIG_LINES|XMLSEC_KEY_FORMAT_BINARY|XMLSEC_KEY_FORMAT_PEM|XMLSEC_KEY_FORMAT_DER|XMLSEC_KEY_FORMAT_PKCS8_PEM|XMLSEC_KEY_FORMAT_PKCS8_DER|XMLSEC_KEY_FORMAT_PKCS12|XMLSEC_KEY_FORMAT_CERT_PEM|XMLSEC_KEY_FORMAT_CERT_DER|SHARED_OBJECTS|FORK_SHARED_GLOBALS|FORK_SHARED_OBJECTS|FORK_TERM_ON_RELOAD|ENV_APP|ENV_SCRIPT|ENV_RUNTIME|ENV_OS|ENV_HOST|ENV_SYSTEM|ENV_PLUGIN|ENV_SCAN|PRODUCT_NESSUSD|PRODUCT_WIN_AGENT|PRODUCT_UNIX_AGENT|PRODUCT_NESSUSD_NSX|SERIALIZE_NONE|SERIALIZE_JSON|SERIALIZE_XML|SERIALIZE_URL|SERIALIZE_URL_QUERY|SERIALIZE_URL_PATH|SERIALIZE_ZIP|SERIALIZE_FORMAT|SERIALIZE_OBJECT|SERIALIZE_STRICT|SERIALIZE_FLOATS_TO_STRING|SKTEX_KDC|SKTEX_PROXY|SKTEX_TCP|SKTEX_UDP|SKTEX_NOBLOCK|SKTEX_SSH|SKTEX_SMB|NOGEX_DFLT|DB_ENC_NONE|DB_ENC_MASTER_KEY|DB_ENC_DEFAULT_KEY|DB_ENC_RAW_KEY|DB_ENC_PASSWORD|DB_COMP_NONE|DB_COMP_ZLIB|DB_COMP_SNAPPY|OP_MODE_OFB128|OP_MODE_XTS128|TIME_OFDAY|TIME_UNIX|TIME_UTC|TIME_LOCAL|Z_NO_FLUSH|Z_FINISH|Z_PARTIAL_FLUSH|RSA_PKCS1_PADDING|RSA_PKCS1_OAEP_PADDING|RSA_NO_PADDING|NASL_TYPE_UNSET|NASL_TYPE_INT|NASL_TYPE_UINT|NASL_TYPE_NUMBER|NASL_TYPE_STRING|NASL_TYPE_DATA|NASL_TYPE_STRDATA|NASL_TYPE_BOOL|NASL_TYPE_ARRAY|NASL_TYPE_LIST|NASL_TYPE_FUNCTION|NASL_TYPE_OBJECT|SCAN_ERROR_UNRESOLVEABLE_TARGET|SCAN_ERROR_UNPARSEABLE_TARGET|SCAN_ERROR_RESTRICTED_TARGET|SCAN_ERROR_DISALLOWED_TARGET|SCAN_ERROR_ESSENTIALS_SCAN_TARGET_LIMIT|SCAN_ERROR_LICENSE_SCAN_TARGET_LIMIT|SCAN_ERROR_ESSENTIALS_OVERALL_TARGET_LIMIT|SCAN_ERROR_EVAL_OVERALL_TARGET_LIMIT|SCAN_ERROR_LICENSE_OVERALL_TARGET_LIMIT|SCAN_ERROR_INTERFACE_PACKET_FORGERY_UNAVAILABLE|SCAN_ERROR_VM_PACKET_FORGERY_UNAVAILABLE|SCAN_ERROR_INTERFACE_PACKET_FORGERY_UNRELIABLE|SCAN_ERROR_PACKET_CAPTURE_TRUNCATION|SCAN_ERROR_TARGET_UNREACHABLE|SCAN_ERROR_TARGET_CONGESTION|SCAN_ERROR_AGENT_SCAN_NOT_STARTED|SCAN_ERROR_AGENT_SCANS_NOT_STARTED|SCAN_ERROR_AGENT_SCAN_NOT_COMPLETED|SCAN_ERROR_AGENT_SCANS_NOT_COMPLETED|SCAN_ERROR_AGENT_SCANS_ABORTED|SCAN_ERROR_SCANNER_IMPORT_FAILURE|SCAN_ERROR_AGENT_IMPORT_FAILURE|SCAN_ERROR_NODE_IMPORT_FAILURE|SCAN_ERROR_ATTACHMENT_NOT_FOUND|SCAN_ERROR_ATTACHMENT_TOO_LARGE|SCAN_ERROR_AUDIT_DEPRECATED|SCAN_ERROR_EMAIL_FAILURE|SCAN_ERROR_PLUGIN_GENERIC|SCAN_ERROR_PORTSCANNER_PORT_LIMIT|SCAN_ERROR_REPORT_PORT_LIMIT|SCAN_ERROR_SCRATCHPAD_SIZE_LIMIT|IPFMT_IP6_NO_SCOPE|OP_APPEND|OP_DELETE|OP_INSERT|NID_X25519|NID_X448|NID_ED25519|NID_ED448|SUCCESS|E_EXEC_FAILED|E_TRUNCATED|E_TIMEOUT|E_OOM|E_IO|E_INVAL|ON_OVERFLOW_ABORT|ON_OVERFLOW_FAIL|ON_OVERFLOW_TRUNCATE|FUNCTION_NAME|SCRIPT_NAME|ACT_INIT|ENCAPS_IP|MSG_OOB|IPPROTO_IP|TH_FIN|description|COMMAND_LINE|NASL_LEVEL|LINE_NUMBER)\\b', name: 'support.constant.builtin.nasl' }, builtin_variable_names: { match: '\\b(__FCT_ANON_ARGS|_FCT_ANON_ARGS)\\b', name: 'support.variable.builtin.nasl' }, comment: { captures: {1: {name: 'punctuation.definition.comment.nasl'}}, match: '(#|//).*$\\n?', name: 'comment.line.single.nasl' }, comment_block: { begin: '\\s*/\\*', captures: {1: {name: 'punctuation.definition.comment.nasl'}}, end: '\\*/', name: 'comment.block.nasl' }, comparison_operators: { match: '<\\=|>\\=|\\=\\=|<|>|\\!\\=|><|>\\!<|\\!~|\\=~', name: 'keyword.operator.comparison.nasl' }, decimal_literal: { match: '\\b([1-9]+[0-9]*|0)', name: 'constant.numeric.integer.decimal.nasl' }, delete_keyword: {match: '\\b(delete)\\b(?!:)', name: 'keyword.delete.nasl'}, entity_name_function: { patterns: [{include: '#illegal_names'}, {include: '#identifier'}] }, escaped_char: { captures: { 1: {name: 'constant.character.escape.hex.nasl'}, 10: {name: 'constant.character.escape.linefeed.nasl'}, 11: {name: 'constant.character.escape.return.nasl'}, 12: {name: 'constant.character.escape.tab.nasl'}, 13: {name: 'constant.character.escape.vertical-tab.nasl'}, 2: {name: 'constant.character.escape.octal.nasl'}, 3: {name: 'constant.character.escape.newline.nasl'}, 4: {name: 'constant.character.escape.backlash.nasl'}, 5: {name: 'constant.character.escape.double-quote.nasl'}, 6: {name: 'constant.character.escape.single-quote.nasl'}, 7: {name: 'constant.character.escape.bell.nasl'}, 8: {name: 'constant.character.escape.backspace.nasl'}, 9: {name: 'constant.character.escape.formfeed.nasl'} }, match: '(\\\\x[0-9A-Fa-f]{2})|(\\\\[0-7]{3})|(\\\\\\n)|(\\\\\\\\)|(\\\\\\")|(\\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)' }, function_call: { captures: { 1: {name: 'punctuation.whitespace.function-call.leading.nasl'}, 2: {name: 'support.function.any-method.nasl'}, 3: {name: 'punctuation.definition.parameters.nasl'} }, match: '(?x) (?: (?= \\s ) (?:(?<=else|return) | (?