Warning, /frameworks/syntax-highlighting/data/syntax/varnishtest.xml is written in an unsupported language. File is not indexed.
0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language [
0003 <!ENTITY tab "	">
0004 ]>
0005 <language name="Varnish Test Case language" version="14" kateversion="5.79" section="Configuration" extensions="*.vtc" author="Xavier Guerrin (xavier@tuxfamily.org)" license="WTFPL" priority="9">
0006 <highlighting>
0007 <list name="VSLGrouping">
0008 <!-- Extracted from lib/libvarnishapi/vsl_arg.c -->
0009 <item>raw</item>
0010 <item>vxid</item>
0011 <item>request</item>
0012 <item>session</item>
0013 </list>
0014 <list name="VSLTags">
0015 <!--
0016 Extracted using:
0017 perl -nlE 'push(@tags, $1) if m#^([^ ]+) - #; END { map { printf(" <item>%s</item>\n", $_); } @tags; }' lib/libvarnishapi/vsl-tags.rst
0018 -->
0019 <item>Backend</item>
0020 <item>BackendClose</item>
0021 <item>BackendOpen</item>
0022 <item>BackendReuse</item>
0023 <item>Backend_health</item>
0024 <item>Begin</item>
0025 <item>BereqAcct</item>
0026 <item>BereqHeader</item>
0027 <item>BereqMethod</item>
0028 <item>BereqProtocol</item>
0029 <item>BereqURL</item>
0030 <item>BerespHeader</item>
0031 <item>BerespProtocol</item>
0032 <item>BerespReason</item>
0033 <item>BerespStatus</item>
0034 <item>BogoHeader</item>
0035 <item>CLI</item>
0036 <item>Debug</item>
0037 <item>ESI_BodyBytes</item>
0038 <item>ESI_xmlerror</item>
0039 <item>End</item>
0040 <item>Error</item>
0041 <item>ExpBan</item>
0042 <item>ExpKill</item>
0043 <item>FetchError</item>
0044 <item>Fetch_Body</item>
0045 <item>Gzip</item>
0046 <item>Hash</item>
0047 <item>Hit</item>
0048 <item>HitPass</item>
0049 <item>HttpGarbage</item>
0050 <item>Length</item>
0051 <item>Link</item>
0052 <item>LostHeader</item>
0053 <item>ObjHeader</item>
0054 <item>ObjProtocol</item>
0055 <item>ObjReason</item>
0056 <item>ObjStatus</item>
0057 <item>PipeAcct</item>
0058 <item>ReqAcct</item>
0059 <item>ReqHeader</item>
0060 <item>ReqMethod</item>
0061 <item>ReqProtocol</item>
0062 <item>ReqStart</item>
0063 <item>ReqURL</item>
0064 <item>RespHeader</item>
0065 <item>RespProtocol</item>
0066 <item>RespReason</item>
0067 <item>RespStatus</item>
0068 <item>SessClose</item>
0069 <item>SessOpen</item>
0070 <item>Storage</item>
0071 <item>TTL</item>
0072 <item>Timestamp</item>
0073 <item>VCL_Error</item>
0074 <item>VCL_Log</item>
0075 <item>VCL_acl</item>
0076 <item>VCL_call</item>
0077 <item>VCL_return</item>
0078 <item>VCL_trace</item>
0079 <item>VSL</item>
0080 <item>WorkThread</item>
0081 </list>
0082 <contexts>
0083 <!-- default context: define main keywords -->
0084 <context name="vtcnormal_text" attribute="Normal Text" lineEndContext="#stay">
0085 <IncludeRules context="global_directives_restricted" />
0086 <IncludeRules context="global_directives" />
0087 </context>
0088
0089 <!-- directives that can be encountered at global scope but not within a loop -->
0090 <context name="global_directives_restricted" attribute="Normal Text" lineEndContext="#stay">
0091 <StringDetect firstNonSpace="true" attribute="Keyword" context="varnishtest_declaration" String="varnishtest" />
0092 <StringDetect firstNonSpace="true" attribute="Keyword" context="feature_instruction" String="feature" />
0093 <RegExpr attribute="Keyword" context="#stay" String="^\s*random\s*$" column="0" />
0094 </context>
0095
0096 <!-- directives that can be encountered at global scope, either directly or within a loop -->
0097 <context name="global_directives" attribute="Normal Text" lineEndContext="#stay">
0098 <IncludeRules context="comments" />
0099 <StringDetect firstNonSpace="true" attribute="Keyword" context="client_declaration" String="client" />
0100 <StringDetect firstNonSpace="true" attribute="Keyword" context="server_declaration" String="server" />
0101 <StringDetect firstNonSpace="true" attribute="Keyword" context="varnish_declaration" String="varnish" />
0102 <StringDetect firstNonSpace="true" attribute="Keyword" context="logexpect_declaration" String="logexpect" />
0103 <StringDetect firstNonSpace="true" attribute="Keyword" context="sema_instruction" String="sema" />
0104 <StringDetect firstNonSpace="true" attribute="Keyword" context="shell_instruction" String="shell" />
0105 <StringDetect firstNonSpace="true" attribute="Keyword" context="delay_instruction" String="delay" />
0106 <StringDetect firstNonSpace="true" attribute="Keyword" context="global_loop_instruction" String="loop" />
0107 </context>
0108
0109 <!-- Strings delimited with double quotes -->
0110 <context name="strings" attribute="Normal Text" lineEndContext="#stay">
0111 <DetectChar char=""" context="string" attribute="String" />
0112 </context>
0113 <context name="string" attribute="String" lineEndContext="#pop">
0114 <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
0115 <DetectChar attribute="String" context="#pop" char=""" />
0116 </context>
0117
0118 <!-- The following contexts (quoted-, brace- and unquoted- strings) make their parent pop as soon as they parsed a string. -->
0119 <context name="quoted-strings" attribute="Normal Text" lineEndContext="#stay">
0120 <DetectChar char=""" context="quoted-string" attribute="String" />
0121 </context>
0122 <context name="quoted-string" attribute="String" lineEndContext="#pop#pop">
0123 <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
0124 <DetectChar attribute="String" context="#pop#pop" char=""" />
0125 </context>
0126
0127 <context name="brace-strings" attribute="Normal Text" lineEndContext="#pop">
0128 <DetectChar attribute="String" context="brace-string" char="{" beginRegion="string_block" />
0129 </context>
0130 <context name="brace-string" attribute="String" lineEndContext="#stay">
0131 <!--
0132 strings delimited with braces do not require to escape closing braces;
0133 therefore, we have to use an extra context to keep track of opening and closing braces
0134 -->
0135 <DetectChar attribute="String" context="brace-string-internal" char="{" />
0136 <DetectChar attribute="String" context="#pop#pop" char="}" endRegion="string_block" />
0137 </context>
0138 <context name="brace-string-internal" attribute="String" lineEndContext="#stay">
0139 <DetectChar attribute="String" context="#pop" char="}" />
0140 </context>
0141
0142 <context name="unquoted-strings" attribute="String" lineEndContext="#pop">
0143 <RegExpr attribute="String" context="unquoted-string" String="[^ ]" />
0144 </context>
0145 <context name="unquoted-string" attribute="String" lineEndContext="#pop#pop">
0146 <AnyChar attribute="Normal Text" context="#pop#pop" String="&tab; " />
0147 </context>
0148
0149 <!-- This context exits as soon as it parsed a string, be it defined between braces, quotes or spaces -->
0150 <context name="string-arg" attribute="Normal Text" lineEndContext="#stay">
0151 <RegExpr attribute="HTTP announce" context="#pop" String="HTTP/[0-9.]+" />
0152 <RegExpr attribute="HTTP method" context="#pop" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
0153 <RegExpr attribute="HTTP WebDAV method" context="#pop" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
0154 <RegExpr attribute="HTTP custom method" context="#pop" String="\s+(PURGE|PURGESTR)" />
0155 <IncludeRules context="brace-strings" />
0156 <IncludeRules context="quoted-strings" />
0157 <IncludeRules context="unquoted-strings" />
0158 </context>
0159
0160 <!-- This context exits as soon as it parsed an integer. -->
0161 <context name="int-arg" attribute="Normal Text" lineEndContext="#pop">
0162 <Int attribute="Decimal" context="#pop" />
0163 </context>
0164
0165 <!-- This context exits as soon as it parsed a status integer. -->
0166 <context name="status-arg" attribute="String" lineEndContext="#pop">
0167 <!-- HTTP status can be provided within quotes too. -->
0168 <RegExpr attribute="Decimal" context="#pop" String="("[12345][0-9]{2}"|[12345][0-9]{2})(?![0-9])" />
0169 </context>
0170
0171 <!-- Comments -->
0172 <context name="shell-like-comment" attribute="Comment" lineEndContext="#pop">
0173 <DetectSpaces />
0174 <IncludeRules context="##Comments" />
0175 <DetectIdentifier />
0176 </context>
0177 <context name="comments" attribute="Comment" lineEndContext="#pop">
0178 <DetectChar char="#" context="shell-like-comment" attribute="Comment" />
0179 </context>
0180
0181 <!-- Define base elements that used within various contexts -->
0182 <context name="base_elements" attribute="Normal Text" lineEndContext="#stay">
0183 <RegExpr attribute="HTTP announce" context="#stay" String="HTTP/[0-9.]+" />
0184 <RegExpr attribute="HTTP method" context="#stay" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
0185 <RegExpr attribute="HTTP WebDAV method" context="#stay" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
0186 <RegExpr attribute="HTTP custom method" context="#stay" String="\s+(PURGE|PURGESTR)" />
0187 <Float attribute="Float" context="#stay" />
0188 <Int attribute="Decimal" context="#stay" />
0189 <IncludeRules context="strings" />
0190 <IncludeRules context="comments" />
0191 </context>
0192
0193 <!--
0194 Define syntax of the -expect command for server and client objects.
0195 Written from cmd_http_expect() in bin/varnishtest/vtc_http.c.
0196 -->
0197 <context name="http_expectation" attribute="Normal Text" lineEndContext="#pop">
0198 <IncludeRules context="comments" />
0199 <RegExpr attribute="Float" context="http_expectation_operator" String="[0-9\.]+(\s+|$)" />
0200 <RegExpr attribute="Decimal" context="http_expectation_operator" String="[0-9]+(\s+|$)" />
0201 <StringDetect attribute="Keyword" context="http_expectation_operator" String="<undef>" />
0202 <!-- Written from cmd_var_resolve() in bin/varnishtest/vtc_http.c. -->
0203 <RegExpr attribute="HTTP Property" context="http_expectation_operator" String="req\.(method|url|proto|bodylen)|resp\.(proto|status|msg|chunklen|bodylen|body)" />
0204 <RegExpr attribute="HTTP X- Header" context="http_expectation_operator" String="(req|resp)\.http\.X\-[\-_A-Za-z0-9]*" />
0205 <RegExpr attribute="HTTP Header" context="http_expectation_operator" String="(req|resp)\.http\.[A-Za-z][\-_A-Za-z0-9]*" />
0206 <RegExpr attribute="HTTP announce" context="http_expectation_operator" String="HTTP/[0-9\.]+" />
0207 <RegExpr attribute="HTTP method" context="http_expectation_operator" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
0208 <RegExpr attribute="HTTP WebDAV method" context="http_expectation_operator" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
0209 <RegExpr attribute="HTTP custom method" context="http_expectation_operator" String="\s+(PURGE|PURGESTR)" />
0210 <DetectChar attribute="String" context="http_expectation_arg1_brace-string" char="{" beginRegion="string_block" />
0211 <DetectChar attribute="String" context="http_expectation_arg1_quoted-string" char=""" />
0212 <RegExpr attribute="Normal Text" context="http_expectation_arg1_unquoted-string" String="[^ ]" lookAhead="true" />
0213 </context>
0214 <context name="http_expectation_operator" attribute="Normal Text" lineEndContext="#pop#pop">
0215 <IncludeRules context="comments" />
0216 <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="=" char1="=" />
0217 <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="!" char1="=" />
0218 <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char=">" char1="=" />
0219 <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="<" char1="=" />
0220 <AnyChar attribute="Comparison Operator" context="common_expectation_second_arg" String="><~" />
0221 <Detect2Chars attribute="Comparison Operator" context="common_expectation_second_arg" char="!" char1="~" />
0222 </context>
0223 <context name="common_expectation_second_arg" attribute="Normal Text" lineEndContext="#pop#pop#pop">
0224 <IncludeRules context="comments" />
0225 <RegExpr attribute="Float" context="common_expectation_end" String="[0-9\.]+(\s+|$)" />
0226 <RegExpr attribute="Decimal" context="common_expectation_end" String="[0-9]+(\s+|$)" />
0227 <StringDetect attribute="Keyword" context="common_expectation_end" String="<undef>" />
0228 <!-- Written from cmd_var_resolve() in bin/varnishtest/vtc_http.c. -->
0229 <RegExpr attribute="HTTP Property" context="common_expectation_end" String="req\.(method|url|proto|bodylen)|resp\.(proto|status|msg|chunklen|bodylen|body)" />
0230 <RegExpr attribute="HTTP X- Header" context="common_expectation_end" String="(req|resp)\.http\.X\-[\-_A-Za-z0-9]*" />
0231 <RegExpr attribute="HTTP Header" context="common_expectation_end" String="(req|resp)\.http\.[A-Za-z][\-_A-Za-z0-9]*" />
0232 <RegExpr attribute="HTTP announce" context="common_expectation_end" String="HTTP/[0-9\.]+" />
0233 <RegExpr attribute="HTTP method" context="common_expectation_end" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
0234 <RegExpr attribute="HTTP WebDAV method" context="common_expectation_end" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
0235 <RegExpr attribute="HTTP custom method" context="common_expectation_end" String="\s+(PURGE|PURGESTR)" />
0236 <DetectChar attribute="String" context="common_expectation_arg2_brace-string" char="{" beginRegion="string_block" />
0237 <DetectChar attribute="String" context="common_expectation_arg2_quoted-string" char=""" />
0238 <RegExpr attribute="Normal Text" context="common_expectation_arg2_unquoted-string" String="[^ ]" lookAhead="true" />
0239 </context>
0240 <context name="common_expectation_end" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
0241 <IncludeRules context="comments" />
0242 </context>
0243
0244 <!-- Contexts to parse first argument of server/client expectations as a string -->
0245 <context name="http_expectation_arg1_brace-string" attribute="String" lineEndContext="#stay">
0246 <DetectChar attribute="String" context="brace-string-internal" char="{" />
0247 <DetectChar attribute="String" context="http_expectation_operator" char="}" endRegion="string_block" />
0248 </context>
0249 <context name="http_expectation_arg1_quoted-string" attribute="String" lineEndContext="#pop#pop">
0250 <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
0251 <DetectChar attribute="String" context="http_expectation_operator" char=""" />
0252 </context>
0253 <context name="http_expectation_arg1_unquoted-string" attribute="String" lineEndContext="#pop#pop">
0254 <AnyChar attribute="Normal Text" context="http_expectation_operator" String="&tab; " />
0255 </context>
0256
0257 <!-- Contexts to parse second argument of all expectations as a string -->
0258 <context name="common_expectation_arg2_brace-string" attribute="String" lineEndContext="#stay">
0259 <DetectChar attribute="String" context="brace-string-internal" char="{" />
0260 <DetectChar attribute="String" context="common_expectation_end" char="}" endRegion="string_block" />
0261 </context>
0262 <context name="common_expectation_arg2_quoted-string" attribute="String" lineEndContext="#pop#pop">
0263 <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
0264 <DetectChar attribute="String" context="common_expectation_end" char=""" />
0265 </context>
0266 <context name="common_expectation_arg2_unquoted-string" attribute="String" lineEndContext="#pop#pop">
0267 <AnyChar attribute="Normal Text" context="common_expectation_end" String="&tab; " />
0268 </context>
0269
0270 <!--
0271 Define syntax of the -expect command for varnish objects.
0272 Written from varnish_expect() in bin/varnishtest/vtc_varnish.c
0273 -->
0274 <context name="varnish_expectation" attribute="Normal Text" lineEndContext="#pop">
0275 <!-- Varnish's expect takes a Varnish counter as first argument. -->
0276 <IncludeRules context="comments" />
0277 <!-- Mostly extracted using man 7 varnish-counters | grep - - - | grep _ | sort -->
0278 <!-- MEMPOOL.* found out in c00050.vtc -->
0279 <RegExpr attribute="VarnishStat metric" context="varnish_expectation_operator" String="backend_(?:busy|conn|fail|recycle|req|retry|reuse|toolate|unhealthy)|bans_(?:added|completed|deleted|dups|lurker_(?:contention|obj_killed|tested|tests_tested)|obj|obj_killed|persisted_(bytes|fragmentation)|req|tested|tests_tested)|busy_(?:sleep|wakeup)|cache_(?:hit(pass)?|miss)|client_(?:req|req_4(?:00|11|13|17))|esi_(?:errors|warnings)|exp_(?:mailed|received)|fetch_(?:1xx|204|304|bad|chunked|close|eof|failed|head|length|oldhttp|zero)|hcb_(?:insert|lock|nolock)|n_(?:backend|expired|gunzip|gzip|lru_moved|lru_nuked|obj_purged|object|objectcore|objecthead|purges|vampireobject|vcl|vcl_avail|vcl_discard|waitinglist)|s_(?:fetch|pass|pipe|pipe_(?:hdrbytes|in|out)|req|(req|resp)_(?:body|hdr)bytes|sess|synth)|sess_(?:closed|conn|drop|dropped|fail|herd|pipe_overflow|pipeline|queued|readahead)|shm_(?:cont|cycles|flushes|records|writes)|sms_(?:balloc|bfree|nbytes|nobj|nreq)|thread_(?:queue_len|created|destroyed|failed|limited)|vsm_(?:cooling|free|overflow(ed)?|user)|(?:bans|losthdr|pools|threads|uptime|vmods)|LCK\.(?:sm[spaf]|hsl|hcb|hcl|vcl|stat|sessmem|wstat|herder|wq|objhdr|exp|lru|cli|ban|vbp|vbe|backend)\.(?:creat|destroy|locks)|SMA\.[a-zA-Z0-9_\-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space))|SMF\.[a-zA-Z0-9_\-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space|smf|smf_frag|smf_large))|VBE\..+\.(?:happy|vcls|be(?:req|resp)_(?:body|hdr)bytes|pipe_(?:in|hdrbytes|out))|MEMPOOL\.vbc\.(?:pool|surplus|timeout)" />
0280 </context>
0281 <context name="varnish_expectation_operator" attribute="Normal Text" lineEndContext="#pop#pop">
0282 <IncludeRules context="comments" />
0283 <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="=" char1="=" />
0284 <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="!" char1="=" />
0285 <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char=">" char1="=" />
0286 <Detect2Chars attribute="Comparison Operator" context="varnish_expectation_second_arg" char="<" char1="=" />
0287 <AnyChar attribute="Comparison Operator" context="varnish_expectation_second_arg" String="><" />
0288 <!-- Varnish's expect does not handle the ~ and !~ operators -->
0289 </context>
0290 <context name="varnish_expectation_second_arg" attribute="Normal Text" lineEndContext="#pop">
0291 <!-- Varnish's expect takes an unsigned integer as second argument. -->
0292 <Int attribute="Decimal" context="common_expectation_end" />
0293 </context>
0294
0295 <!-- Define macros -->
0296 <context name="macro_accepted" attribute="String" lineEndContext="#pop">
0297 <Detect2Chars char="$" char1="{" attribute="String" context="macro_identifier" />
0298 </context>
0299 <context name="macro_identifier" attribute="String" lineEndContext="#pop#pop">
0300 <DetectChar char="}" attribute="String" context="#pop" />
0301 </context>
0302
0303 <!-- Define syntax for main keywords' options -->
0304 <context name="common_options" attribute="Normal Text" lineEndContext="#stay">
0305 <IncludeRules context="macro_accepted" />
0306 <IncludeRules context="base_elements" />
0307 </context>
0308
0309 <context name="client_options" attribute="Normal Text" lineEndContext="#stay">
0310 <!-- Extracted from bin/varnishtest/vtc_client.c -->
0311 <RegExpr attribute="Keyword" context="#stay" String="\-(?:run|start|wait)" />
0312 <StringDetect attribute="Keyword" context="int-arg" String="-repeat" />
0313 <StringDetect attribute="Keyword" context="string-arg" String="-connect" />
0314 <StringDetect attribute="Keyword" context="http_expectation" String="-expect" />
0315 <IncludeRules context="common_options" />
0316 </context>
0317
0318 <context name="server_options" attribute="Normal Text" lineEndContext="#stay" >
0319 <!-- Extracted from bin/varnishtest/vtc_server.c -->
0320 <RegExpr attribute="Keyword" context="#stay" String="\-(?:break|start|wait)" />
0321 <StringDetect attribute="Keyword" context="int-arg" String="-repeat" />
0322 <StringDetect attribute="Keyword" context="string-arg" String="-listen " />
0323 <StringDetect attribute="Keyword" context="http_expectation" String="-expect" />
0324 <IncludeRules context="common_options" />
0325 </context>
0326
0327 <context name="varnish_options" attribute="Normal Text" lineEndContext="#stay" >
0328 <!-- Extracted from bin/varnishtest/vtc_varnish.c -->
0329 <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|stop|wait|wait-running|wait-stopped)" />
0330 <RegExpr attribute="Keyword" context="string-arg" String="\-(?:arg|cli|cliok|storage) " />
0331 <StringDetect attribute="Keyword" context="clierr_options" String="-clierr " />
0332 <StringDetect attribute="Keyword" context="varnish_expectation" String="-expect" />
0333 <IncludeRules context="common_options" />
0334 </context>
0335
0336 <context name="logexpect_options" attribute="Normal Text" lineEndContext="#stay" >
0337 <!-- Extracted from bin/varnishtest/vtc_logexp.c -->
0338 <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|run|wait)" />
0339 </context>
0340
0341 <context name="clierr_options" attribute="Normal Text" lineEndContext="#pop">
0342 <!-- unlike clikok, clierr requires an integer argument first -->
0343 <Int attribute="Decimal" context="clierr_command" />
0344 <!-- It seems that integer can be provided within quotes though. -->
0345 <RegExpr attribute="Decimal" context="clierr_command" String=""[0-9]+" " />
0346 <IncludeRules context="comments" />
0347 </context>
0348 <context name="clierr_command" attribute="String" lineEndContext="#pop">
0349 <IncludeRules context="comments" />
0350 </context>
0351
0352 <context name="tx_options" attribute="Normal Text" lineEndContext="#pop">
0353 <IncludeRules context="comments" />
0354 <StringDetect attribute="Tx Keyword" String="-nolen" />
0355 <RegExpr attribute="Tx Keyword" context="string-arg" String="\-(?:body|gzipbody|hdr|proto) " />
0356 <RegExpr attribute="Tx Keyword" context="int-arg" String="\-(?:bodylen|gzip(?:len|residual|level))" />
0357 <LineContinue attribute="Normal Text" context="#stay" />
0358 </context>
0359
0360 <!-- Define syntax for the client-specific txreq keyword -->
0361 <context name="txreq_options" attribute="String" lineEndContext="#pop">
0362 <IncludeRules context="tx_options" />
0363 <RegExpr attribute="TxReq Keyword" context="string-arg" String="\-(?:req|url)" />
0364 </context>
0365
0366 <!-- Define syntax for the server-specific txresp keyword -->
0367 <context name="txresp_options" attribute="Normal Text" lineEndContext="#pop">
0368 <IncludeRules context="tx_options" />
0369 <StringDetect attribute="TxResp Keyword" context="string-arg" String="-msg" />
0370 <StringDetect attribute="TxResp Keyword" context="status-arg" String="-status" />
0371 </context>
0372
0373 <!-- Define syntax for the client-specific rxresp keyword -->
0374 <context name="rxresp_options" attribute="Normal Text" lineEndContext="#pop">
0375 <IncludeRules context="comments" />
0376 <StringDetect attribute="RxResp Keyword" String="-no_obj" />
0377 <LineContinue attribute="Normal Text" context="#stay" />
0378 </context>
0379
0380 <!-- varnishtest keyword -->
0381 <context name="varnishtest_declaration" attribute="Normal Text" lineEndContext="#pop">
0382 <IncludeRules context="strings" />
0383 <IncludeRules context="comments" />
0384 </context>
0385
0386 <!-- client/server HTTP commands -->
0387 <context name="clientserver_common_definition" attribute="Normal Text" lineEndContext="#stay">
0388 <IncludeRules context="comments" />
0389 <!-- Extracted using:
0390 perl -nlE '$p = 1 if m#http_cmds\[\]#; say if ($p); exit if ($p && m#^\}#);' vtc_http.c
0391 egrep '(^cmd_http_|^\s*ONLY_(CLIENT|SERVER))' bin/varnishtest/vtc_http.c
0392 -->
0393 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
0394 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="gunzip" />
0395 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="expect_close" />
0396 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="http_expectation" String="expect" />
0397 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
0398 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
0399 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="chunkedlen_instruction" String="chunkedlen" />
0400 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="chunked" />
0401 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
0402 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
0403 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="close" />
0404 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="accept" />
0405 <!-- loop is not there as its parsing changes depending on server or client. -->
0406 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="fatal" />
0407 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
0408 </context>
0409
0410 <!-- client keyword -->
0411 <context name="client_declaration" attribute="Normal Text" lineEndContext="#pop">
0412 <DetectIdentifier attribute="Client Identifier" context="client_identified" />
0413 </context>
0414 <context name="client_identified" attribute="String" lineEndContext="#pop">
0415 <IncludeRules context="client_options" />
0416 <DetectChar attribute="Region Marker" context="client_definition" char="{" beginRegion="client_block" />
0417 <LineContinue attribute="Normal Text" context="#stay" />
0418 </context>
0419 <context name="client_definition" attribute="Normal Text" lineEndContext="#stay">
0420 <IncludeRules context="clientserver_common_definition" />
0421 <!-- client-specific HTTP commands -->
0422 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="txreq_options" String="txreq" />
0423 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxresphdrs" />
0424 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="rxresp_options" String="rxresp" />
0425 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxchunk" />
0426 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="client_loop_instruction" String="loop" />
0427 <DetectChar attribute="Region Marker" context="client_postdefinition" char="}" endRegion="client_block" />
0428 </context>
0429 <context name="client_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
0430 <IncludeRules context="client_options" />
0431 <LineContinue attribute="Normal Text" context="#stay" />
0432 </context>
0433
0434 <!-- server keyword -->
0435 <context name="server_declaration" attribute="Normal Text" lineEndContext="#pop">
0436 <DetectIdentifier attribute="Server Identifier" context="server_identified" />
0437 </context>
0438 <context name="server_identified" attribute="String" lineEndContext="#pop">
0439 <IncludeRules context="server_options" />
0440 <DetectChar attribute="Region Marker" context="server_definition" char="{" beginRegion="server_block" />
0441 <LineContinue attribute="Normal Text" context="#stay" />
0442 </context>
0443 <context name="server_definition" attribute="Normal Text" lineEndContext="#stay">
0444 <IncludeRules context="clientserver_common_definition" />
0445 <!-- server-specific HTTP commands -->
0446 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxreqhdrs" />
0447 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxreq" />
0448 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="rxbody" />
0449 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="txresp_options" String="txresp" />
0450 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="server_loop_instruction" String="loop" />
0451 <DetectChar attribute="Region Marker" context="server_postdefinition" char="}" endRegion="server_block" />
0452 </context>
0453 <context name="server_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
0454 <IncludeRules context="server_options" />
0455 <LineContinue attribute="Normal Text" context="#stay" />
0456 </context>
0457
0458 <!-- varnish keyword -->
0459 <context name="varnish_declaration" attribute="Normal Text" lineEndContext="#pop">
0460 <DetectIdentifier attribute="Varnish Identifier" context="varnish_identified" />
0461 </context>
0462 <context name="varnish_identified" attribute="Normal Text" lineEndContext="#pop">
0463 <IncludeRules context="varnish_options" />
0464 <RegExpr attribute="Keyword" context="varnish_vclannounced" String="\s*\-vcl(?:\+backend)?" />
0465 <RegExpr attribute="Keyword" context="varnish_errvclannounced" String="\s*\-errvcl" />
0466 <LineContinue attribute="Normal Text" context="#stay" />
0467 </context>
0468 <context name="varnish_vclannounced" attribute="Normal Text" lineEndContext="#stay">
0469 <DetectChar attribute="Region Marker" context="varnish_vcldefinition" char="{" beginRegion="varnish_block" />
0470 </context>
0471 <context name="varnish_vcldefinition" attribute="Normal Text" lineEndContext="#stay">
0472 <IncludeRules context="##Varnish Configuration Language" />
0473 <DetectChar attribute="Region Marker" context="varnish_postvcldefinition" char="}" endRegion="varnish_block" />
0474 </context>
0475 <context name="varnish_postvcldefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop#pop">
0476 <IncludeRules context="varnish_options" />
0477 <LineContinue attribute="Normal Text" context="#stay" />
0478 </context>
0479 <context name="varnish_errvclannounced" attribute="Normal Text" lineEndContext="#stay">
0480 <DetectChar char=""" context="errvcl_expected_error_quoted" attribute="String" />
0481 <DetectChar char="{" context="errvcl_expected_error_brace" attribute="String" beginRegion="string_block" />
0482 </context>
0483 <context name="errvcl_expected_error_quoted" attribute="String" lineEndContext="#pop">
0484 <Detect2Chars attribute="String" context="#stay" char="\" char1=""" />
0485 <DetectChar attribute="String" context="varnish_errvcldefined" char=""" />
0486 </context>
0487 <context name="errvcl_expected_error_brace" attribute="String" lineEndContext="#pop">
0488 <DetectChar attribute="String" context="brace-string-internal" char="{" />
0489 <DetectChar attribute="String" context="varnish_errvcldefined" char="}" endRegion="string_block" />
0490 </context>
0491 <context name="varnish_errvcldefined" attribute="Normal Text" lineEndContext="#pop">
0492 <DetectChar attribute="Region Marker" context="varnish_errvclcode" char="{" beginRegion="errvclcode_block" />
0493 </context>
0494 <context name="varnish_errvclcode" attribute="Normal Text" lineEndContext="#stay">
0495 <DetectChar attribute="Normal Text" context="varnish_errvclcode-internal" char="{" />
0496 <DetectChar attribute="Region Marker" context="varnish_postvcldefinition" char="}" endRegion="errvclcode_block" />
0497 </context>
0498 <context name="varnish_errvclcode-internal" attribute="Normal Text" lineEndContext="#stay">
0499 <DetectChar attribute="Normal Text" context="varnish_errvclcode-internal" char="{" />
0500 <DetectChar attribute="Normal Text" context="#pop" char="}" />
0501 </context>
0502
0503 <context name="logexpect_declaration" attribute="Normal Text" lineEndContext="#pop">
0504 <DetectIdentifier attribute="LogExpect Identifier" context="logexpect_identified" />
0505 </context>
0506 <context name="logexpect_identified" attribute="Normal Text" lineEndContext="#pop">
0507 <LineContinue attribute="Normal Text" context="#stay" />
0508 <IncludeRules context="logexpect_options" />
0509 <!-- Extracted from bin/varnishtest/vtc_logexp.c -->
0510 <Detect2Chars attribute="Keyword" char="-" char1="v" context="logexpect_varnishinstance_arg" />
0511 <Detect2Chars attribute="Keyword" char="-" char1="g" context="logexpect_grouping_arg" />
0512 <Detect2Chars attribute="Keyword" char="-" char1="d" context="logexpect_headtailmode_arg" />
0513 <Detect2Chars attribute="Keyword" char="-" char1="q" context="logexpect_query_arg" />
0514 <DetectChar attribute="Region Marker" context="logexpect_definition" char="{" beginRegion="logexpect_block" />
0515 </context>
0516 <context name="logexpect_varnishinstance_arg" attribute="Normal Text" lineEndContext="#pop">
0517 <DetectIdentifier attribute="Varnish Identifier" context="#pop" />
0518 </context>
0519 <context name="logexpect_grouping_arg" attribute="Normal Text" lineEndContext="#pop">
0520 <keyword attribute="VSL Grouping" context="#pop" String="VSLGrouping" />
0521 </context>
0522 <context name="logexpect_headtailmode_arg" attribute="Normal Text" lineEndContext="#pop">
0523 <AnyChar attribute="Decimal" context="#pop" String="01" />
0524 </context>
0525 <context name="logexpect_query_arg" attribute="Normal Text" lineEndContext="#pop">
0526 <IncludeRules context="string-arg" />
0527 </context>
0528 <context name="logexpect_definition" attribute="Normal Text" lineEndContext="#stay">
0529 <DetectChar attribute="Region Marker" context="logexpect_postdefinition" char="}" endRegion="logexpect_block" />
0530 <StringDetect firstNonSpace="true" attribute="Action Keyword" context="logexpect_skip" String="expect" />
0531 </context>
0532 <context name="logexpect_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
0533 <IncludeRules context="logexpect_options" />
0534 </context>
0535 <context name="logexpect_skip" attribute="Normal Text" lineEndContext="#pop">
0536 <Int attribute="Decimal" context="logexpect_vxid" />
0537 <DetectChar attribute="Logical Operator" context="logexpect_vxid" char="*" />
0538 </context>
0539 <context name="logexpect_vxid" attribute="Normal Text" lineEndContext="#pop">
0540 <Int attribute="Decimal" context="logexpect_tag" />
0541 <AnyChar attribute="Logical Operator" context="logexpect_tag" String="*=" />
0542 </context>
0543 <context name="logexpect_tag" attribute="Normal Text" lineEndContext="#pop">
0544 <keyword attribute="VSL Tag" context="logexpect_regex" String="VSLTags" />
0545 <AnyChar attribute="Logical Operator" context="logexpect_regex" String="*=" />
0546 </context>
0547 <context name="logexpect_regex" attribute="String" lineEndContext="#pop">
0548 <IncludeRules context="brace-strings" />
0549 <IncludeRules context="quoted-strings" />
0550 </context>
0551
0552 <!-- sema keyword -->
0553 <context name="sema_instruction" attribute="Normal Text" lineEndContext="#pop">
0554 <DetectIdentifier attribute="Sema Identifier" context="sema_identified" />
0555 </context>
0556 <context name="sema_identified" attribute="Normal Text" lineEndContext="#pop#pop">
0557 <StringDetect attribute="Keyword" String="sync" />
0558 <Int attribute="Decimal" context="#stay" />
0559 <IncludeRules context="comments" />
0560 </context>
0561
0562 <!-- delay keyword -->
0563 <context name="delay_instruction" attribute="Normal Text" lineEndContext="#pop">
0564 <Float attribute="Float" context="#stay" />
0565 <Int attribute="Decimal" context="#stay" />
0566 <IncludeRules context="comments" />
0567 </context>
0568
0569 <!-- feature keyword -->
0570 <context name="feature_instruction" attribute="String" lineEndContext="#pop">
0571 <IncludeRules context="strings" />
0572 <IncludeRules context="comments" />
0573 </context>
0574
0575 <!-- chunkedlen keyword -->
0576 <context name="chunkedlen_instruction" attribute="Normal Text" lineEndContext="#pop">
0577 <Int attribute="Decimal" context="#stay" />
0578 <IncludeRules context="comments" />
0579 </context>
0580
0581 <!-- send / sendhex / chunk keywords -->
0582 <context name="send_instruction" attribute="Normal Text" lineEndContext="#pop">
0583 <IncludeRules context="string-arg" />
0584 <IncludeRules context="comments" />
0585 </context>
0586
0587 <!-- timeout keyword -->
0588 <context name="timeout_instruction" attribute="Normal Text" lineEndContext="#pop">
0589 <IncludeRules context="int-arg" />
0590 <IncludeRules context="comments" />
0591 </context>
0592
0593 <!-- loop keyword at global scope -->
0594 <context name="global_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
0595 <Int attribute="Decimal" context="global_loop_defined" />
0596 </context>
0597 <context name="global_loop_defined" attribute="Normal Text" lineEndContext="#stay">
0598 <DetectChar attribute="Region Marker" context="global_loop_code" char="{" beginRegion="loop_block" />
0599 </context>
0600 <context name="global_loop_code" attribute="Normal Text" lineEndContext="#stay">
0601 <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
0602 <IncludeRules context="global_directives" />
0603 </context>
0604
0605 <!-- loop keyword for client definitions -->
0606 <context name="client_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
0607 <Int attribute="Decimal" context="client_loop_defined" />
0608 </context>
0609 <context name="client_loop_defined" attribute="Normal Text" lineEndContext="#stay">
0610 <DetectChar attribute="Region Marker" context="client_loop_code" char="{" beginRegion="loop_block" />
0611 </context>
0612 <context name="client_loop_code" attribute="Normal Text" lineEndContext="#stay">
0613 <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
0614 <IncludeRules context="client_definition" />
0615 </context>
0616
0617 <!-- loop keyword for server definitions -->
0618 <context name="server_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
0619 <Int attribute="Decimal" context="server_loop_defined" />
0620 </context>
0621 <context name="server_loop_defined" attribute="Normal Text" lineEndContext="#stay">
0622 <DetectChar attribute="Region Marker" context="server_loop_code" char="{" beginRegion="loop_block" />
0623 </context>
0624 <context name="server_loop_code" attribute="Normal Text" lineEndContext="#stay">
0625 <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
0626 <IncludeRules context="server_definition" />
0627 </context>
0628
0629 <!-- shell keyword, one-line version -->
0630 <context name="shell_instruction" attribute="Normal Text" lineEndContext="#stay">
0631 <DetectChar attribute="Region Marker" context="shell_code" char="{" beginRegion="shell_block" />
0632 <IncludeRules context="quoted-strings" />
0633 <IncludeRules context="comments" />
0634 </context>
0635 <context name="shell_code" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Command##Bash">
0636 <DetectChar attribute="Region Marker" context="#pop#pop" char="}" endRegion="shell_block" />
0637 <!-- There does not seem to be a syntax highlighting dedicated to "standard shell" so let's use Bash instead -->
0638 <IncludeRules context="##Bash" />
0639 </context>
0640 </contexts>
0641 <itemDatas>
0642 <itemData name="Normal Text" defStyleNum="dsNormal" />
0643 <itemData name="Comment" defStyleNum="dsComment" />
0644 <itemData name="Keyword" defStyleNum="dsKeyword" />
0645 <itemData name="Tx Keyword" defStyleNum="dsOthers" /> <!-- #008000 -->
0646 <itemData name="TxReq Keyword" defStyleNum="dsOthers" /> <!-- #008000 -->
0647 <itemData name="TxResp Keyword" defStyleNum="dsOthers" /> <!-- #008000 -->
0648 <itemData name="RxResp Keyword" defStyleNum="dsOthers" /> <!-- #008000 -->
0649 <itemData name="Action Keyword" defStyleNum="dsKeyword" />
0650 <itemData name="Comparison Operator" defStyleNum="dsOthers" /> <!-- #008000 -->
0651 <itemData name="Logical Operator" defStyleNum="dsOthers" /> <!-- #008000 -->
0652 <itemData name="String" defStyleNum="dsString" />
0653 <itemData name="Region Marker" defStyleNum="dsNormal" />
0654 <itemData name="HTTP Property" defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #0000FF -->
0655 <itemData name="HTTP Header" defStyleNum="dsExtension" bold="0" italic="0" /> <!-- #0D62FF -->
0656 <itemData name="HTTP X- Header" defStyleNum="dsExtension" bold="0" italic="1" /> <!-- #0D62FF -->
0657 <itemData name="HTTP announce" defStyleNum="dsFunction" bold="1" /> <!-- #562579 -->
0658 <itemData name="HTTP method" defStyleNum="dsFunction" bold="1" /> <!-- #562579 -->
0659 <itemData name="HTTP WebDAV method" defStyleNum="dsFunction" bold="1" /> <!-- #562579 -->
0660 <itemData name="HTTP custom method" defStyleNum="dsFunction" bold="1" /> <!-- #562579 -->
0661 <itemData name="VarnishStat metric" defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #0000FF -->
0662 <itemData name="VSL Tag" defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #0000FF -->
0663 <itemData name="VSL Grouping" defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #0000FF -->
0664 <itemData name="Decimal" defStyleNum="dsDecVal" />
0665 <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
0666 <itemData name="Client Identifier" defStyleNum="dsExtension" bold="0" underline="1" /> <!-- #0D62FF -->
0667 <itemData name="Server Identifier" defStyleNum="dsExtension" bold="0" underline="1" /> <!-- #0D62FF -->
0668 <itemData name="Varnish Identifier" defStyleNum="dsExtension" bold="0" underline="1" /> <!-- #0D62FF -->
0669 <itemData name="LogExpect Identifier" defStyleNum="dsExtension" bold="0" underline="1" /> <!-- #0D62FF -->
0670 <itemData name="Sema Identifier" defStyleNum="dsExtension" bold="0" underline="1" /> <!-- #0D62FF -->
0671 </itemDatas>
0672 </highlighting>
0673 <general>
0674 <comments>
0675 <comment name="singleLine" start="#" />
0676 </comments>
0677 <keywords casesensitive="1" />
0678 </general>
0679 </language>
0680 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->