📄 megaco_text_parser_prev3b.yrl
字号:
'AuditValueToken' 'AuthToken' 'BothToken' %% v3 'BothwayToken' 'BriefToken' 'BufferToken' 'COLON' 'COMMA' 'ContextAttrToken' %% v3 'ContextAuditToken' 'ContextListToken' %% v3 'CtxToken' 'DelayToken' 'DigitMapToken' 'DigitMapDescriptorToken' 'DirectionToken' %% v3 'DiscardToken' 'DisconnectedToken' 'DurationToken' 'EQUAL' 'EmbedToken' 'EmergencyToken' 'EmergencyOffToken' 'ErrorToken' 'EventBufferToken' 'EventsToken' 'ExternalToken' %% v3 'FailoverToken' 'ForcedToken' 'GREATER' 'GracefulToken' 'H221Token' 'H223Token' 'H226Token' 'HandOffToken' 'IEPSToken' %% v3 'ImmAckRequiredToken' 'InSvcToken' 'InactiveToken' 'InternalToken' %% v3 'InterruptByEventToken' 'InterruptByNewSignalsDescrToken' 'IsolateToken' 'KeepActiveToken' 'LBRKT' 'LESSER' 'LSBRKT' 'LocalControlToken' 'LocalDescriptorToken' 'LockStepToken' 'LoopbackToken' 'MediaToken' %% 'MegacopToken' 'MethodToken' 'MgcIdToken' 'ModeToken' 'ModemToken' 'ModifyToken' 'MoveToken' 'MtpAddressToken' 'MuxToken' 'NEQUAL' 'NotifyCompletionToken' 'NotifyToken' 'Nx64Token' %% v2 'ObservedEventsToken' 'OffToken' 'OnToken' 'OnOffToken' 'OnewayToken' 'OtherReasonToken' 'OutOfSvcToken' 'PackagesToken' 'PendingToken' 'PriorityToken' 'ProfileToken' 'QuotedChars' 'RBRKT' 'RSBRKT' 'ReasonToken' 'RecvonlyToken' 'RemoteDescriptorToken' 'ReplyToken' 'RequestIDToken' %% v3 'ReservedGroupToken' 'ReservedValueToken' '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 messageBody : ensure_message('$1', '$2', '$3') .messageBody -> errorDescriptor : {messageError, '$1'} .messageBody -> transactionList : {transactions, '$1'} .transactionList -> transactionItem : ['$1'] .transactionList -> transactionItem transactionList : ['$1' | '$2'] .transactionItem -> transactionRequest : {transactionRequest, '$1'} .transactionItem -> transactionReply : {transactionReply, '$1'}.transactionItem -> transactionPending : {transactionPending, '$1'} .transactionItem -> transactionResponseAck : {transactionResponseAck, '$1'} .transactionResponseAck -> 'ResponseAckToken' 'LBRKT' transactionAck transactionAckList 'RBRKT' : ['$3' | '$4'] .transactionAckList -> 'COMMA' transactionAck transactionAckList : ['$2' | '$3'] .transactionAckList -> '$empty' : [] .transactionAck -> safeToken : ensure_transactionAck('$1') .transactionPending -> 'PendingToken' 'EQUAL' transactionID 'LBRKT' 'RBRKT' : #'TransactionPending'{transactionId = ensure_transactionID('$3') } .transactionRequest -> 'TransToken' 'LBRKT' actionRequest actionRequestList 'RBRKT' : #'TransactionRequest'{transactionId = asn1_NOVALUE, actions = ['$3' | '$4']} .transactionRequest -> 'TransToken' 'EQUAL' 'LBRKT' actionRequest actionRequestList 'RBRKT' : #'TransactionRequest'{transactionId = asn1_NOVALUE, actions = ['$4' | '$5']} .transactionRequest -> 'TransToken' 'EQUAL' transactionID 'LBRKT' actionRequest actionRequestList 'RBRKT' : #'TransactionRequest'{transactionId = ensure_transactionID('$3'), actions = ['$5' | '$6']} .actionRequestList -> 'COMMA' actionRequest actionRequestList : ['$2' | '$3'] .actionRequestList -> '$empty' : [] .actionRequest -> 'CtxToken' 'EQUAL' contextID 'LBRKT' actionRequestBody 'RBRKT' : merge_action_request('$3', '$5') .actionRequestBody -> actionRequestItem actionRequestItems : ['$1' | '$2'] . actionRequestItems -> 'COMMA' actionRequestItem actionRequestItems : ['$2' | '$3'] .actionRequestItems -> '$empty' : [] .%% actionRequestItem -> contextProperties : '$1' .actionRequestItem -> contextProperty : {contextProp, '$1'} .actionRequestItem -> contextAudit : {contextAudit, '$1'} .actionRequestItem -> commandRequest : {commandRequest, '$1'} .%% contextProperties -> contextProperty contextPropertyList : %% merge_context_request(#'ContextRequest'{}, ['$1' | '$2']) .%% contextPropertyList -> 'COMMA' contextProperty contextPropertyList : ['$2' | '$3' ] .%% contextPropertyList -> '$empty' : [] .%% at-most-oncecontextProperty -> topologyDescriptor : {topology, '$1'}.contextProperty -> priority : {priority, '$1'}. contextProperty -> 'EmergencyToken' : {emergency, true}.contextProperty -> 'EmergencyOffToken' : {emergency, false}.contextProperty -> iepsValue : {iepsCallind, '$1'} . contextProperty -> contextAttrDescriptor : '$1' .contextAttrDescriptor -> 'ContextAttrToken' 'LBRKT' propertyParms 'RBRKT' : {contextProp, '$3'}.contextAttrDescriptor -> 'ContextAttrToken' 'LBRKT' contextIdList 'RBRKT' : {contextList, '$3'}.contextIdList -> 'ContextListToken' 'EQUAL' 'LBRKT' contextID contextIDs 'RBRKT' : ['$4' | '$5'] .contextIDs -> 'COMMA' contextID contextIDs : ['$2' | '$3'] .contextIDs -> '$empty' : [] . contextAudit -> 'ContextAuditToken' 'LBRKT' indAudcontextAttrDescriptor 'RBRKT' : merge_context_attr_audit_request( #'ContextAttrAuditRequest'{}, '$3') .indAudcontextAttrDescriptor -> 'ContextAttrToken' 'LBRKT' contextAuditProperty contextAuditProperties 'RBRKT' : ['$3' | '$4'] .contextAuditProperties -> 'COMMA' contextAuditProperty contextAuditProperties : ['$2' | '$3'] .contextAuditProperties -> '$empty' : [] .%% at-most-once .contextAuditProperty -> 'TopologyToken' : topologyAudit .contextAuditProperty -> 'EmergencyToken' : emergencyAudit .contextAuditProperty -> 'PriorityToken' : priorityAudit .contextAuditProperty -> 'IEPSToken' : iepsCallind .contextAuditProperty -> pkgdName : {prop, '$1'} .commandRequest -> ammRequest : '$1'.commandRequest -> subtractRequest : '$1'.commandRequest -> auditRequest : '$1'.commandRequest -> notifyRequest : '$1'.commandRequest -> serviceChangeRequest : '$1'.transactionReply -> 'ReplyToken' 'EQUAL' transactionID 'LBRKT' optImmAckRequired transactionReplyBody 'RBRKT' : #'TransactionReply'{transactionId = '$3', immAckRequired = '$5', transactionResult = '$6'} .optImmAckRequired -> 'ImmAckRequiredToken' 'COMMA' : 'NULL' .optImmAckRequired -> '$empty' : asn1_NOVALUE . transactionReplyBody -> errorDescriptor : {transactionError, '$1'} .transactionReplyBody -> actionReply actionReplyList : {actionReplies, ['$1' | '$2']} .actionReplyList -> 'COMMA' actionReply actionReplyList : ['$2' | '$3'] .actionReplyList -> '$empty' : [] .actionReply -> 'CtxToken' 'EQUAL' contextID 'LBRKT' actionReplyBody 'RBRKT' : setelement(#'ActionReply'.contextId, '$5', '$3') .actionReplyBody -> errorDescriptor : #'ActionReply'{errorDescriptor = '$1'} .actionReplyBody -> commandReplys commandReplyList : merge_action_reply(['$1' | '$2']) .%% OTP-5085%% This ugly thing is to fool the parser. The errorDescriptor does not%% realy belong here. The merge_action_reply will remove it and put it%% in it's right place later.commandReplyList -> 'COMMA' errorDescriptor : [{error, '$2'}] .commandReplyList -> 'COMMA' commandReplys commandReplyList : ['$2' | '$3'] .commandReplyList -> '$empty' : [] .commandReplys -> serviceChangeReply : {command, '$1'} .commandReplys -> auditReply : {command, '$1'} .commandReplys -> ammsReply : {command, '$1'} .commandReplys -> notifyReply : {command, '$1'} .commandReplys -> contextProperty : {context, '$1'} .%Add Move and Modify have the same request parameterammRequest -> ammToken 'EQUAL' terminationID ammRequestBody : Descs = merge_AmmRequest_descriptors('$4', []), make_commandRequest('$1', #'AmmRequest'{terminationID = ['$3'], descriptors = Descs}) .ammToken -> 'AddToken' : {addReq, '$1'} .ammToken -> 'MoveToken' : {moveReq, '$1'} .ammToken -> 'ModifyToken' : {modReq, '$1'} .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -