136 lines
4.8 KiB
Smalltalk
136 lines
4.8 KiB
Smalltalk
"
|
|
Do not copy...
|
|
"
|
|
|
|
PackageLoader fileInPackage: 'PetitParser'.
|
|
|
|
PP.PPCompositeParser subclass: MGCPGrammar [
|
|
| MGCPMessage EOL One_WSP MGCPMessage MGCPCommandLine MGCPVerb transaction_id endpointName MGCPversion MGCPParameter MGCPCommand ParameterValue SDPRecord SDPLine SDPinformation |
|
|
<category: 'MGCP-Core'>
|
|
<comment: 'I am a the Grammar of the Media Gateway Control Protocol'>
|
|
"'Implement MGCPResponse'"
|
|
|
|
start [
|
|
<category: 'accessing'>
|
|
^ MGCPMessage end
|
|
]
|
|
|
|
EOL [
|
|
<category: 'grammar-common'>
|
|
^ (Character cr asParser, Character lf asParser) /
|
|
Character lf asParser
|
|
]
|
|
|
|
One_WSP [
|
|
<category: 'grammar-common'>
|
|
^ #blank asParser plus
|
|
]
|
|
|
|
MGCPMessage [
|
|
<category: 'grammar-common'>
|
|
^ MGCPCommand "/ MGCPResponse"
|
|
]
|
|
|
|
MGCPCommandLine [
|
|
<category: 'grammar-cmd'>
|
|
^ self MGCPVerb,
|
|
self One_WSP,
|
|
self transaction_id,
|
|
self One_WSP,
|
|
self endpointName,
|
|
self One_WSP,
|
|
self MGCPversion,
|
|
self EOL
|
|
]
|
|
|
|
MGCPVerb [
|
|
<category: 'grammar-cmd'>
|
|
^ 'EPCF' asParser /
|
|
'CRCX' asParser /
|
|
'MDCX' asParser /
|
|
'DLCX' asParser /
|
|
'RQNT' asParser /
|
|
'NTFY' asParser /
|
|
'AUEP' asParser /
|
|
'AUCX' asParser /
|
|
'RSIP' asParser
|
|
]
|
|
|
|
transaction_id [
|
|
<category: 'grammar-cmd'>
|
|
^ ((#digit asParser) min: 1 max: 9) flatten
|
|
]
|
|
|
|
endpointName [
|
|
<category: 'grammar-cmd'>
|
|
"simplified version"
|
|
^ #word asParser star flatten, $@ asParser, #word asParser star flatten
|
|
]
|
|
|
|
MGCPversion [
|
|
<category: 'grammar-cmd'>
|
|
"skipping the optional profilename for now"
|
|
^ 'MGCP' asParser, One_WSP, #digit asParser, $. asParser, #digit asParser
|
|
]
|
|
|
|
MGCPCommand [
|
|
<category: 'grammar-cmd'>
|
|
^ MGCPCommandLine, MGCPParameter star, SDPRecord optional
|
|
]
|
|
|
|
MGCPParameter [
|
|
<category: 'grammar-cmd'>
|
|
^ ParameterValue, EOL
|
|
]
|
|
|
|
wordParser [
|
|
^ #word asParser / #punctuation asParser / ' ' asParser
|
|
]
|
|
|
|
ParameterValue [
|
|
^ ($K asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($B asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($C asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($I asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($N asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($X asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($L asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($M asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($R asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($S asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($D asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($O asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($P asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($E asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($Z asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($Z asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('Z2' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('I2' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($F asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($Q asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($T asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('RM' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('RD' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
($A asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('ES' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('PL' asParser, $: asParser, #blank asParser star, self wordParser star flatten) /
|
|
('MD' asParser, $: asParser, #blank asParser star, self wordParser star flatten)
|
|
]
|
|
|
|
SDPRecord [
|
|
^ EOL, SDPinformation
|
|
]
|
|
|
|
SDPinformation [
|
|
^ (SDPLine, EOL) plus
|
|
]
|
|
|
|
SDPLine [
|
|
^ self wordParser star flatten
|
|
]
|
|
]
|
|
|
|
Eval [
|
|
MGCPGrammar initialize.
|
|
]
|