aboutsummaryrefslogtreecommitdiffstats
path: root/lib/megaco/src/text/megaco_text_mini_parser.yrl
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/megaco/src/text/megaco_text_mini_parser.yrl
downloadotp-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.yrl398
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").
+