📄 sipb_bnfrules_forparse.txt
字号:
alphanum = ALPHA / DIGIT reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / "," unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" escaped = "%" HEXDIG HEXDIG;!!! We change this rule;- - - - - - - - - - - - - - - - - - - - - - LWS = ( *WSP CRLF 1*WSP ) / ( 1*WSP ) ; linear whitespace;- - - - - - - - - - - - - - - - - - - - - - SWS = [LWS] ; sep whitespace HCOLON = *( SP / HTAB ) ":" SWS TEXT-UTF8-TRIM = 1*TEXT-UTF8char *(*LWS TEXT-UTF8char) TEXT-UTF8char = %x21-7E / UTF8-NONASCII UTF8-NONASCII = %xC0-DF 1UTF8-CONT / %xE0-EF 2UTF8-CONT / %xF0-F7 3UTF8-CONT / %xF8-Fb 4UTF8-CONT / %xFC-FD 5UTF8-CONT UTF8-CONT = %x80-BF LHEX = DIGIT / %x61-66 ;lowercase a-f token = 1*(alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" ) separators = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / DQUOTE / "/" / "[" / "]" / "?" / "=" / "{" / "}" / SP / HTAB word = 1*(alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" / "(" / ")" / "<" / ">" / ":" / "\" / DQUOTE / "/" / "[" / "]" / "?" / "{" / "}" ) STAR = SWS "*" SWS ; asterisk SLASH = SWS "/" SWS ; slash EQUAL = SWS "=" SWS ; equal LPAREN = SWS "(" SWS ; left parenthesis RPAREN = SWS ")" SWS ; right parenthesis RAQUOT = ">" SWS ; right angle quote LAQUOT = SWS "<"; left angle quote COMMA = SWS "," SWS ; comma SEMI = SWS ";" SWS ; semicolon COLON = SWS ":" SWS ; colon LDQUOT = SWS DQUOTE; open double quotation mark RDQUOT = DQUOTE SWS ; close double quotation mark ;We change this rule!!! ;- - - - - - - - - - - - - - - - - - - - - - - - - - comment = LPAREN *(ctext / quoted-pair / comment1) RPAREN comment1 = LPAREN *(ctext / quoted-pair / comment2) RPAREN comment2 = LPAREN *(ctext / quoted-pair / comment3) RPAREN comment3 = LPAREN *(ctext / quoted-pair) RPAREN ;- - - - - - - - - - - - - - - - - - - - - - - - - - ctext = %x21-27 / %x2A-5B / %x5D-7E / UTF8-NONASCII / LWS;We change this rule;- - - - - - - - - - - - - - - - - - - - - - - - - - quoted-string = SWS DQUOTE quoted-string-data DQUOTE quoted-string-data=*(qdtext / quoted-pair );- - - - - - - - - - - - - - - - - - - - - - - - - - qdtext = LWS / %x21 / %x23-5B / %x5D-7E / UTF8-NONASCIIquoted-pair = "\" (%x00-09 / %x0B-0C / %x0E-7F)SIP-URI = "sip:" [ userinfo ] hostport uri-parameters [ headers ]SIPS-URI = "sips:" [ userinfo ] hostport uri-parameters [ headers ] ;!!!! we delete telephone-subscriber ;- - - - - - - - - - - - - - - - - - -userinfo = user [ ":" password ] "@";- - - - - - - - - - - - - - - - - - -user = 1*( unreserved / escaped / user-unreserved )user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"password = *( unreserved / escaped / "&" / "=" / "+" / "$" / "," )hostport = host [ ":" port ]; !!! we swap hostname <-> IPv4address;- - - - - - - - - - - - - - - - - - -host = IPv4address / hostname / IPv6reference;- - - - - - - - - - - - - - - - - - - ; !! we swap rules ; We change it;- - - - - - - - - - - - - - - - - - - - - - - hostname = domainlabel [ "." ] *( domainlabel "." ) [ domainlabel ];- - - - - - - - - - - - - - - - - - - - - - - domainlabel = alphanum *( *("-") alphanum )IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGITIPv6reference = "[" IPv6address "]";TODO: make it currect; We change this IPv6addres rule;- - - - - - - - - - - - - - - - - - - - - - - IPv6address = hexparthexpart = hexseq / ( hexseq "::" [ hexseq ] [ ":" IPv4address] ) / "::" [ hexseq ] [ ":" IPv4address ]hexseq = hex4 *( ":" ( hex4 / IPv4address )); We move IPv4address from IPv6address to hexseq;- - - - - - - - - - - - - - - - - - - - - - - hex4 = 1*4HEXDIGport = 1*DIGITuri-parameters = *( ";" uri-parameter);!!!! WE comment other-param;- - - - - - - - - - - - - - - - - - - - - - - uri-parameter = transport-param / user-param / method-param / ttl-param / maddr-param / lr-param ; / other-param;- - - - - - - - - - - - - - - - - - - - - - - ;We change this rule!!!!;- - - - - - - - - - - - - - - - - - transport-param = "transport=" transport-param-transtransport-param-trans=( "udp" / "tcp" / "sctp" / "tls" / other-transport);- - - - - - - - - - - - - - - - - - other-transport = token;We change this rule!!!;- - - - - - - - - - -user-param = "user=" user-param-param user-param-param = ( "phone" / "ip" / other-user);- - - - - - - - - - - other-user = tokenmethod-param = "method=" Methodttl-param = "ttl=" ttl;We change this rule!!!;- - - - - - - - - - - - - - - - - maddr-param = "maddr=" maddr-param-hostmaddr-param-host = host;- - - - - - - - - - - - - - - - -lr-param = "lr"other-param = pname [ "=" pvalue ]pname = 1*paramcharpvalue = 1*paramcharparamchar = param-unreserved / unreserved / escapedparam-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$"headers = "?" header *( "&" header )header = hname "=" hvaluehname = 1*( hnv-unreserved / unreserved / escaped )hvalue = *( hnv-unreserved / unreserved / escaped )hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$"SIP-message = Request / ResponseRequest = Request-Line *( message-header ) CRLF [ message-body ]Request-Line = Method SP Request-URI SP SIP-Version CRLFRequest-URI = SIP-URI / SIPS-URI / absoluteURIabsoluteURI = scheme ":" ( hier-part / opaque-part )hier-part = ( net-path / abs-path ) [ "?" query ]net-path = "//" authority [ abs-path ]abs-path = "/" path-segmentsopaque-part = uric-no-slash *uricuric = reserved / unreserved / escapeduric-no-slash = unreserved / escaped /";" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / ","path-segments = segment *( "/" segment )segment = *pchar *( ";" param )param = *pcharpchar = unreserved / escaped / ":" / "@" / "&" / "=" / "+" / "$" / ","scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )authority = srvr / reg-namesrvr = [ [ userinfo "@" ] hostport ]reg-name = 1*( unreserved / escaped / "$" / "," / ";" / ":" / "@" / "&" / "=" / "+" )query = *uricSIP-Version = "SIP" "/" 1*DIGIT "." 1*DIGITmessage-header = (Accept / Accept-Encoding / Accept-Language / Alert-Info / Allow / Authentication-Info / Authorization / Call-ID / Call-Info / Contact / Content-Disposition / Content-Encoding / Content-Language / Content-Length / Content-Type / CSeq / Date / Error-Info / Expires / From / In-Reply-To / Max-Forwards / MIME-Version / Min-Expires / Organization / Priority / Proxy-Authenticate / Proxy-Authorization / Proxy-Require / Record-Route / Reply-To / Require / Retry-After / Route / Server / Subject / Supported / Timestamp / To / Unsupported / User-Agent / Via / Warning / WWW-Authenticate / extension-header) CRLFINVITEm = %x49.4E.56.49.54.45 ; INVITE in capsACKm = %x41.43.4B ; ACK in capsOPTIONSm = %x4F.50.54.49.4F.4E.53 ; OPTIONS in capsBYEm = %x42.59.45 ; BYE in capsCANCELm = %x43.41.4E.43.45.4C ; CANCEL in capsREGISTERm = %x52.45.47.49.53.54.45.52 ; REGISTER in capsMethod = INVITEm / ACKm / OPTIONSm / BYEm / CANCELm / REGISTERm / extension-methodextension-method = tokenResponse = Status-Line *( message-header ) CRLF [ message-body ]Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLFStatus-Code = Informational / Redirection / Success / Client-Error / Server-Error / Global-Failure / extension-codeextension-code = 3DIGITReason-Phrase = *(reserved / unreserved / escaped / UTF8-NONASCII / UTF8-CONT / SP / HTAB)Informational = "100" ; Trying / "180" ; Ringing / "181" ; Call Is Being Forwarded / "182" ; Queued / "183" ; Session ProgressSuccess = "200" ; OKRedirection = "300" ; Multiple Choices / "301" ; Moved Permanently / "302" ; Moved Temporarily / "305" ; Use Proxy / "380" ; Alternative ServiceClient-Error = "400" ; Bad Request / "401" ; Unauthorized / "402" ; Payment Required / "403" ; Forbidden / "404" ; Not Found / "405" ; Method Not Allowed / "406" ; Not Acceptable / "407" ; Proxy Authentication Required / "408" ; Request Timeout / "410" ; Gone / "413" ; Request Entity Too Large / "414" ; Request-URI Too Large / "415" ; Unsupported Media Type / "416" ; Unsupported URI Scheme / "420" ; Bad Extension / "421" ; Extension Required / "423" ; Interval Too Brief / "480" ; Temporarily not available / "481" ; Call Leg/Transaction Does Not Exist / "482" ; Loop Detected / "483" ; Too Many Hops / "484" ; Address Incomplete / "485" ; Ambiguous / "486" ; Busy Here / "487" ; Request Terminated / "488" ; Not Acceptable Here / "491" ; Request Pending / "493" ; UndecipherableServer-Error = "500" ; Internal Server Error / "501" ; Not Implemented / "502" ; Bad Gateway / "503" ; Service Unavailable / "504" ; Server Time-out / "505" ; SIP Version not supported / "513" ; Message Too LargeGlobal-Failure = "600" ; Busy Everywhere / "603" ; Decline / "604" ; Does not exist anywhere / "606" ; Not AcceptableAccept = "Accept" HCOLON [ accept-range *(COMMA accept-range) ]accept-range = media-range *(SEMI accept-param)media-range = ( "*/*" / ( m-type SLASH "*" ) / ( m-type SLASH m-subtype ) ) *( SEMI m-parameter )accept-param = ("q" EQUAL qvalue) / generic-paramqvalue = ( "0" [ "." 0*3DIGIT ] ) / ( "1" [ "." 0*3("0") ] )generic-param = token [ EQUAL gen-value ]gen-value = token / host / quoted-stringAccept-Encoding = "Accept-Encoding" HCOLON [ encoding *(COMMA encoding) ]encoding = codings *(SEMI accept-param)codings = content-coding / "*"content-coding = tokenAccept-Language = "Accept-Language" HCOLON
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -