megaco_text_parser_v1.yrl

来自「OTP是开放电信平台的简称」· YRL 代码 · 共 1,307 行 · 第 1/4 页

YRL
1,307
字号
                            : #'NotifyRequest'{errorDescriptor = '$1'}.notifyReply          -> 'NotifyToken' 'EQUAL' terminationID notifyReplyBody			    : {notifyReply,			       #'NotifyReply'{terminationID = ['$3'],					      errorDescriptor = '$4'}} .notifyReplyBody      -> 'LBRKT' errorDescriptor 'RBRKT' : '$2'.notifyReplyBody      -> '$empty' : asn1_NOVALUE .serviceChangeRequest -> 'ServiceChangeToken' 'EQUAL' terminationID                        'LBRKT' serviceChangeDescriptor 'RBRKT'                      : make_commandRequest({serviceChangeReq, '$1'},					    #'ServiceChangeRequest'{terminationID = ['$3'],								    serviceChangeParms = '$5'}) .serviceChangeReply   -> 'ServiceChangeToken' 'EQUAL' terminationID serviceChangeReplyBody			    : {serviceChangeReply,			       #'ServiceChangeReply'{terminationID = ['$3'],						     serviceChangeResult = '$4'}} .serviceChangeReplyBody -> 'LBRKT' errorDescriptor 'RBRKT'			      : {errorDescriptor, '$2'} .serviceChangeReplyBody -> 'LBRKT' serviceChangeReplyDescriptor 'RBRKT'			      : {serviceChangeResParms, '$2'} .serviceChangeReplyBody -> '$empty' : {serviceChangeResParms, #'ServiceChangeResParm'{}}.errorDescriptor      -> 'ErrorToken' 'EQUAL' errorCode 'LBRKT' errorText 'RBRKT'                            : #'ErrorDescriptor'{errorCode = '$3',                                                 errorText = '$5'} .errorCode            -> safeToken : ensure_uint('$1', 0, 999) .errorText            -> 'QuotedChars' : value_of('$1') .errorText            -> '$empty'      : asn1_NOVALUE .transactionID        -> safeToken : ensure_uint32('$1') .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'} .contextID            -> safeToken : ensure_contextID('$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') .%% terminationIDList    -> LBRKT terminationID *(COMMA terminationID) RBRKT .terminationIDList    -> 'LBRKT' terminationID terminationIDListRepeat 'RBRKT'                                   : ['$2' | '$3'] .terminationIDListRepeat -> 'COMMA' terminationID terminationIDListRepeat                                 : ['$2'| '$3'] .terminationIDListRepeat -> '$empty' : [] .pathName             -> safeToken : ensure_pathName('$1') . terminationID        -> safeToken : ensure_terminationID('$1') .mediaDescriptor      -> 'MediaToken' 'LBRKT' mediaParm mediaParmList 'RBRKT'			    : merge_mediaDescriptor(['$3' | '$4']) .mediaParmList        -> 'COMMA' mediaParm mediaParmList : ['$2' | '$3'] .mediaParmList        -> '$empty' : [] .%% at-most-once per item%% using either streamParms or streamDescriptors but not bothmediaParm            -> streamParm			    : {streamParm, '$1'} .mediaParm            -> streamDescriptor			    : {streamDescriptor, '$1'} .mediaParm            -> terminationStateDescriptor			    : {termState, '$1'} .%% at-most-onc .%% Specially treated by the scanner.streamParm           -> 'LocalDescriptorToken'		      : {local, #'LocalRemoteDescriptor'{propGrps = ensure_prop_groups('$1')} } .streamParm           -> 'RemoteDescriptorToken'		      : {remote, #'LocalRemoteDescriptor'{propGrps = ensure_prop_groups('$1')}} .streamParm           -> localControlDescriptor  : {control, '$1'} .streamDescriptor     -> 'StreamToken' 'EQUAL' streamID                        'LBRKT' streamParm streamParmList 'RBRKT'		      : #'StreamDescriptor'{streamID    = '$3',					    streamParms = merge_streamParms(['$5' | '$6'])} .streamParmList       -> 'COMMA' streamParm streamParmList : ['$2' | '$3'] .streamParmList       -> '$empty' : [] .localControlDescriptor -> 'LocalControlToken' 'LBRKT' localParm localParmList 'RBRKT'                        : ['$3' | '$4'] .localParmList        -> 'COMMA' localParm localParmList : ['$2' | '$3'] .localParmList        -> '$empty': [] .terminationStateDescriptor -> 'TerminationStateToken'				  'LBRKT' terminationStateParm terminationStateParms 'RBRKT'		            : merge_terminationStateDescriptor(['$3' | '$4']) .terminationStateParms -> 'COMMA' terminationStateParm terminationStateParms : ['$2' | '$3'] .terminationStateParms -> '$empty' : [] .%% at-most-once per item except for propertyParmlocalParm            -> 'ReservedGroupToken' 'EQUAL' onOrOff : {group, '$3'} .localParm            -> 'ReservedValueToken' 'EQUAL' onOrOff : {value, '$3'} .localParm            -> 'ModeToken' 'EQUAL' streamModes      : {mode,  '$3'} .localParm            -> propertyParm                         : {prop,  '$1'} .   onOrOff              -> 'OnToken'  : true .onOrOff              -> 'OffToken' : false .   %% at-most-once    streamModes          -> 'SendonlyToken' : sendOnly .streamModes          -> 'RecvonlyToken' : recvOnly .streamModes          -> 'SendrecvToken' : sendRecv .streamModes          -> 'InactiveToken' : inactive .streamModes          -> 'LoopbackToken' : loopBack .propertyParm         -> pkgdName parmValue : setelement(#'PropertyParm'.name, '$2', '$1') .parmValue            -> 'EQUAL' alternativeValue : '$2' .parmValue            -> 'NEQUAL'  value                            : #'PropertyParm'{value = ['$2'], extraInfo = {relation, unequalTo}} .parmValue            -> 'LESSER'  value                             : #'PropertyParm'{value = ['$2'], extraInfo = {relation, smallerThan}} .parmValue            -> 'GREATER' value                            : #'PropertyParm'{value = ['$2'], extraInfo = {relation, greaterThan}} .%% OTP-4013%% alternativeValue  = ( VALUE / %%                       LSBRKT VALUE *(COMMA VALUE) RSBRKT  /%%                       LSBRKT VALUE COLON VALUE RSBRKT ) /%%                       LBRKT VALUE *(COMMA VALUE) RBRKTalternativeValue     -> 'LBRKT' value valueList 'RBRKT'                            : #'PropertyParm'{value     = ['$2' | '$3'],					      extraInfo = {sublist, false}}. % ORalternativeValue     -> 'LSBRKT' value 'COLON' value 'RSBRKT'                            : #'PropertyParm'{value     = ['$2', '$4'],                                              extraInfo = {range, true}}.alternativeValue     -> 'LSBRKT' value valueList 'RSBRKT'                            : #'PropertyParm'{value     = ['$2' | '$3'],					      extraInfo = {sublist, true}}. % ANDalternativeValue     -> value : #'PropertyParm'{value = ['$1']} .valueList            -> 'COMMA' value valueList : ['$2' | '$3'] .valueList            -> '$empty' : [] .eventBufferDescriptor -> 'EventBufferToken' : [] .eventBufferDescriptor -> 'EventBufferToken' 'LBRKT' eventSpec eventSpecList 'RBRKT'			 : ['$3' | '$4'] .eventSpecList        -> 'COMMA' eventSpec eventSpecList : ['$2' | '$3'] .eventSpecList        -> '$empty' : [] .eventSpec            -> observedEvent : merge_eventSpec('$1') .%% at-most-once per item except for propertyParmterminationStateParm -> serviceStates      : {serviceState, '$1'} .terminationStateParm -> eventBufferControl : {eventBufferControl, '$1'} .terminationStateParm -> propertyParm       : {propertyParm, '$1'} .serviceStates        -> 'ServiceStatesToken' 'EQUAL' serviceState : '$3' .serviceState         -> 'TestToken'     : test . serviceState         -> 'OutOfSvcToken' : outOfSvc .serviceState         -> 'InSvcToken'    : inSvc .eventBufferControl   -> 'BufferToken' 'EQUAL' eventBufferControlState : '$3' .eventBufferControlState -> 'OffToken'      : off .eventBufferControlState -> 'LockStepToken' : lockStep .muxDescriptor        -> 'MuxToken' 'EQUAL' muxType  terminationIDList			    : #'MuxDescriptor'{muxType  = '$3',					       termList = '$4'} .muxType              -> safeToken : ensure_muxType('$1') .streamID             -> safeToken : ensure_streamID('$1') .pkgdName             -> safeToken : ensure_pkgdName('$1') .eventsDescriptor     -> 'EventsToken' :                         #'EventsDescriptor'{requestID = asn1_NOVALUE,                                            eventList = []} .eventsDescriptor     -> 'EventsToken' 'EQUAL' requestID                        'LBRKT' requestedEvent requestedEvents 'RBRKT' :                         #'EventsDescriptor'{requestID = '$3',					    eventList = ['$5' | '$6']} .requestedEvents      -> 'COMMA' requestedEvent requestedEvents : ['$2' | '$3']  .requestedEvents      -> '$empty' : [] .requestedEvent       -> pkgdName requestedEventBody :                         setelement(#'RequestedEvent'.pkgdName, '$2', '$1') .requestedEventBody   -> 'LBRKT' eventParameter eventParameters 'RBRKT' :                         merge_eventParameters(['$2' | '$3']) .requestedEventBody   -> '$empty' :                         #'RequestedEvent'{evParList = []} .eventParameters      -> 'COMMA' eventParameter eventParameters :                         ['$2' | '$3'] .eventParameters      -> '$empty' :                         [] .%% at-most-once each of embedOrKeepActive , eventDM or eventStreameventParameter       -> 'KeepActiveToken'   : keepActive .eventParameter       -> embedWithSig        : '$1'.eventParameter       -> embedNoSig          : '$1'.eventParameter       -> eventDM             : '$1'.eventParameter       -> eventStreamOrOther  : '$1'.embedWithSig         -> 'EmbedToken' 'LBRKT' signalsDescriptor 			    'COMMA' embedFirst 'RBRKT' :                          {embed, '$3', '$5'} .embedWithSig         -> 'EmbedToken' 'LBRKT' signalsDescriptor 'RBRKT' :			 {embed, '$3', asn1_NOVALUE} .embedNoSig           -> 'EmbedToken' 'LBRKT' embedFirst 'RBRKT' :                         {embed, asn1_NOVALUE, '$3'} .    embedFirst           -> 'EventsToken' :                         #'SecondEventsDescriptor'{requestID = asn1_NOVALUE,						  eventList = []} .embedFirst           -> 'EventsToken' 'EQUAL' requestID                        'LBRKT' secondRequestedEvent                                 secondRequestedEvents 'RBRKT' :		        #'SecondEventsDescriptor'{requestID = '$3',						  eventList = ['$5' | '$6']} .secondRequestedEvents -> 'COMMA' secondRequestedEvent secondRequestedEvents :                          ['$2' | '$3'] .secondRequestedEvents -> '$empty' : [] .%% at-most-once of eachsecondRequestedEvent  -> pkgdName secondRequestedEventBody :                          setelement(#'SecondRequestedEvent'.pkgdName,                                     '$2', '$1') .secondRequestedEventBody -> 'LBRKT' secondEventParameter                                     secondEventParameters 'RBRKT' :                             merge_secondEventParameters(['$2' | '$3']) .secondRequestedEventBody -> '$empty' :                              #'SecondRequestedEvent'{evParList = []} .secondEventParameters -> 'COMMA' secondEventParameter secondEventParameters :                          ['$2' | '$3'] .secondEventParameters -> '$empty' : [] .%% at-most-once each of embedOrKeepActive , eventDM or eventStreamsecondEventParameter -> 'KeepActiveToken'    : keepActive .secondEventParameter -> embedSig             : '$1' .secondEventParameter -> eventDM              : '$1' .secondEventParameter -> eventStreamOrOther   : '$1' .embedSig             -> 'EmbedToken' 'LBRKT' signalsDescriptor 'RBRKT' : 			{second_embed, '$3'} .eventStreamOrOther   -> eventParameterName parmValue :                         select_stream_or_other('$1', '$2') .eventParameterName   -> safeToken :                         ensure_NAME('$1') .%% The DigitMapDescriptorToken is specially treated by the scannereventDM              -> 'DigitMapDescriptorToken' : ensure_eventDM('$1') .%% H248S-IG (IGv11)signalsDescriptor    -> 'SignalsToken' 'LBRKT' signalParm signalParms 'RBRKT' :                        ['$3' | '$4'] .signalsDescriptor    -> 'SignalsToken' :                         [] .signalParms          -> 'COMMA' signalParm signalParms : [ '$2' | '$3'] .signalParms          -> '$empty' : [] .signalParm           -> signalList    : {seqSigList, '$1'} .signalParm           -> signalRequest : {signal, '$1'} .signalRequest        -> signalName 'LBRKT' sigParameter sigParameters 'RBRKT'			    : merge_signalRequest('$1', ['$3' | '$4']).signalRequest        -> signalName : merge_signalRequest('$1', []).sigParameters        -> 'COMMA' sigParameter sigParameters : ['$2' | '$3'] .sigParameters        -> '$empty' : [] .%%    sigParameter    = sigStream / sigSignalType / sigDuration / sigOther %% 		      / notifyCompletion / KeepActiveToken %%    sigStream            = StreamToken EQUAL StreamID %%    sigOther             = sigParameterName parmValue %%    sigParameterName     = NAME %%    sigSignalType        = SignalTypeToken EQUAL signalType %%    signalType           = (OnOffToken / TimeOutToken / BriefToken) %%    sigDuration          = DurationToken EQUAL UINT16 %%    notifyCompletion     = NotifyCompletionToken EQUAL (LBRKT %% 		      notificationReason *(COMMA notificationReason) RBRKT %%     %%    notificationReason   = ( TimeOutToken / InterruptByEventToken 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?