Last active
November 11, 2019 03:22
-
-
Save mnot/22b4e82ae3ea44f760cd4806c1ebcd56 to your computer and use it in GitHub Desktop.
Railroad diagrams of HTTP semantics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Generated from the ABNF at <https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html#collected.abnf> | |
| # using <https://github.com/katef/kgt> | |
| Accept: | |
| ,---------------------------------------------------------------------------------------------------------------------------. | |
| | | | |
| ||--^--v----------------- "," ------------------>--v------------------------------------------------------------------------->-->--|| | |
| | | | | | |
| | ,-------------------. | | ,-----------------------------------------------. | | |
| | | | | | | | | | |
| `-- media-range --^-- accept-params -->--' | | ,-------------------. | | | |
| | | | | | | | |
| `-->-- OWS -- "," --^-- OWS -- media-range --^-- accept-params -->-->--v--' | |
| | | | |
| `---------------------------------<---------------------------------' | |
| Accept-Charset: | |
| ,------------. | |
| | | | |
| ||--v---------------------->--v-- charset -->--^-- weight -->--v-------------------------------------------------------------------->--|| | |
| | | | | | | | |
| `-->-- "," -- OWS --v--' `---- "*" ----' | ,------------------------------------------. | | |
| | | | | | | | |
| `-------<--------' | | ,------------. | | | |
| | | | | | | | |
| `-->-- OWS -- "," --^-- OWS --v-- charset -->--^-- weight -->-->--v--' | |
| | | | | | |
| | `---- "*" ----' | | |
| | | | |
| `------------------------------<-------------------------------' | |
| Accept-Encoding: | |
| ,-----------------------------------------------------------------------------------------------------. | |
| | | | |
| ||--^--v------------ "," ------------>--v-------------------------------------------------------------->-->--|| | |
| | | | | | |
| | ,------------. | | ,------------------------------------. | | |
| | | | | | | | | | |
| `-- codings --^-- weight -->--' | | ,------------. | | | |
| | | | | | | | |
| `-->-- OWS -- "," --^-- OWS -- codings --^-- weight -->-->--v--' | |
| | | | |
| `---------------------------<----------------------------' | |
| Accept-Language: | |
| ,------------. | |
| | | | |
| ||--v---------------------->-- language-range --^-- weight -->--v--------------------------------------------------------------------->--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-------------------------------------------. | | |
| | | | | | | | |
| `-------<--------' | | ,------------. | | | |
| | | | | | | | |
| `-->-- OWS -- "," --^-- OWS -- language-range --^-- weight -->-->--v--' | |
| | | | |
| `-------------------------------<-------------------------------' | |
| Accept-Ranges: | |
| ||-- acceptable-ranges --|| | |
| Allow: | |
| ,-------------------------------------------------------------------. | |
| | | | |
| ||--^--v--- "," ---->--v--------------------------------------------->-->--|| | |
| | | | | | |
| `-- method --' | ,-------------------. | | |
| | | | | | |
| `-->-- OWS -- "," --^-- OWS -- method -->--v--' | |
| | | | |
| `-------------------<-------------------' | |
| Authentication-Info: | |
| ,---------------------------------------------------------------------------. | |
| | | | |
| ||--^--v----- "," ------>--v------------------------------------------------->-->--|| | |
| | | | | | |
| `-- auth-param --' | ,-----------------------. | | |
| | | | | | |
| `-->-- OWS -- "," --^-- OWS -- auth-param -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| Authorization: | |
| ||-- credentials --|| | |
| BWS: | |
| ||-- OWS --|| | |
| Content-Encoding: | |
| ||--v---------------------->-- content-coding --v----------------------------------------------------->--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,---------------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- content-coding -->--v--' | |
| | | | |
| `-----------------------<-----------------------' | |
| Content-Language: | |
| ||--v---------------------->-- language-tag --v--------------------------------------------------->--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-------------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- language-tag -->--v--' | |
| | | | |
| `----------------------<----------------------' | |
| Content-Length: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| Content-Location: | |
| ||--v-- absolute-URI -->--|| | |
| | | | |
| `-- partial-URI ---' | |
| Content-Range: | |
| ||--v-- byte-content-range --->--|| | |
| | | | |
| `-- other-content-range --' | |
| Content-Type: | |
| ||-- media-type --|| | |
| Date: | |
| ||-- HTTP-date --|| | |
| ETag: | |
| ||-- entity-tag --|| | |
| Expect: | |
| ||-- "100-continue" --|| | |
| From: | |
| ||-- mailbox --|| | |
| GMT: | |
| ||-- "GMT" --|| | |
| HTTP-date: | |
| ||--v-- IMF-fixdate -->--|| | |
| | | | |
| `--- obs-date ----' | |
| Host: | |
| ,-----------------. | |
| | | | |
| ||-- uri-host --^-- ":" -- port -->--|| | |
| IMF-fixdate: | |
| ||-- day-name -- "," -- SP -- date1 -- SP -- time-of-day -- SP -- GMT --|| | |
| If-Match: | |
| ||--v--------------------------------------------- "*" --------------------------------------------->--|| | |
| | | | |
| `--v---------------------->-- entity-tag --v------------------------------------------------->--' | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- entity-tag -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| If-Modified-Since: | |
| ||-- HTTP-date --|| | |
| If-None-Match: | |
| ||--v--------------------------------------------- "*" --------------------------------------------->--|| | |
| | | | |
| `--v---------------------->-- entity-tag --v------------------------------------------------->--' | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- entity-tag -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| If-Range: | |
| ||--v-- entity-tag -->--|| | |
| | | | |
| `-- HTTP-date ---' | |
| If-Unmodified-Since: | |
| ||-- HTTP-date --|| | |
| Last-Modified: | |
| ||-- HTTP-date --|| | |
| Location: | |
| ||-- URI-reference --|| | |
| Max-Forwards: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| OWS: | |
| ||-->----------------v--|| | |
| | | | |
| `--<--- SP ---v--' | |
| | | | |
| `-- HTAB --' | |
| Proxy-Authenticate: | |
| ||--v---------------------->-- challenge --v------------------------------------------------>--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- challenge -->--v--' | |
| | | | |
| `--------------------<---------------------' | |
| Proxy-Authentication-Info: | |
| ,---------------------------------------------------------------------------. | |
| | | | |
| ||--^--v----- "," ------>--v------------------------------------------------->-->--|| | |
| | | | | | |
| `-- auth-param --' | ,-----------------------. | | |
| | | | | | |
| `-->-- OWS -- "," --^-- OWS -- auth-param -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| Proxy-Authorization: | |
| ||-- credentials --|| | |
| RWS: | |
| ||-->--v--- SP --->--v--|| | |
| | | | | | |
| | `-- HTAB --' | | |
| | | | |
| `-------<--------' | |
| Range: | |
| ||--v-- byte-ranges-specifier --->--|| | |
| | | | |
| `-- other-ranges-specifier --' | |
| Referer: | |
| ||--v-- absolute-URI -->--|| | |
| | | | |
| `-- partial-URI ---' | |
| Retry-After: | |
| ||--v---- HTTP-date ---->--|| | |
| | | | |
| `-- delay-seconds --' | |
| Server: | |
| ||-- product --v-------------------------------->--|| | |
| | | | |
| `-->-- RWS --v-- product -->--v--' | |
| | | | | | |
| | `-- comment --' | | |
| | | | |
| `------------<-------------' | |
| Trailer: | |
| ||--v---------------------->-- field-name --v------------------------------------------------->--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- field-name -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| User-Agent: | |
| ||-- product --v-------------------------------->--|| | |
| | | | |
| `-->-- RWS --v-- product -->--v--' | |
| | | | | | |
| | `-- comment --' | | |
| | | | |
| `------------<-------------' | |
| Vary: | |
| ||--v--------------------------------------------- "*" --------------------------------------------->--|| | |
| | | | |
| `--v---------------------->-- field-name --v------------------------------------------------->--' | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,-----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- field-name -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| Via: | |
| ,--------------------. | |
| | | | |
| ||--v---------------------->-- received-protocol -- RWS -- received-by --^-- RWS -- comment -->--v------------------------------------------------------------------------------------------------------>--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,----------------------------------------------------------------------------. | | |
| | | | | | | | |
| `-------<--------' | | ,--------------------. | | | |
| | | | | | | | |
| `-->-- OWS -- "," --^-- OWS -- received-protocol -- RWS -- received-by --^-- RWS -- comment -->-->--v--' | |
| | | | |
| `-----------------------------------------------<------------------------------------------------' | |
| WWW-Authenticate: | |
| ||--v---------------------->-- challenge --v------------------------------------------------>--|| | |
| | | | | | |
| `-->-- "," -- OWS --v--' | ,----------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS -- challenge -->--v--' | |
| | | | |
| `--------------------<---------------------' | |
| absolute-path: | |
| ||-->-- "/" -- segment --v--|| | |
| | | | |
| `---------<----------' | |
| accept-ext: | |
| ,--------------------------------. | |
| | | | |
| ||-- OWS -- ";" -- OWS -- token --^-- "=" --v------ token ------>-->--|| | |
| | | | |
| `-- quoted-string --' | |
| accept-params: | |
| ||-- weight -->----------------v--|| | |
| | | | |
| `-- accept-ext --' | |
| acceptable-ranges: | |
| ||--v--v---------------------->-- range-unit --v------------------------------------------------->-->--|| | |
| | | | | | | | |
| | `-->-- "," -- OWS --v--' | ,-----------------------. | | | |
| | | | | | | | | | |
| | `-------<--------' `-->-- OWS -- "," --^-- OWS -- range-unit -->--v--' | | |
| | | | | | |
| | `---------------------<---------------------' | | |
| | | | |
| `------------------------------------------- "none" --------------------------------------------' | |
| asctime-date: | |
| ||-- day-name -- SP -- date3 -- SP -- time-of-day -- SP -- year --|| | |
| auth-param: | |
| ||-- token -- BWS -- "=" -- BWS --v------ token ------>--|| | |
| | | | |
| `-- quoted-string --' | |
| auth-scheme: | |
| ||-- token --|| | |
| byte-content-range: | |
| ||-- bytes-unit -- SP --v--- byte-range-resp --->--|| | |
| | | | |
| `-- unsatisfied-range --' | |
| byte-range: | |
| ||-- first-byte-pos -- "-" -- last-byte-pos --|| | |
| byte-range-resp: | |
| ||-- byte-range -- "/" --v-- complete-length -->--|| | |
| | | | |
| `-------- "*" --------' | |
| byte-range-set: | |
| ||--v---------------------->--v----- byte-range-spec ------>--v------------------------------------------------------------------->--|| | |
| | | | | | | | |
| `-->-- "," -- OWS --v--' `-- suffix-byte-range-spec --' | ,-----------------------------------------. | | |
| | | | | | | | |
| `-------<--------' `-->-- OWS -- "," --^-- OWS --v----- byte-range-spec ------>-->--v--' | |
| | | | | | |
| | `-- suffix-byte-range-spec --' | | |
| | | | |
| `------------------------------<------------------------------' | |
| byte-range-spec: | |
| ,-------------------. | |
| | | | |
| ||-- first-byte-pos -- "-" --^-- last-byte-pos -->--|| | |
| byte-ranges-specifier: | |
| ||-- bytes-unit -- "=" -- byte-range-set --|| | |
| bytes-unit: | |
| ||-- "bytes" --|| | |
| challenge: | |
| ,---------------------------------------------------------------------------------------------. | |
| | | | |
| ||-- auth-scheme --^-->-- SP --v--v--------------------------------- token68 --------------------------------->-->--|| | |
| | | | | | |
| `---<----' `--v----- "," ------>--v------------------------------------------------->--' | |
| | | | | | |
| `-- auth-param --' | ,-----------------------. | | |
| | | | | | |
| `-->-- OWS -- "," --^-- OWS -- auth-param -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| charset: | |
| ||-- token --|| | |
| codings: | |
| ||--v-- content-coding -->--|| | |
| | | | |
| >---- "identity" ----^ | |
| | | | |
| `------- "*" --------' | |
| comment: | |
| ||-- "(" -->-----------------------v-- ")" --|| | |
| | | | |
| `--<----- ctext -----v--' | |
| | | | |
| ^-- quoted-pair --< | |
| | | | |
| `---- comment ----' | |
| complete-length: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| content-coding: | |
| ||-- token --|| | |
| credentials: | |
| ,---------------------------------------------------------------------------------------------. | |
| | | | |
| ||-- auth-scheme --^-->-- SP --v--v--------------------------------- token68 --------------------------------->-->--|| | |
| | | | | | |
| `---<----' `--v----- "," ------>--v------------------------------------------------->--' | |
| | | | | | |
| `-- auth-param --' | ,-----------------------. | | |
| | | | | | |
| `-->-- OWS -- "," --^-- OWS -- auth-param -->--v--' | |
| | | | |
| `---------------------<---------------------' | |
| ctext: | |
| ||--v---- HTAB ---->--|| | |
| | | | |
| >----- SP -----^ | |
| | | | |
| >---- "!" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "'" -----^ | |
| | | | |
| >---- "*" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "[" -----^ | |
| | | | |
| >---- "]" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "~" -----^ | |
| | | | |
| `-- obs-text --' | |
| date1: | |
| ||-- day -- SP -- month -- SP -- year --|| | |
| date2: | |
| ||-- day -- "-" -- month -- "-" -->----- DIGIT ------v--|| | |
| | | | |
| `--(exactly once)--' | |
| date3: | |
| ||-- month -- SP --v-->----- DIGIT ------v-->--|| | |
| | | | | | |
| | `--(exactly once)--' | | |
| | | | |
| `----- SP -- DIGIT ------' | |
| day: | |
| ||-->----- DIGIT ------v--|| | |
| | | | |
| `--(exactly once)--' | |
| day-name: | |
| ||--v-- "Mon" -->--|| | |
| | | | |
| >-- "Tue" --^ | |
| | | | |
| >-- "Wed" --^ | |
| | | | |
| >-- "Thu" --^ | |
| | | | |
| >-- "Fri" --^ | |
| | | | |
| >-- "Sat" --^ | |
| | | | |
| `-- "Sun" --' | |
| day-name-l: | |
| ||--v--- "Monday" ---->--|| | |
| | | | |
| >--- "Tuesday" ---^ | |
| | | | |
| >-- "Wednesday" --^ | |
| | | | |
| >-- "Thursday" ---^ | |
| | | | |
| >--- "Friday" ----^ | |
| | | | |
| >-- "Saturday" ---^ | |
| | | | |
| `--- "Sunday" ----' | |
| delay-seconds: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| entity-tag: | |
| ,----------. | |
| | | | |
| ||--^-- weak -->-- opaque-tag --|| | |
| etagc: | |
| ||--v---- "!" ----->--|| | |
| | | | |
| >---- "#" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "~" -----^ | |
| | | | |
| `-- obs-text --' | |
| field-content: | |
| ,-------------------------------------. | |
| | | | |
| ||-- field-vchar --^-->--v--- SP --->--v-- field-vchar -->--|| | |
| | | | | | |
| | `-- HTAB --' | | |
| | | | |
| `-------<--------' | |
| field-name: | |
| ||-- token --|| | |
| field-value: | |
| ||-->-------------------------v--|| | |
| | | | |
| `--<-- field-content --v--' | |
| | | | |
| `---- obs-fold -----' | |
| field-vchar: | |
| ||--v--- VCHAR ---->--|| | |
| | | | |
| `-- obs-text --' | |
| first-byte-pos: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| hour: | |
| ||-->----- DIGIT ------v--|| | |
| | | | |
| `--(exactly once)--' | |
| http-URI: | |
| ,------------------. | |
| | | | |
| ||-- "http://" -- authority -- path-abempty --^-- "?" -- query -->--|| | |
| https-URI: | |
| ,------------------. | |
| | | | |
| ||-- "https://" -- authority -- path-abempty --^-- "?" -- query -->--|| | |
| last-byte-pos: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| media-range: | |
| ||--v---------- "*/*" ----------->--v------------------------------------------>--|| | |
| | | | | | |
| >------- type -- "/*" -------^ `-->-- OWS -- ";" -- OWS -- parameter --v--' | |
| | | | | | |
| `-- type -- "/" -- subtype --' `-----------------<------------------' | |
| media-type: | |
| ||-- type -- "/" -- subtype --v------------------------------------------>--|| | |
| | | | |
| `-->-- OWS -- ";" -- OWS -- parameter --v--' | |
| | | | |
| `-----------------<------------------' | |
| method: | |
| ||-- token --|| | |
| minute: | |
| ||-->----- DIGIT ------v--|| | |
| | | | |
| `--(exactly once)--' | |
| month: | |
| ||--v-- "Jan" -->--|| | |
| | | | |
| >-- "Feb" --^ | |
| | | | |
| >-- "Mar" --^ | |
| | | | |
| >-- "Apr" --^ | |
| | | | |
| >-- "May" --^ | |
| | | | |
| >-- "Jun" --^ | |
| | | | |
| >-- "Jul" --^ | |
| | | | |
| >-- "Aug" --^ | |
| | | | |
| >-- "Sep" --^ | |
| | | | |
| >-- "Oct" --^ | |
| | | | |
| >-- "Nov" --^ | |
| | | | |
| `-- "Dec" --' | |
| obs-date: | |
| ||--v-- rfc850-date --->--|| | |
| | | | |
| `-- asctime-date --' | |
| obs-text: | |
| ||--v-- "\x80" -->--|| | |
| | | | |
| | : | | |
| | | | |
| `-- "\xfe" --' | |
| opaque-tag: | |
| ||-- DQUOTE -->-----------v-- DQUOTE --|| | |
| | | | |
| `-- etagc --' | |
| other-content-range: | |
| ||-- other-range-unit -- SP -- other-range-resp --|| | |
| other-range-resp: | |
| ||-->-----------v--|| | |
| | | | |
| `-- VCHAR --' | |
| other-range-set: | |
| ||-->-- VCHAR --v--|| | |
| | | | |
| `-----<-----' | |
| other-range-unit: | |
| ||-- token --|| | |
| other-ranges-specifier: | |
| ||-- other-range-unit -- "=" -- other-range-set --|| | |
| parameter: | |
| ||-- token -- "=" --v------ token ------>--|| | |
| | | | |
| `-- quoted-string --' | |
| partial-URI: | |
| ,------------------. | |
| | | | |
| ||-- relative-part --^-- "?" -- query -->--|| | |
| product: | |
| ,----------------------------. | |
| | | | |
| ||-- token --^-- "/" -- product-version -->--|| | |
| product-version: | |
| ||-- token --|| | |
| pseudonym: | |
| ||-- token --|| | |
| qdtext: | |
| ||--v---- HTAB ---->--|| | |
| | | | |
| >----- SP -----^ | |
| | | | |
| >---- "!" -----^ | |
| | | | |
| >---- "#" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "[" -----^ | |
| | | | |
| >---- "]" -----^ | |
| | | | |
| | : | | |
| | | | |
| >---- "~" -----^ | |
| | | | |
| `-- obs-text --' | |
| quoted-pair: | |
| ||-- "\\" --v---- HTAB ---->--|| | |
| | | | |
| >----- SP -----^ | |
| | | | |
| >--- VCHAR ----^ | |
| | | | |
| `-- obs-text --' | |
| quoted-string: | |
| ||-- DQUOTE -->-----------------------v-- DQUOTE --|| | |
| | | | |
| `--<---- qdtext -----v--' | |
| | | | |
| `-- quoted-pair --' | |
| qvalue: | |
| ,--------------------------------. | |
| | | | |
| ||--v-- "0" --^-- "." -->-------------------v-->-->--|| | |
| | | | | | |
| | `------ DIGIT ------' | | |
| | | | |
| | (up to 3 times) | | |
| | | | |
| | ,--------------------------------. | | |
| | | | | | |
| `-- "1" --^-- "." -->-------------------v-->--' | |
| | | | |
| `------- "0" -------' | |
| (up to 3 times) | |
| range-unit: | |
| ||--v----- bytes-unit ----->--|| | |
| | | | |
| `-- other-range-unit --' | |
| received-by: | |
| ,-----------------. | |
| | | | |
| ||--v-- uri-host --^-- ":" -- port -->-->--|| | |
| | | | |
| `------------ pseudonym ------------' | |
| received-protocol: | |
| ,--------------------------. | |
| | | | |
| ||--^-- protocol-name -- "/" -->-- protocol-version --|| | |
| rfc850-date: | |
| ||-- day-name-l -- "," -- SP -- date2 -- SP -- time-of-day -- SP -- GMT --|| | |
| second: | |
| ||-->----- DIGIT ------v--|| | |
| | | | |
| `--(exactly once)--' | |
| subtype: | |
| ||-- token --|| | |
| suffix-byte-range-spec: | |
| ||-- "-" -- suffix-length --|| | |
| suffix-length: | |
| ||-->-- DIGIT --v--|| | |
| | | | |
| `-----<-----' | |
| tchar: | |
| ||--v--- "!" --->--|| | |
| | | | |
| >--- "#" ---^ | |
| | | | |
| | : | | |
| | | | |
| >--- "'" ---^ | |
| | | | |
| >--- "*" ---^ | |
| | | | |
| >--- "+" ---^ | |
| | | | |
| >--- "-" ---^ | |
| | | | |
| >--- "." ---^ | |
| | | | |
| >--- "^" ---^ | |
| | | | |
| >--- "_" ---^ | |
| | | | |
| >--- "`" ---^ | |
| | | | |
| >--- "|" ---^ | |
| | | | |
| >--- "~" ---^ | |
| | | | |
| >-- DIGIT --^ | |
| | | | |
| `-- ALPHA --' | |
| time-of-day: | |
| ||-- hour -- ":" -- minute -- ":" -- second --|| | |
| token: | |
| ||-->-- tchar --v--|| | |
| | | | |
| `-----<-----' | |
| token68: | |
| ||-->--v-- ALPHA -->--v-->---------v--|| | |
| | | | | | | | |
| | >-- DIGIT --^ | `-- "=" --' | |
| | | | | | |
| | >--- "+" ---^ | | |
| | | | | | |
| | >--- "-" ---^ | | |
| | | | | | |
| | >--- "." ---^ | | |
| | | | | | |
| | `--- "/" ---' | | |
| | | | |
| `--------<--------' | |
| type: | |
| ||-- token --|| | |
| unsatisfied-range: | |
| ||-- "*/" -- complete-length --|| | |
| weak: | |
| ||-- "W/" --|| | |
| weight: | |
| ||-- OWS -- ";" -- OWS -- "q=" -- qvalue --|| | |
| year: | |
| ||-->--- DIGIT ---v--|| | |
| | | | |
| `--(3 times)--' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment