⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco_text_scanner.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 2 页
字号:
			{Rest5, Line5, #'DigitMapDescriptor'{digitMapName  = DigitMapName}}		end,	    case Rest6 of		[?LbrktToken | Rest7] ->		    {token, {'OctetString', _, OctetString}, Rest8, Line8} = 			octet_string(Rest7, Line6),		    case Rest8 of			[?RbrktToken | Rest10] ->			    %% 'DigitMapToken' 'EQUAL' 'LBRKT' OctetString 'RBRKT'			    %% 'DigitMapToken' 'EQUAL' Name 'LBRKT' OctetString 'RBRKT'			    {Rest11, Line11} = skip_sep_chars(Rest10, Line8),			    DMV = digit_map_value(OctetString),			    DMD2 = DMD#'DigitMapDescriptor'{digitMapValue = DMV},			    {token, {'DigitMapDescriptorToken', Line, DMD2}, Rest11, Line11};			_ when DMD#'DigitMapDescriptor'.digitMapName /= asn1_NOVALUE ->			    %% 'DigitMapToken' 'EQUAL' Name			    {token, {'DigitMapDescriptorToken', Line, DMD}, Rest4, Line3};			_ ->			    %% 'DigitMapToken'			    {token, {'DigitMapToken', Line, SafeChars}, All, Line}		    end;		_ when DMD#'DigitMapDescriptor'.digitMapName /= asn1_NOVALUE ->		    %% 'DigitMapToken' 'EQUAL' Name		    {token, {'DigitMapDescriptorToken', Line, DMD}, Rest4, Line3};		_ ->		    %% 'DigitMapToken'		    {token, {'DigitMapToken', Line, SafeChars}, All, Line}	    end;	_  when TokenTag == 'DigitMapToken' ->	    %% 'DigitMapToken'	    {token, {'DigitMapToken', Line, SafeChars}, All, Line};	_ ->	    %% 'DigitMapToken'	    {token, {'SafeChars', Line, SafeChars}, All, Line}    end.octet_string(Chars, Line) ->    {Chars2, Line2} = skip_sep_chars(Chars, Line),    Acc = [],    {Rest, RevChars, RestLine} = octet_string(Chars2, Acc, Line2),    {RevChars2, _} = skip_sep_chars(RevChars, RestLine),    OctetString = lists:reverse(RevChars2),    {token, {'OctetString', Line, OctetString}, Rest, RestLine}.        octet_string([Char | Rest] = All, Acc, Line) ->    if	Char == ?CrToken ->	    octet_string(Rest, [Char | Acc], Line + 1);	Char == ?LfToken ->	    octet_string(Rest, [Char | Acc], Line + 1);	Char >= 8#1, Char =< 8#174 ->	    octet_string(Rest, [Char | Acc], Line);	Char >= 8#176, Char =< 8#377 ->	    octet_string(Rest, [Char | Acc], Line);	Char == ?BackslashToken ->	    case Rest of		[?RbrktToken | _Rest2] ->		    %% OTP-4357		    octet_string(Rest, [?RbrktToken, ?BackslashToken | Acc], Line);		_ ->		    octet_string(Rest, [Char | Acc], Line)	    end;	true ->	    {All, Acc, Line}    end;octet_string([] = All, Acc, Line) ->    {All, Acc, Line}.	%% digitMapValue      = ["T" COLON Timer COMMA]%%			["S" COLON Timer COMMA] %%			["L" COLON Timer COMMA] %%			["Z" COLON Timer COMMA] digitMap  digit_map_value(Chars) ->    digit_map_value(Chars, #'DigitMapValue'{}).%% NOTE: The swap of the digitMapBody and the durationTimer is%% intentional. The reason is a problem with the flex scanner.%% Hopefully this is temporary...%% The values are swapped back later by the parser...digit_map_value([Char, ?ColonToken | Rest] = All, DMV) ->    case ?LOWER1(Char) of	$t -> digit_map_timer(All, Rest, #'DigitMapValue'.startTimer, DMV);	$s -> digit_map_timer(All, Rest, #'DigitMapValue'.shortTimer, DMV);	$l -> digit_map_timer(All, Rest, #'DigitMapValue'.longTimer, DMV);% 	$z -> digit_map_timer(All, Rest, #'DigitMapValue'.durationTimer, DMV);% 	_  -> DMV#'DigitMapValue'{digitMapBody = All}	$z -> digit_map_timer(All, Rest, #'DigitMapValue'.digitMapBody, DMV);	_  -> DMV#'DigitMapValue'{durationTimer = All}    end;digit_map_value(Chars, DMV) ->    DMV#'DigitMapValue'{durationTimer = Chars}.digit_map_timer(All, Chars, TimerPos, DMV) ->    {Rest, Digits} = collect_safe_chars(Chars, []),    {Rest2, _} = skip_sep_chars(Rest, 0),   case {Rest2, catch list_to_integer(Digits)} of       {[?CommaToken | Rest3], Int} when integer(Int), Int >= 0,					 element(TimerPos, DMV) == asn1_NOVALUE ->	   {Rest4, _} = skip_sep_chars(Rest3, 0),	   DMV2 = setelement(TimerPos, DMV, Int),	   digit_map_value(Rest4, DMV2);       _ ->	   DMV#'DigitMapValue'{digitMapBody = All}   end.select_token([$o, $- | LowerText]) ->    select_token(LowerText);select_token([$w, $- | LowerText]) ->    select_token(LowerText);select_token(LowerText) ->    case LowerText of        "add"                   -> 'AddToken';        "a"                     -> 'AddToken';        "andlgc"                -> 'AndAUDITSelectToken'; % v3        "audit"                 -> 'AuditToken';        "at"                    -> 'AuditToken';        "auditcapability"       -> 'AuditCapToken';        "ac"                    -> 'AuditCapToken';        "auditvalue"            -> 'AuditValueToken';        "av"                    -> 'AuditValueToken';	"authentication"        -> 'AuthToken';        "au"                    -> 'AuthToken';        "both"                  -> 'BothToken';         % v3        "b"                     -> 'BothToken';         % v3        "bothway"               -> 'BothwayToken';        "bw"                    -> 'BothwayToken';        "brief"                 -> 'BriefToken';        "br"                    -> 'BriefToken';        "buffer"                -> 'BufferToken';        "bf"                    -> 'BufferToken';        "context"               -> 'CtxToken';        "c"                     -> 'CtxToken';        "contextattr"           -> 'ContextAttrToken';  % v3        "ct"                    -> 'ContextAttrToken';  % v3        "contextlist"           -> 'ContextListToken';  % v3        "clt"                   -> 'ContextListToken';  % v3        "contextaudit"          -> 'ContextAuditToken';        "ca"                    -> 'ContextAuditToken';	"digitmap"              -> 'DigitMapToken';	"dm"                    -> 'DigitMapToken';        "spadirection"          -> 'DirectionToken';    % v3        "direction"             -> 'DirectionToken';    % v3 (pre-v3a/v3b)        "spadi"                 -> 'DirectionToken';    % v3        "di"                    -> 'DirectionToken';    % v3 (pre-v3a/v3b)        "discard"               -> 'DiscardToken';        "ds"                    -> 'DiscardToken';        "disconnected"          -> 'DisconnectedToken';        "dc"                    -> 'DisconnectedToken';        "delay"                 -> 'DelayToken';        "dl"                    -> 'DelayToken';        "delete"                -> 'DeleteToken';        "de"                    -> 'DeleteToken';        "duration"              -> 'DurationToken';        "dr"                    -> 'DurationToken';        "embed"                 -> 'EmbedToken';        "em"                    -> 'EmbedToken';        "emergency"             -> 'EmergencyToken';        "eg"                    -> 'EmergencyToken';        "emergencyofftoken"     -> 'EmergencyOffToken';        "emergencyoff"          -> 'EmergencyOffToken';   % v3 (as of prev3c)        "ego"                   -> 'EmergencyOffToken';        "emergencyvalue"        -> 'EmergencyValueToken'; % v3         "egv"                   -> 'EmergencyValueToken'; % v3        "error"                 -> 'ErrorToken';        "er"                    -> 'ErrorToken';        "eventbuffer"           -> 'EventBufferToken';        "eb"                    -> 'EventBufferToken';        "events"                -> 'EventsToken';        "e"                     -> 'EventsToken';        "external"              -> 'ExternalToken';     % v3        "ex"                    -> 'ExternalToken';     % v3        "failover"              -> 'FailoverToken';        "fl"                    -> 'FailoverToken';        "forced"                -> 'ForcedToken';        "fo"                    -> 'ForcedToken';        "graceful"              -> 'GracefulToken';        "gr"                    -> 'GracefulToken';        "h221"                  -> 'H221Token';        "h223"                  -> 'H223Token';        "h226"                  -> 'H226Token';        "handoff"               -> 'HandOffToken';        "ho"                    -> 'HandOffToken';        "iepscall"              -> 'IEPSToken';         % v3        "ieps"                  -> 'IEPSToken';         % v3        "inactive"              -> 'InactiveToken';        "in"                    -> 'InactiveToken';        "internal"              -> 'InternalToken';     % v3        "it"                    -> 'InternalToken';     % v3        "immackrequired"        -> 'ImmAckRequiredToken';        "ia"                    -> 'ImmAckRequiredToken';        "inservice"             -> 'InSvcToken';        "intersignal"           -> 'IntsigDelayToken'; % v3        "spais"                 -> 'IntsigDelayToken'; % v3        "intbyevent"            -> 'InterruptByEventToken';        "ibe"                   -> 'InterruptByEventToken';        "intbysigdescr"         -> 'InterruptByNewSignalsDescrToken';        "ibs"                   -> 'InterruptByNewSignalsDescrToken';        "iv"                    -> 'InSvcToken';        "isolate"               -> 'IsolateToken';        "is"                    -> 'IsolateToken';	"iterationtoken"        -> 'IterationToken'; % v3	"ir"                    -> 'IterationToken'; % v3        "keepactive"            -> 'KeepActiveToken';        "ka"                    -> 'KeepActiveToken';	"local"                 -> 'LocalToken';        "l"                     -> 'LocalToken';        "localcontrol"          -> 'LocalControlToken';        "lockstep"              -> 'LockStepToken';        "sp"                    -> 'LockStepToken';        "o"                     -> 'LocalControlToken';        "loopback"              -> 'LoopbackToken';        "lb"                    -> 'LoopbackToken';        "media"                 -> 'MediaToken';        "m"                     -> 'MediaToken';        %% "megaco"                -> 'MegacopToken';	%% "!"                     -> 'megacoptoken';	%% "segment"               -> 'MessageSegmentToken'; % v3	%% "sm"                    -> 'MessageSegmentToken'; % v3        "method"                -> 'MethodToken';        "mt"                    -> 'MethodToken';        "mtp"                   -> 'MtpToken';        "mgcidtotry"            -> 'MgcIdToken';        "mg"                    -> 'MgcIdToken';        "mode"                  -> 'ModeToken';        "mo"                    -> 'ModeToken';        "modify"                -> 'ModifyToken';        "mf"                    -> 'ModifyToken';        "modem"                 -> 'ModemToken';        "md"                    -> 'ModemToken';        "move"                  -> 'MoveToken';        "mv"                    -> 'MoveToken';        "mux"                   -> 'MuxToken';        "mx"                    -> 'MuxToken';        "nevernotify"           -> 'NeverNotifyToken'; % v3        "nbnn"                  -> 'NeverNotifyToken'; % v3        "notify"                -> 'NotifyToken';        "n"                     -> 'NotifyToken';        "notifycompletion"      -> 'NotifyCompletionToken';        "nc"                    -> 'NotifyCompletionToken';        "immediatenotify"       -> 'NotifyImmediateToken';    % v3        "nbin"                  -> 'NotifyImmediateToken';    % v3        "regulatednotify"       -> 'NotifyRegulatedToken';    % v3        "nbrn"                  -> 'NotifyRegulatedToken';    % v3        "nx64kservice"          -> 'Nx64kToken';              % v2        "n64"                   -> 'Nx64kToken';              % v2        "observedevents"        -> 'ObservedEventsToken';        "oe"                    -> 'ObservedEventsToken';        "oneway"                -> 'OnewayToken';        "ow"                    -> 'OnewayToken';        "onewayboth"            -> 'OnewayBothToken';     % v3        "owb"                   -> 'OnewayBothToken';     % v3        "onewayexternal"        -> 'OnewayExternalToken'; % v3        "owe"                   -> 'OnewayExternalToken'; % v3        "off"                   -> 'OffToken';        "on"                    -> 'OnToken';        "onoff"                 -> 'OnOffToken';        "oo"                    -> 'OnOffToken';        "orlgc"                 -> 'OrAUDITselectToken';  % v3        "otherreason"           -> 'OtherReasonToken';        "or"                    -> 'OtherReasonToken';        "outofservice"          -> 'OutOfSvcToken';        "os"                    -> 'OutOfSvcToken';        "packages"              -> 'PackagesToken';        "pg"                    -> 'PackagesToken';        "pending"               -> 'PendingToken';        "pn"                    -> 'PendingToken';        "priority"              -> 'PriorityToken';        "pr"                    -> 'PriorityToken';        "profile"               -> 'ProfileToken';        "pf"                    -> 'ProfileToken';        "reason"                -> 'ReasonToken';        "re"                    -> 'ReasonToken';        "receiveonly"           -> 'RecvonlyToken';        "requestid"             -> 'RequestIDToken';    % v3        "rq"                    -> 'RequestIDToken';    % v3        "rc"                    -> 'RecvonlyToken';        "reply"                 -> 'ReplyToken';        "p"                     -> 'ReplyToken';        "reseteventsdescriptor" -> 'ResetEventsDescriptorToken'; % v3        "rse"                   -> 'ResetEventsDescriptorToken'; % v3        "transactionresponseack"-> 'ResponseAckToken';        "k"                     -> 'ResponseAckToken';        "restart"               -> 'RestartToken';        "rs"                    -> 'RestartToken';	"remote"                -> 'RemoteToken';	"r"                     -> 'RemoteToken';        "sparequestid"          -> 'RequestIDToken';        "sparq"                 -> 'RequestIDToken';        "reservedgroup"         -> 'ReservedGroupToken';        "rg"                    -> 'ReservedGroupToken';        "reservedvalue"         -> 'ReservedValueToken';        "rv"                    -> 'ReservedValueToken';        "end"                   -> 'SegmentCompleteToken'; % v3        "&"                     -> 'SegmentCompleteToken'; % v3        "sendonly"              -> 'SendonlyToken';        "so"                    -> 'SendonlyToken';        "sendreceive"           -> 'SendrecvToken';        "sr"                    -> 'SendrecvToken';        "services"              -> 'ServicesToken';        "sv"                    -> 'ServicesToken';        "servicestates"         -> 'ServiceStatesToken';        "si"                    -> 'ServiceStatesToken';        "servicechange"         -> 'ServiceChangeToken';        "sc"                    -> 'ServiceChangeToken';        "servicechangeaddress"  -> 'ServiceChangeAddressToken';        "ad"                    -> 'ServiceChangeAddressToken';        "servicechangeinc"      -> 'ServiceChangeIncompleteToken'; % v3        "sic"                   -> 'ServiceChangeIncompleteToken'; % v3        "signallist"            -> 'SignalListToken';        "sl"                    -> 'SignalListToken';        "signals"               -> 'SignalsToken';        "sg"                    -> 'SignalsToken';        "signaltype"            -> 'SignalTypeToken';        "sy"                    -> 'SignalTypeToken';        "statistics"            -> 'StatsToken';        "sa"                    -> 'StatsToken';        "stream"                -> 'StreamToken';        "st"                    -> 'StreamToken';        "subtract"              -> 'SubtractToken';        "s"                     -> 'SubtractToken';        "synchisdn"             -> 'SynchISDNToken';        "sn"                    -> 'SynchISDNToken';        "terminationstate"      -> 'TerminationStateToken';        "ts"                    -> 'TerminationStateToken';        "test"                  -> 'TestToken';        "te"                    -> 'TestToken';        "timeout"               -> 'TimeOutToken';        "to"                    -> 'TimeOutToken';        "topology"              -> 'TopologyToken';        "tp"                    -> 'TopologyToken';        "transaction"           -> 'TransToken';        "t"                     -> 'TransToken';        "v18"                   -> 'V18Token';        "v22"                   -> 'V22Token';        "v22b"                  -> 'V22bisToken';        "v32"                   -> 'V32Token';        "v32b"                  -> 'V32bisToken';        "v34"                   -> 'V34Token';        "v76"                   -> 'V76Token';        "v90"                   -> 'V90Token';        "v91"                   -> 'V91Token';        "version"               -> 'VersionToken';        "v"                     -> 'VersionToken';	%% TimeStamp when length(TimeStamp) == 17 -> 'TimeStampToken';	[D1,D2,D3,D4,D5,D6,D7,D8,$t,T1,T2,T3,T4,T5,T6,T7,T8] 	when $0 =< D1; D1 =< $9;	     $0 =< D2; D2 =< $9;	     $0 =< D3; D3 =< $9;	     $0 =< D4; D4 =< $9;	     $0 =< D5; D5 =< $9;	     $0 =< D6; D6 =< $9;	     $0 =< D7; D7 =< $9;	     $0 =< D8; D8 =< $9;	     $0 =< T1; T1 =< $9;	     $0 =< T2; T2 =< $9;	     $0 =< T3; T3 =< $9;	     $0 =< T4; T4 =< $9;	     $0 =< T5; T5 =< $9;	     $0 =< T6; T6 =< $9;	     $0 =< T7; T7 =< $9;	     $0 =< T8; T8 =< $9 -> 'TimeStampToken';	_                       -> 'SafeChars'    end.%% d(F) ->%%     d(F, []).%% d(F, A) ->%%     d(get(dbg), F, A).%% d(true, F, A) ->%%     io:format("DBG:~p:" ++ F ++ "~n", [?MODULE|A]);%% d(_, _, _) ->%%     ok.

⌨️ 快捷键说明

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