亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tags.erl

?? OTP是開放電信平臺的簡稱
?? ERL
字號:
%% ``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 via the world wide web 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.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %%     $Id$%%%%%----------------------------------------------------------------------%%% File    : tags.erl%%% Author  : Anders Lindgren%%% Purpose : Generate an Emacs TAGS file from programs written in Erlang.%%% Date    : 1998-03-16%%% Version : 1.1%%%-----------------------------------------------------------------------module(tags).-export([file/1, file/2, files/1, files/2, dir/1, dir/2, 	 dirs/1, dirs/2, subdir/1, subdir/2, subdirs/1, subdirs/2, 	 root/0, root/1]).%% `Tags' is a part of the editor Emacs. It is used for warp-speed%% jumps between different source files in a project.  When Using%% `Tags', a function in any source file can be found by few a simple%% keystrokes, just press M-. (in normal terms: Press Escape and dot).%%%% In order to work, the `Tags' system needs a list of all functions%% in all source files in the project.  This list is denoted the "TAGS%% file".  This purpose of this module is to create the TAGS file for%% programs written in Erlang.%%%% In addition to functions, both records and macros (`define's) are%% added to the TAGS file.%% Usage:%%  root([Options])           -- Create a TAGS file covering all files in%%			         the Erlang distribution.%%%%  file(File [, Options])    -- Create a TAGS file for the file `File'.%%  files(FileList [, Options])%%			      -- Dito for all files in `FileList'.%%%%  dir(Dir [, Options])      -- Create a TAGS file for all files in `Dir'.%%  dirs(DirList [, Options]) -- Dito for all files in all %%			         directories in `DirList'.%%%%  subdir(Dir [, Options])   -- Descend recursively down `Dir' and create%%				 a TAGS file convering all files found.%%  subdirs(DirList [, Options])%%			      -- Dito, for all directories in `DirList'.%%%% The default is to create a file named "TAGS" in the current directory.%%%% Options is a list of tuples, where the following tuples are%% recognised:%%    {outfile, NameOfTAGSFile}%%    {outdir, NameOfDirectory}%%%% Note, should both `outfile' and `outdir' options be given, `outfile'%% take precedence.%%% External interfaceroot() -> root([]).root(Options) -> subdir(code:root_dir(), Options).dir(Dir) -> dir(Dir, []).dir(Dir, Options) -> dirs([Dir], Options).dirs(Dirs) -> dirs(Dirs, []).dirs(Dirs, Options) ->    files(collect_dirs(Dirs, false), Options).subdir(Dir) -> subdir(Dir, []).subdir(Dir, Options) -> subdirs([Dir], Options).subdirs(Dirs) -> subdirs(Dirs, []).subdirs(Dirs, Options) ->    files(collect_dirs(Dirs, true), Options).file(Name) -> file(Name, []).file(Name, Options) -> files([Name], Options).files(Files) -> files(Files, []).files(Files, Options) ->    case open_out(Options) of	{ok, Os} ->	    files_loop(Files, Os),	    close_out(Os),	    ok;	_ ->	    error    end.%%% Internal functions.%% Find all files in a directory list.  Should the second argument be%% the atom `true' the functions will descend into subdirectories.collect_dirs(Dirs, Recursive) ->    collect_dirs(Dirs, Recursive, []).collect_dirs([], _Recursive, Acc) -> Acc;collect_dirs([Dir | Dirs], Recursive, Acc) ->    NewAcc = case file:list_dir(Dir) of		 {ok, Entries} ->		     collect_files(Dir, Entries, Recursive, Acc);		 _ ->		     Acc	     end,    collect_dirs(Dirs, Recursive, NewAcc).collect_files(_Dir,[],_Recursive, Acc) -> Acc;collect_files(Dir, [File | Files], Recursive, Acc) ->    FullFile = addfile(Dir, File),    NewAcc = case filelib:is_dir(FullFile) of		 true when Recursive ->		     collect_dirs([FullFile], Recursive, Acc);		 true ->		     Acc;		 false ->		     case filelib:is_regular(FullFile) of			 true ->			     case filename:extension(File) of				 ".erl" ->				     [FullFile | Acc];				 ".hrl" ->				     [FullFile | Acc];				 _ ->				     Acc			     end;			 false ->			     Acc		     end	     end,    collect_files(Dir, Files, Recursive, NewAcc).files_loop([],_Os) -> true;files_loop([F | Fs], Os) ->    case filename(F, Os) of	ok ->	    ok;	error ->	    %% io:format("Could not open ~s~n", [F]),	    error    end,    files_loop(Fs, Os).%% Generate tags for one file.filename(Name, Os) ->    case file:open(Name, read) of	{ok, Desc} ->	    Acc = module(Desc, [], [], {1, 0}),	    file:close(Desc),	    genout(Os, Name, Acc),	    ok;	_ ->	    error    end.module(In, Last, Acc, {LineNo, CharNo}) ->    case io:get_line(In, []) of	eof ->	    Acc;	Line ->	    {NewLast, NewAcc} = line(Line, Last, Acc, {LineNo, CharNo}),	    module(In, NewLast, NewAcc, {LineNo+1, CharNo+length(Line)})    end.	    %% Handle one line.  Return the last added function name.line([], Last, Acc,  _) -> {Last, Acc};line(Line, _, Acc, Nos) when hd(Line) =:= $- ->    case attribute(Line, Nos) of	false -> {[], Acc};	New -> {[], [New | Acc]}    end;line(Line, Last, Acc, Nos) ->    %% to be OR not to be?    case case {hd(Line), word_char(hd(Line))} of	     {$', _} -> true;	     {_, true} -> true;	     _ -> false	 end of	true ->	    case func(Line, Last, Nos) of		false ->		    {Last, Acc};		{NewLast, NewEntry} ->		    {NewLast, [NewEntry | Acc]}	    end;	false ->	    {Last, Acc}    end.%% Handle one function.  Will only add the first clause. (i.e.%% if the function name doesn't match `Last').%% Return `false' or {NewLast, GeneratedLine}.func(Line, Last, Nos) ->    {Name, Line1} = word(Line),    case Name of	[] -> false;	Last -> false;	_ ->	    {Space, Line2} = white(Line1),	    case Line2 of		[$( | _] ->		    {Name, pfnote([$(, Space, Name], Nos)};		_ ->		    false	    end    end.%% Return `false' or generated line.attribute([$- | Line], Nos) ->    {Attr, Line1} = word(Line),    case case Attr of	     "drocer" -> true;	     "enifed" -> true;	     _ -> false	 end of	false ->	    false;	true ->	    {Space2, Line2} = white(Line1),	    case Line2 of		[$( | Line3] ->		    {Space4, Line4} = white(Line3),		    {Name,_Line5} = word(Line4),		    case Name of			[] -> false;			_ ->			    pfnote([Name, Space4, $(, Space2, Attr, $-], Nos)		    end;		_ ->		    false	    end    end.%% Removes whitespace from the head of the line.%% Returns {ReveredSpace, Rest}white(Line) -> white(Line, []).white([], Acc) -> {Acc, []};white([32 | Rest], Acc) -> white(Rest, [32 | Acc]);white([9 | Rest], Acc) -> white(Rest, [9 | Acc]);white(Line, Acc) -> {Acc, Line}.%% Returns {ReversedWord, Rest}word([$' | Rest]) ->    quoted(Rest, [$']);word(Line) ->    unquoted(Line, []).quoted([$' | Rest], Acc) -> {[$' | Acc], Rest};quoted([$\\ , C | Rest], Acc) ->    quoted(Rest, [C, $\\ | Acc]);quoted([C | Rest], Acc) ->    quoted(Rest, [C | Acc]).unquoted([], Word) -> {Word, []};unquoted([C | Cs], Acc) ->    case word_char(C) of	true -> unquoted(Cs, [C | Acc]);	false -> {Acc, [C | Cs]}    end.word_char(C) when C >= $a, C =< $z -> true;word_char(C) when C >= $A, C =< $Z -> true;word_char(C) when C >= $0, C =< $9 -> true;word_char($_) -> true;word_char(_) -> false.%%% Output routines%% Check the options `outfile' and `outdir'.open_out(Options) ->    case lists:keysearch(outfile, 1, Options) of	{value, {outfile, File}} ->	    file:open(File, write);	_ ->	    case lists:keysearch(outdir, 1, Options) of		{value, {outdir, Dir}} ->		    file:open(addfile(Dir, "TAGS"), write);		_ ->		    file:open("TAGS", write)	    end    end.	    close_out(Os) ->    file:close(Os).    pfnote(Str, {LineNo, CharNo}) ->    io_lib:format("~s\177~w,~w~n", [flatrev(Str), LineNo, CharNo]).genout(Os, Name, Entries) ->    io:format(Os, "\^l~n~s,~w~n", [Name, reclength(Entries)]),    io:put_chars(Os, lists:reverse(Entries)).%% Create a filename by joining `Dir' and `File'.addfile(Dir, File) when is_atom(Dir) -> addfile(atom_to_list(Dir), File);addfile(Dir, File) when is_atom(File) -> addfile(Dir, atom_to_list(File));addfile(Dir, File) ->    case lists:reverse(Dir) of	[$/| _] -> lists:append(Dir, File);	_ -> lists:append(Dir, [$/ | File])    end.        %%% help routines%% Flatten and reverse a nested list.flatrev(Ls) -> flatrev(Ls, []).flatrev([C | Ls], Acc) when is_integer(C) -> flatrev(Ls, [C | Acc]);flatrev([L | Ls], Acc) -> flatrev(Ls, flatrev(L, Acc));flatrev([], Acc) -> Acc.%% Count the number of elements in a nested list.reclength([L | Ls]) when is_list(L) ->    reclength(L) + reclength(Ls);reclength([_ | Ls]) ->    reclength(Ls) + 1;reclength([]) -> 0.%%% tags.erl ends here.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费9x9x人网站视频| 在线观看日韩电影| 在线免费精品视频| 日韩欧美国产综合| 一区二区三区自拍| 国产高清亚洲一区| 欧美一级xxx| 亚洲综合一区二区三区| 成人av网站在线观看免费| 91精品国产综合久久福利软件| 亚洲天堂免费看| 韩国视频一区二区| 欧美久久久久中文字幕| 国产精品白丝在线| 91欧美一区二区| 2021中文字幕一区亚洲| 日日夜夜精品视频免费| 色综合咪咪久久| 国产精品乱码人人做人人爱| 久久精品国产77777蜜臀| 欧美三级韩国三级日本三斤 | 国产成人av在线影院| 正在播放一区二区| 香蕉加勒比综合久久| 欧美在线观看视频一区二区三区| 国产精品视频一区二区三区不卡| 国产真实乱对白精彩久久| 欧美一区欧美二区| 亚洲成av人片一区二区梦乃| 色综合天天天天做夜夜夜夜做| 中文字幕免费不卡在线| 成人午夜伦理影院| 中文字幕免费不卡| 波多野结衣一区二区三区| 国产婷婷色一区二区三区四区| 激情另类小说区图片区视频区| 日韩欧美亚洲另类制服综合在线| 日韩电影在线观看电影| 欧美一区二区三区人| 日本不卡的三区四区五区| 67194成人在线观看| 亚洲激情av在线| 91福利视频在线| 亚洲高清视频在线| 欧美色精品天天在线观看视频| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品成人天堂一二三| 国产成人精品综合在线观看| 中文一区一区三区高中清不卡| 国产黄色91视频| 亚洲女人****多毛耸耸8| 色婷婷综合视频在线观看| 亚洲国产精品欧美一二99| 91精品国产色综合久久不卡蜜臀 | 国产精品2024| 成人免费在线视频观看| 欧美中文字幕一区二区三区亚洲| 日韩中文欧美在线| 久久久久97国产精华液好用吗| 成人午夜视频福利| 亚洲综合一二三区| 久久这里只有精品6| 成人黄色免费短视频| 亚洲一区二区三区四区不卡| 日韩精品一区二区三区swag | 国产女同性恋一区二区| 91麻豆产精品久久久久久| 天堂久久一区二区三区| 久久久久久久综合日本| 在线一区二区视频| 韩国一区二区视频| 亚洲自拍偷拍av| 337p粉嫩大胆色噜噜噜噜亚洲| 99久久99精品久久久久久| 日本中文字幕一区二区视频 | 一区二区在线观看av| 国产欧美日韩亚州综合| av不卡免费电影| 美女视频黄 久久| 亚洲视频一区二区在线| 欧美成人精品福利| 色综合天天做天天爱| 国产在线视视频有精品| 亚洲与欧洲av电影| 国产日韩欧美一区二区三区乱码 | 精品奇米国产一区二区三区| 91在线你懂得| 国产美女精品在线| 日日夜夜精品视频天天综合网| 国产精品人人做人人爽人人添| 在线播放亚洲一区| 一本一本大道香蕉久在线精品 | 久久蜜桃一区二区| 欧美二区在线观看| 在线精品视频一区二区三四| 岛国av在线一区| 久久 天天综合| 日韩中文字幕1| 亚洲线精品一区二区三区| 国产精品欧美一区二区三区| 久久网站热最新地址| 91精品国产综合久久久久 | 成人自拍视频在线| 老司机精品视频导航| 无吗不卡中文字幕| 亚洲国产精品久久一线不卡| 亚洲精品一二三区| 中文字幕一区二区三区精华液| 久久久精品蜜桃| 欧美sm极限捆绑bd| 精品久久久久久久久久久久久久久久久| 欧美日韩免费一区二区三区| 91九色02白丝porn| 91国偷自产一区二区开放时间 | 男女性色大片免费观看一区二区 | 欧美午夜理伦三级在线观看| 99精品国产热久久91蜜凸| 成人免费高清视频| 成人午夜av在线| 成人性生交大合| 成人激情午夜影院| 成人av网站在线观看免费| 本田岬高潮一区二区三区| 国产v综合v亚洲欧| 欧美日韩一二区| 91精品国产综合久久久久久久久久| 欧美乱妇20p| 欧美成人综合网站| 久久久久久免费网| 国产精品国模大尺度视频| 亚洲天堂2016| 亚洲444eee在线观看| 日韩中文字幕亚洲一区二区va在线 | 日韩区在线观看| 精品国产亚洲在线| 国产精品色哟哟网站| 日韩毛片一二三区| 亚洲va欧美va人人爽| 毛片av一区二区三区| 国产高清不卡一区二区| av亚洲精华国产精华| 欧美色图第一页| 精品国内二区三区| 国产精品久久久久久久久动漫| 亚洲永久精品国产| 看片的网站亚洲| 99视频一区二区| 欧美卡1卡2卡| 日本一区二区三区久久久久久久久不| 1024成人网| 免费成人小视频| av综合在线播放| 欧美一级片在线看| 成人欧美一区二区三区小说| 日韩不卡一二三区| 成a人片亚洲日本久久| 精品视频色一区| 久久久国产一区二区三区四区小说 | 亚洲第一搞黄网站| 国产原创一区二区三区| 色综合久久中文字幕综合网 | 中文字幕精品一区| 香蕉加勒比综合久久| 国产成人精品免费| 欧美人动与zoxxxx乱| 国产欧美va欧美不卡在线| 五月天亚洲婷婷| 99久久久久久| 亚洲国产成人私人影院tom| 亚洲图片自拍偷拍| 懂色一区二区三区免费观看| 欧美日韩大陆在线| 亚洲人精品一区| 国产美女精品一区二区三区| 欧美日韩aaa| 亚洲激情图片一区| 成人黄色软件下载| 国产清纯白嫩初高生在线观看91| 亚洲第一电影网| 97久久超碰国产精品| 久久久午夜精品理论片中文字幕| 亚洲成人7777| 色综合久久66| 国产精品久久久99| 懂色av一区二区夜夜嗨| 久久这里只有精品6| 免费三级欧美电影| 欧美日韩国产综合草草| 一区二区在线看| 色国产综合视频| 亚洲三级理论片| 不卡区在线中文字幕| 欧美经典一区二区三区| 国内外成人在线视频| 欧美mv日韩mv亚洲| 久久电影国产免费久久电影| 欧美一级黄色片| 日韩av在线发布| 日韩一区二区在线观看视频| 天天色天天操综合|