diff options
author | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
commit | 84adefa331c4159d432d22840663c38f155cd4c1 (patch) | |
tree | bff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/megaco/src/text/megaco_text_mini_parser.yrl | |
download | otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2 otp-84adefa331c4159d432d22840663c38f155cd4c1.zip |
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/megaco/src/text/megaco_text_mini_parser.yrl')
-rw-r--r-- | lib/megaco/src/text/megaco_text_mini_parser.yrl | 398 |
1 files changed, 398 insertions, 0 deletions
diff --git a/lib/megaco/src/text/megaco_text_mini_parser.yrl b/lib/megaco/src/text/megaco_text_mini_parser.yrl new file mode 100644 index 0000000000..50e31b9eb4 --- /dev/null +++ b/lib/megaco/src/text/megaco_text_mini_parser.yrl @@ -0,0 +1,398 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%%---------------------------------------------------------------------- +%% Purpose: YECC grammar for mini text decoding of Megaco/H.248 +%%---------------------------------------------------------------------- + +%%---------------------------------------------------------------------- +%% Annex B TEXT ENCODING OF THE PROTOCOL (NORMATIVE) +%% +%% B.1 Coding of wildcards +%% +%% In a text encoding of the protocol, while TerminationIDs are +%% arbitrary, by judicious choice of names, the wildcard character, "*" +%% may be made more useful. When the wildcard character is encountered, +%% it will "match" all TerminationIDs having the same previous and +%% following characters (if appropriate). For example, if there were +%% TerminationIDs of R13/3/1, R13/3/2 and R13/3/3, the TerminationID +%% R13/3/* would match all of them. There are some circumstances where +%% ALL Terminations must be referred to. The TerminationID "*" suffices, +%% and is referred to as ALL. The CHOOSE TerminationID "$" may be used to +%% signal to the MG that it has to create an ephemeral Termination or +%% select an idle physical Termination. +%% +%% B.2 ABNF specification +%% +%% The protocol syntax is presented in ABNF according to RFC2234. The +%% protocol is not case sensitive. Identifiers are not case sensitive. +%%---------------------------------------------------------------------- + +Expect 1. + + +%%---------------------------------------------------------------------- +%% Non-terminals +%%---------------------------------------------------------------------- + +Nonterminals + + authenticationHeader + daddr + deviceName + domainAddress + domainName + mId + megacoMessage + message + mtpAddress + optSep + pathName + portNumber + safeToken + safeToken2 +. + +%%---------------------------------------------------------------------- +%% Terminals +%%---------------------------------------------------------------------- + +Terminals + + %% 'AddToken' + %% 'AndAUDITselectToken' + 'AuditCapToken' + 'AuditToken' + 'AuditValueToken' + 'AuthToken' + %% 'BothToken' + %% 'BothwayToken' + 'BriefToken' + %% 'BufferToken' + 'COLON' + %% 'ContextAttrToken' + 'ContextAuditToken' + %% 'ContextListToken' + 'CtxToken' + 'DelayToken' + %% 'DigitMapToken' + %% 'DigitMapDescriptorToken' + 'DirectionToken' + 'DiscardToken' + 'DisconnectedToken' + 'DurationToken' + 'EQUAL' + 'EmbedToken' + %% 'EmergencyToken' + %% 'EmergencyOffToken' + %% 'EmergencyValueToken' + 'ErrorToken' + %% 'EventBufferToken' + %% 'EventsToken' + %% 'ExternalToken' + 'FailoverToken' + 'ForcedToken' + 'GREATER' + 'GracefulToken' + 'H221Token' + 'H223Token' + 'H226Token' + 'HandOffToken' + %% 'IEPSToken' + 'ImmAckRequiredToken' + 'InSvcToken' + 'InactiveToken' + %% 'InternalToken' + 'InterruptByEventToken' + 'InterruptByNewSignalsDescrToken' + %% 'IntsigDelayToken' + %% 'IsolateToken' + %% 'IterationToken' + 'KeepActiveToken' + 'LESSER' + 'LSBRKT' + 'LocalControlToken' + %% 'LocalDescriptorToken' + 'LockStepToken' + 'LoopbackToken' + %% 'MediaToken' + %% 'MessageSegmentToken' + 'MethodToken' + 'MgcIdToken' + %% 'ModeToken' + %% 'ModemToken' + %% 'ModifyToken' + %% 'MoveToken' + 'MtpAddressToken' + %% 'MuxToken' + %% 'NeverNotifyToken' + 'NotifyCompletionToken' + %% 'NotifyImmediateToken' + %% 'NotifyRegulatedToken' + 'NotifyToken' + 'Nx64Token' + %% 'ObservedEventsToken' + 'OffToken' + 'OnToken' + 'OnOffToken' + %% 'OnewayToken' + %% 'OnewayExternalToken' + %% 'OnewayBothToken' + %% 'OrAUDITselectToken' + 'OtherReasonToken' + 'OutOfSvcToken' + %% 'PackagesToken' + 'PendingToken' + %% 'PriorityToken' + 'ProfileToken' + %% 'QuotedChars' + 'RSBRKT' + 'ReasonToken' + 'RecvonlyToken' + %% 'RemoteDescriptorToken' + 'ReplyToken' + 'RequestIDToken' + %% 'ReservedGroupToken' + %% 'ReservedValueToken' + %% 'ResetEventsDescriptorToken' + 'ResponseAckToken' + 'RestartToken' + 'SEP' + 'SafeChars' + 'SendonlyToken' + 'SendrecvToken' + 'ServiceChangeAddressToken' + 'ServiceChangeToken' + %% 'ServiceChangeIncompleteToken' + %% 'ServiceStatesToken' + 'ServicesToken' + 'SignalListToken' + 'SignalTypeToken' + %% 'SignalsToken' + %% 'StatsToken' + 'StreamToken' + %% 'SubtractToken' + 'SynchISDNToken' + 'TerminationStateToken' + 'TestToken' + 'TimeOutToken' + %% 'TimeStampToken' + %% 'TopologyToken' + 'TransToken' + 'V18Token' + 'V22Token' + 'V22bisToken' + 'V32Token' + 'V32bisToken' + 'V34Token' + 'V76Token' + 'V90Token' + 'V91Token' + 'VersionToken' + endOfMessage + +. + +%%---------------------------------------------------------------------- +%% Root symbol +%%---------------------------------------------------------------------- + +Rootsymbol megacoMessage. + +%%---------------------------------------------------------------------- +%% The grammar +%%---------------------------------------------------------------------- + +%% megacoMessage = LWSP [authenticationHeader SEP ] message +%% authenticationHeader = AuthToken EQUAL SecurityParmIndex COLON +%% SequenceNum COLON AuthData +%% +%% SecurityParmIndex = "0x" 8(HEXDIG) +%% SequenceNum = "0x" 8(HEXDIG) +%% AuthData = "0x" 24*64(HEXDIG) +%% message = MegacopToken SLASH version SEP mId SEP messageBody +%% version = 1*2(DIGIT) . + +megacoMessage -> optSep authenticationHeader message endOfMessage + : #'MegacoMessage'{authHeader = '$2', mess = '$3'} . + +optSep -> 'SEP' : sep . +optSep -> '$empty' : no_sep . + +authenticationHeader -> 'AuthToken' 'EQUAL' safeToken 'COLON' + safeToken 'COLON' safeToken optSep + : ensure_auth_header('$3', '$5', '$7') . +authenticationHeader -> '$empty' : asn1_NOVALUE . + +message -> safeToken mId : ensure_message('$1', '$2') . + +mId -> domainName : '$1' . +mId -> domainAddress : '$1' . +mId -> optSep mtpAddress optSep : '$2' . +mId -> optSep deviceName optSep : '$2' . + +domainName -> 'LESSER' safeToken 'GREATER' 'COLON' portNumber optSep + : ensure_domainName('$2', '$5') . +domainName -> 'LESSER' safeToken 'GREATER' + : ensure_domainName('$2', asn1_NOVALUE) . + +deviceName -> pathName : {deviceName, '$1'} . + +domainAddress -> 'LSBRKT' daddr 'RSBRKT' 'COLON' portNumber optSep + : ensure_domainAddress('$2', '$5') . +domainAddress -> 'LSBRKT' daddr 'RSBRKT' + : ensure_domainAddress('$2', asn1_NOVALUE) . + +daddr -> '$empty' : [] . +daddr -> 'COLON' daddr : [colon| '$2'] . +daddr -> safeToken daddr : ['$1'| '$2'] . + +portNumber -> safeToken : ensure_uint16('$1') . + +mtpAddress -> 'MtpAddressToken' : ensure_mtpAddress('$1') . + +pathName -> safeToken : ensure_pathName('$1') . + +safeToken -> safeToken2 : make_safe_token('$1') . + +%% safeToken2 -> 'AddToken' : '$1' . +safeToken2 -> 'AuditToken' : '$1' . +safeToken2 -> 'AuditCapToken' : '$1' . +safeToken2 -> 'AuditValueToken' : '$1' . +safeToken2 -> 'AuthToken' : '$1' . +%% safeToken2 -> 'BothToken' : '$1' . % v3 +%% safeToken2 -> 'BothwayToken' : '$1' . +safeToken2 -> 'BriefToken' : '$1' . +%% safeToken2 -> 'BufferToken' : '$1' . +safeToken2 -> 'CtxToken' : '$1' . +%% safeToken2 -> 'ContextAttrToken' : '$1' . % v3 +safeToken2 -> 'ContextAuditToken' : '$1' . +%% safeToken2 -> 'ContextListToken' : '$1' . % v3 +%% safeToken2 -> 'DigitMapToken' : '$1' . +%% safeToken2 -> 'DigitMapDescriptorToken' : '$1' . +safeToken2 -> 'DirectionToken' : '$1' . % v3 +safeToken2 -> 'DiscardToken' : '$1' . +safeToken2 -> 'DisconnectedToken' : '$1' . +safeToken2 -> 'DelayToken' : '$1' . +safeToken2 -> 'DurationToken' : '$1' . +safeToken2 -> 'EmbedToken' : '$1' . +%% safeToken2 -> 'EmergencyToken' : '$1' . +%% safeToken2 -> 'EmergencyOffToken' : '$1' . +safeToken2 -> 'ErrorToken' : '$1' . +%% safeToken2 -> 'EventBufferToken' : '$1' . +%% safeToken2 -> 'EventsToken' : '$1' . +%% safeToken2 -> 'ExternalToken' : '$1' . % v3 +safeToken2 -> 'FailoverToken' : '$1' . +safeToken2 -> 'ForcedToken' : '$1' . +safeToken2 -> 'GracefulToken' : '$1' . +safeToken2 -> 'H221Token' : '$1' . +safeToken2 -> 'H223Token' : '$1' . +safeToken2 -> 'H226Token' : '$1' . +safeToken2 -> 'HandOffToken' : '$1' . +%% safeToken2 -> 'IEPSToken' : '$1' . % v3 +safeToken2 -> 'ImmAckRequiredToken' : '$1' . +safeToken2 -> 'InactiveToken' : '$1' . +%% safeToken2 -> 'InternalToken' : '$1' . % v3 +safeToken2 -> 'InterruptByEventToken' : '$1' . +safeToken2 -> 'InterruptByNewSignalsDescrToken' : '$1' . +%% safeToken2 -> 'IsolateToken' : '$1' . +safeToken2 -> 'InSvcToken' : '$1' . +safeToken2 -> 'KeepActiveToken' : '$1' . +%% safeToken2 -> 'LocalToken' : '$1' . +%% safeToken2 -> 'LocalDescriptorToken' : '$1' . +safeToken2 -> 'LocalControlToken' : '$1' . +safeToken2 -> 'LoopbackToken' : '$1' . +safeToken2 -> 'LockStepToken' : '$1' . +%% safeToken2 -> 'MediaToken' : '$1' . +%% safeToken2 -> 'MegacopToken' : '$1' . +safeToken2 -> 'MethodToken' : '$1' . +safeToken2 -> 'MgcIdToken' : '$1' . +%% safeToken2 -> 'ModeToken' : '$1' . +%% safeToken2 -> 'ModifyToken' : '$1' . +%% safeToken2 -> 'ModemToken' : '$1' . +%% safeToken2 -> 'MoveToken' : '$1' . +%% safeToken2 -> 'MtpToken' : '$1' . +%% safeToken2 -> 'MtpAddressToken' : '$1' . +%% safeToken2 -> 'MuxToken' : '$1' . +safeToken2 -> 'NotifyToken' : '$1' . +safeToken2 -> 'NotifyCompletionToken' : '$1' . +safeToken2 -> 'Nx64Token' : '$1' . +%% safeToken2 -> 'ObservedEventsToken' : '$1' . +%% safeToken2 -> 'OnewayToken' : '$1' . +%% safeToken2 -> 'OnewayExternalToken' : '$1' . +%% safeToken2 -> 'OnewayBothToken' : '$1' . +safeToken2 -> 'OffToken' : '$1' . +safeToken2 -> 'OnToken' : '$1' . +safeToken2 -> 'OnOffToken' : '$1' . +safeToken2 -> 'OutOfSvcToken' : '$1' . +safeToken2 -> 'OtherReasonToken' : '$1' . +%% safeToken2 -> 'PackagesToken' : '$1' . +safeToken2 -> 'PendingToken' : '$1' . +%% safeToken2 -> 'PriorityToken' : '$1' . +safeToken2 -> 'ProfileToken' : '$1' . +safeToken2 -> 'ReasonToken' : '$1' . +safeToken2 -> 'RecvonlyToken' : '$1' . +safeToken2 -> 'ReplyToken' : '$1' . +safeToken2 -> 'RequestIDToken' : '$1' . +safeToken2 -> 'ResponseAckToken' : '$1' . +safeToken2 -> 'SafeChars' : '$1' . +safeToken2 -> 'RestartToken' : '$1' . +%% safeToken2 -> 'RemoteToken' : '$1' . +%% safeToken2 -> 'RemoteDescriptorToken' : '$1' . +%% safeToken2 -> 'ReservedGroupToken' : '$1' . +%% safeToken2 -> 'ReservedValueToken' : '$1' . +safeToken2 -> 'SendonlyToken' : '$1' . +safeToken2 -> 'SendrecvToken' : '$1' . +safeToken2 -> 'ServicesToken' : '$1' . +%% safeToken2 -> 'ServiceStatesToken' : '$1' . +safeToken2 -> 'ServiceChangeToken' : '$1' . +%% safeToken2 -> 'ServiceChangeIncompleteToken' : '$1' . +safeToken2 -> 'ServiceChangeAddressToken' : '$1' . +safeToken2 -> 'SignalListToken' : '$1' . +%% safeToken2 -> 'SignalsToken' : '$1' . +safeToken2 -> 'SignalTypeToken' : '$1' . +%% safeToken2 -> 'StatsToken' : '$1' . +safeToken2 -> 'StreamToken' : '$1' . +%% safeToken2 -> 'SubtractToken' : '$1' . +safeToken2 -> 'SynchISDNToken' : '$1' . +safeToken2 -> 'TerminationStateToken' : '$1' . +safeToken2 -> 'TestToken' : '$1' . +safeToken2 -> 'TimeOutToken' : '$1' . +%% safeToken2 -> 'TopologyToken' : '$1' . +safeToken2 -> 'TransToken' : '$1' . +safeToken2 -> 'V18Token' : '$1' . +safeToken2 -> 'V22Token' : '$1' . +safeToken2 -> 'V22bisToken' : '$1' . +safeToken2 -> 'V32Token' : '$1' . +safeToken2 -> 'V32bisToken' : '$1' . +safeToken2 -> 'V34Token' : '$1' . +safeToken2 -> 'V76Token' : '$1' . +safeToken2 -> 'V90Token' : '$1' . +safeToken2 -> 'V91Token' : '$1' . +safeToken2 -> 'VersionToken' : '$1' . + +Erlang code. + +%% The following directive is needed for (significantly) faster compilation +%% of the generated .erl file by the HiPE compiler. Please do not remove. +-compile([{hipe,[{regalloc,linear_scan}]}]). + +-include("megaco_text_mini_parser.hrl"). + |