grammar: Use PPPredicateObjectParser to speed it up a bit
This commit is contained in:
parent
4451c8e89c
commit
3854696d53
|
@ -91,7 +91,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
host [
|
||||
<category: 'generic'>
|
||||
"TODO: too simplieified"
|
||||
^ (#letter asParser / #digit asParser / $. asParser / $- asParser) plus flatten
|
||||
^ (#letter asParser / (PP.PPPredicateObjectParser chars: '0123456789.-' message: 'host')) plus flatten
|
||||
]
|
||||
|
||||
port [
|
||||
|
@ -132,8 +132,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
param_unreserved [
|
||||
<category: 'generic'>
|
||||
^ $[ asParser / $] asParser / $/ asParser / $: asParser /
|
||||
$& asParser / $+ asParser / $$ asParser.
|
||||
^PP.PPPredicateObjectParser chars: '[]/:&+$' message: 'param_unreserved'.
|
||||
]
|
||||
|
||||
headers [
|
||||
|
@ -158,8 +157,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
hnv_unreserved [
|
||||
<category: 'generic'>
|
||||
^ $[ asParser / $] asParser / $/ asParser / $? asParser /
|
||||
$: asParser / $+ asParser / $$ asParser.
|
||||
^PP.PPPredicateObjectParser chars: '[]/?:+$' message: 'hnv_unreserved'
|
||||
]
|
||||
|
||||
userinfo [
|
||||
|
@ -176,23 +174,22 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
user_unreserved [
|
||||
<category: 'generic'>
|
||||
^ $& asParser / $= asParser / $+ asParser / $$ asParser / $, asParser / $; asParser / $? asParser / $/ asParser
|
||||
^PP.PPPredicateObjectParser chars: '&=+$,;?/' message: 'user_unreserved'.
|
||||
]
|
||||
|
||||
escaped [
|
||||
<category: 'generic'>
|
||||
^ $% asParser, self HEXDIG, self HEXDIG
|
||||
"^ $% asParser, self HEXDIG, self HEXDIG"
|
||||
^PP.PPPredicateObjectParser chars: '%0123456789abcdefABCDEF' message: 'escaped'.
|
||||
]
|
||||
|
||||
HEXDIG [
|
||||
<category: 'RFC5234'>
|
||||
^ #digit asParser / $A asParser / $B asParser / $C asParser /
|
||||
$D asParser / $E asParser / $F asParser
|
||||
^PP.PPPredicateObjectParser chars: '0123456789ABCDEF' message: 'hexdig expected'.
|
||||
]
|
||||
|
||||
LHEX [
|
||||
^ #digit asParser / $a asParser / $b asParser / $c asParser /
|
||||
$d asParser / $e asParser / $f asParser
|
||||
^PP.PPPredicateObjectParser chars: '0123456789abcdef' message: 'lhex expected'.
|
||||
]
|
||||
|
||||
unreserved [
|
||||
|
@ -202,14 +199,11 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
reserved [
|
||||
<category: 'generic'>
|
||||
^ ($; asParser / $/ asParser / $? asParser / $: asParser /
|
||||
$@ asParser / $& asParser / $= asParser / $+ asParser /
|
||||
$$ asParser / $, asParser)
|
||||
^PP.PPPredicateObjectParser chars: ';/?:@&=+$,' message: 'reserved'.
|
||||
]
|
||||
|
||||
mark [
|
||||
^ $- asParser / $_ asParser / $. asParser / $! asParser / $~ asParser /
|
||||
$* asParser / $' asParser / $( asParser / $) asParser
|
||||
^PP.PPPredicateObjectParser chars: '-_.!~*''()' message: 'mark'.
|
||||
]
|
||||
|
||||
password [
|
||||
|
@ -245,7 +239,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
SIPVersion [
|
||||
<category: 'generic'>
|
||||
^ 'SIP/' asParser, #digit asParser, $. asParser, #digit asParser
|
||||
^ 'SIP/2.0' asParser
|
||||
]
|
||||
|
||||
StatusCode [
|
||||
|
@ -351,7 +345,7 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
|
||||
quoted_string [
|
||||
<category: 'generic'>
|
||||
^ self SWS, DQUOTE, (self qdtext / self quoted_pair) star flatten, DQUOTE
|
||||
^SWS, DQUOTE, (self qdtext / self quoted_pair) star flatten, DQUOTE
|
||||
]
|
||||
|
||||
qdtext [
|
||||
|
@ -676,12 +670,9 @@ PP.PPCompositeParser subclass: SIPGrammar [
|
|||
token [
|
||||
<category: 'generic'>
|
||||
|
||||
^ (#letter asParser / #digit asParser /
|
||||
$- asParser / $. asParser /
|
||||
$! asParser / $% asParser /
|
||||
$* asParser / $_ asParser /
|
||||
$+ asParser / $` asParser /
|
||||
$' asParser / $~ asParser) plus flatten
|
||||
^ (#letter asParser /
|
||||
(PP.PPPredicateObjectParser chars: '0123456789-.!%*_+`''~' message: 'token'))
|
||||
plus flatten
|
||||
]
|
||||
|
||||
header_name [
|
||||
|
|
Reference in New Issue