smalltalk
/
osmo-st-sip
Archived
1
0
Fork 0

grammar: Use PPPredicateObjectParser to speed it up a bit

This commit is contained in:
Holger Hans Peter Freyther 2014-09-05 09:52:09 +02:00
parent 4451c8e89c
commit 3854696d53
1 changed files with 15 additions and 24 deletions

View File

@ -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 [