grammar: Kill another amount of redundant parsers
This way we will include a couple less look-up tables for the digit parsing.
This commit is contained in:
parent
6c57c968dd
commit
9fa9a7218f
|
@ -25,6 +25,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
Request RequestLine Method extension_method
|
||||
RequestURI quoted_string token commonUriParser paramchar
|
||||
header generic_param tag_param digest_cln auth_param host
|
||||
digitParser digitParserMin
|
||||
|
|
||||
"http://sofia-sip.org/repos/sofia-sip/libsofia-sip-ua/sip/GRAMMAR"
|
||||
<category: 'OsmoSIP-Grammar'>
|
||||
|
@ -35,6 +36,14 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
^ Request / Response
|
||||
]
|
||||
|
||||
digitParser [
|
||||
^#digit asParser
|
||||
]
|
||||
|
||||
digitParserMin [
|
||||
^digitParser min: 1 max: 3
|
||||
]
|
||||
|
||||
CRLF [
|
||||
<category: 'misc'>
|
||||
^ Character cr asParser, Character nl asParser
|
||||
|
@ -48,7 +57,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
URI [
|
||||
"TODO: URI should be parsed properly but yate seems to already
|
||||
violate the RFC"
|
||||
^(#digit asParser / #word asParser) star
|
||||
^(digitParser / #word asParser) star
|
||||
"^absoluteURI / abs-path"
|
||||
]
|
||||
|
||||
|
@ -97,7 +106,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
port [
|
||||
<category: 'generic'>
|
||||
^ #digit asParser plus flatten
|
||||
^ digitParser plus flatten
|
||||
]
|
||||
|
||||
uri_parameters [
|
||||
|
@ -195,7 +204,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
unreserved [
|
||||
<category: 'generic'>
|
||||
^ (#letter asParser / #digit asParser) / self mark
|
||||
^ (#letter asParser / digitParser) / self mark
|
||||
]
|
||||
|
||||
reserved [
|
||||
|
@ -246,7 +255,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
StatusCode [
|
||||
<category: 'response'>
|
||||
"Combined into one..."
|
||||
^ (#digit asParser min: 3 max: 3) flatten
|
||||
^ (digitParser min: 3 max: 3) flatten
|
||||
]
|
||||
|
||||
ReasonPhrase [
|
||||
|
@ -314,24 +323,26 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
response_port [
|
||||
<category: 'via'>
|
||||
^'rport' asParser, (EQUAL, #digit asParser plus) optional
|
||||
^'rport' asParser, (EQUAL, digitParser plus) optional
|
||||
]
|
||||
|
||||
ttl [
|
||||
<category: 'generic'>
|
||||
^ #digit asParser min: 1 max: 3
|
||||
^ digitParserMin
|
||||
]
|
||||
|
||||
IPv4address [
|
||||
^ (#digit asParser min: 1 max: 3), $. asParser,
|
||||
(#digit asParser min: 1 max: 3), $. asParser,
|
||||
(#digit asParser min: 1 max: 3), $. asParser,
|
||||
(#digit asParser min: 1 max: 3).
|
||||
| dotParser |
|
||||
dotParser := $. asParser.
|
||||
^ (digitParserMin), dotParser,
|
||||
(digitParserMin), dotParser,
|
||||
(digitParserMin), dotParser,
|
||||
(digitParserMin).
|
||||
]
|
||||
|
||||
CSeq [
|
||||
<category: 'cseq'>
|
||||
^ 'CSeq' asParser, HCOLON, (#digit asParser plus flatten, LWS, Method)
|
||||
^ 'CSeq' asParser, HCOLON, (digitParser plus flatten, LWS, Method)
|
||||
]
|
||||
|
||||
generic_param [
|
||||
|
@ -650,7 +661,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
delta_seconds [
|
||||
<category: 'contact'>
|
||||
^ #digit asParser plus
|
||||
^ digitParser plus
|
||||
]
|
||||
|
||||
extension_header [
|
||||
|
@ -660,7 +671,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
qvalue [
|
||||
<category: 'generic'>
|
||||
^ ($0 asParser, ($. asParser, #digit asParser max: 3) optional) /
|
||||
^ ($0 asParser, ($. asParser, digitParser max: 3) optional) /
|
||||
($1 asParser, ($. asParser, $0 asParser max: 3) optional)
|
||||
]
|
||||
|
||||
|
@ -681,7 +692,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
header_value [
|
||||
<category: 'generic'>
|
||||
"TODO: TEXT-UTF8char / UTF8-CONT"
|
||||
^ (#letter asParser / #digit asParser / #punctuation asParser / #blank asParser / LWS) star flatten
|
||||
^ (#letter asParser / digitParser / #punctuation asParser / #blank asParser / LWS) star flatten
|
||||
]
|
||||
|
||||
HTAB [
|
||||
|
|
Reference in New Issue