hurl/docs/grammar.md
2023-02-14 13:34:17 +01:00

82 KiB

Grammar

Definitions

Short description:

  • operator | denotes alternative,
  • operator * denotes iteration (zero or more),
  • operator + denotes iteration (one or more),

Syntax Grammar

General

hurl-file
entry(used by hurl-file)
method(used by request)
 GET
|HEAD
|POST
|PUT
|DELETE
|CONNECT
|OPTIONS
|TRACE
|PATCH
|LINK
|UNLINK
|PURGE
|LOCK
|UNLOCK
|PROPFIND
|VIEW
version(used by response)
 HTTP/1.0
|HTTP/1.1
|HTTP/2
|HTTP
status(used by response)
[0-9]+
header(used by requestresponse)
body(used by requestresponse)

Sections

response-section(used by response)
query-string-params-section(used by request-section)
lt*
[QueryStringParams] lt
key-value*
form-params-section(used by request-section)
lt*
[FormParams] lt
key-value*
multipart-form-data-section(used by request-section)
lt*
[MultipartFormData] lt
multipart-form-data-param*
cookies-section(used by request-section)
lt*
[Cookies] lt
key-value*
captures-section(used by response-section)
lt*
[Captures] lt
capture*
asserts-section(used by response-section)
lt*
[Asserts] lt
assert*
options-section(used by request-section)
lt*
[Options] lt
option*
multipart-form-data-param(used by multipart-form-data-section)
file-value(used by file-param)
file-contenttype(used by file-value)
[a-zA-Z0-9/+-]+
capture(used by captures-section)
assert(used by asserts-section)
ca-certificate-option(used by option)
cacert : filename lt
follow-redirect-option(used by option)
location : boolean lt
insecure-option(used by option)
insecure : boolean lt
max-redirs-option(used by option)
max-redirs : integer lt
retry-option(used by option)
retry : boolean lt
retry-interval-option(used by option)
retry-interval : integer lt
retry-max-count-option(used by option)
retry-max-count : integer lt
variable-option(used by option)
variable : variable-definition lt
verbose-option(used by option)
verbose : boolean lt
very-verbose-option(used by option)
very-verbose : boolean lt
variable-definition(used by variable-option)

Query

status-query(used by query)
status
url-query(used by query)
url
header-query(used by query)
header sp quoted-string
certificate-query(used by query)
certificate sp (Subject|Issuer|Start date|Expire date|Serial Number)
cookie-query(used by query)
cookie sp quoted-string
body-query(used by query)
body
xpath-query(used by query)
jsonpath-query(used by query)
jsonpath sp quoted-string
regex-query(used by query)
variable-query(used by query)
variable sp quoted-string
duration-query(used by query)
duration
sha256-query(used by query)
sha256
md5-query(used by query)
md5
bytes-query(used by query)
bytes

Predicates

predicate(used by assert)
equal-predicate(used by predicate-func)
(equals|==) sp predicate-value
not-equal-predicate(used by predicate-func)
(notEquals|!=) sp predicate-value
greater-predicate(used by predicate-func)
(greaterThan|>) sp (integer|float|quoted-string)
greater-or-equal-predicate(used by predicate-func)
(greaterThanOrEquals|>=) sp sp* (integer|float|quoted-string)
less-predicate(used by predicate-func)
(lessThan|<) sp (integer|float|quoted-string)
less-or-equal-predicate(used by predicate-func)
(lessThanOrEquals|<=) sp (integer|float|quoted-string)
start-with-predicate(used by predicate-func)
end-with-predicate(used by predicate-func)
contain-predicate(used by predicate-func)
contains sp quoted-string
match-predicate(used by predicate-func)
matches sp (quoted-string|regex)
exist-predicate(used by predicate-func)
exists
include-predicate(used by predicate-func)
includes sp predicate-value
integer-predicate(used by predicate-func)
isInteger
float-predicate(used by predicate-func)
isFloat
boolean-predicate(used by predicate-func)
isBoolean
string-predicate(used by predicate-func)
isString
collection-predicate(used by predicate-func)
isCollection

Bytes

xml(used by bytes)
< To Be Defined >
base64, [A-Z0-9+-= \n]+ ;
oneline-file(used by predicate-valuebytes)
file, filename ;

Strings

quoted-string-text(used by quoted-string-content)
~["\\]+
quoted-string-escaped-char(used by quoted-string-content)
\ ("|\|\b|\f|\n|\r|\t|\u unicode-char)
key-string-content(used by key-string)
key-string-text(used by key-string-content)
(alphanum|_|-|.|[|]|@|$)+
key-string-escaped-char(used by key-string-content)
\ (#|:|\|\b|\f|\n|\r|\t|\u unicode-char)
value-string-text(used by value-string-content)
~[#\n\\]+
value-string-escaped-char(used by value-string-content)
\ (#|\|\b|\f|\n|\r|\t|\u unicode-char)
oneline-string(used by bytes)
oneline-string-text(used by oneline-string-content)
~[#\n\\] ~`
oneline-string-escaped-char(used by oneline-string-content)
\ (`|#|\|b|f|u unicode-char)
multiline-string-type(used by multiline-string)
 base64
|hex
|json
|xml
|graphql
multiline-string-text(used by multiline-string-content)
~[\\]+ ~```
multiline-string-escaped-char(used by multiline-string-content)
\ (\|b|f|n|r|t|`|u unicode-char)
filename-content(used by filename)
filename-text(used by filename-content)
~[#; \n\\]+
filename-escaped-char(used by filename-content)
\ (;|#|[ ])

JSON

json-object(used by json-value)
json-key-value(used by json-object)
json-array(used by json-value)
[ json-value (, json-value)* ]
json-string(used by json-valuejson-key-value)
json-string-text(used by json-string-content)
~["\\]
json-string-escaped-char(used by json-string-content)
\ ("|\|b|f|n|r|t|u hexdigit hexdigit hexdigit hexdigit)
json-number(used by json-value)

Template / Expression

expr(used by template)
variable-name(used by variable-definitionexpr)
[A-Za-z] [A-Za-z_-0-9]*

Filter

count-filter(used by filter)
count
format-filter(used by filter)
format
html-escape-filter(used by filter)
htmlEscape
html-unescape-filter(used by filter)
htmlUnescape
nth-filter(used by filter)
nth sp integer
regex-filter(used by filter)
replace-filter(used by filter)
split-filter(used by filter)
to-date-filter(used by filter)
toDate
to-int-filter(used by filter)
toInt
url-decode-filter(used by filter)
urlDecode
url-encode-filter(used by filter)
urlEncode

Lexical Grammar

alphanum(used by key-string-text)
[A-Za-z0-9]
digit(used by integerfractionexponent)
[0-9]
[0-9A-Fa-f]
fraction(used by json-numberfloat)
. digit+
exponent(used by json-number)
(e|E) (+|-)? digit+
comment(used by lt)
# ~[\n]*
regex-content(used by regex)
regex-text(used by regex-content)
~[\n\/]+
regex-escaped-char(used by regex-content)
\ ~[\n]