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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? common.w

?? 著名算法大師高爺爺設計的語言。此語言結合了Tex和C
?? W
?? 第 1 頁 / 共 4 頁
字號:
% This file is part of CWEB.% This program by Silvio Levy and Donald E. Knuth% is based on a program by Knuth.% It is distributed WITHOUT ANY WARRANTY, express or implied.% Version 3.64 --- January 2002% Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth% Permission is granted to make and distribute verbatim copies of this% document provided that the copyright notice and this permission notice% are preserved on all copies.% Permission is granted to copy and distribute modified versions of this% document under the conditions for verbatim copying, provided that the% entire resulting derived work is given a different name and distributed% under the terms of a permission notice identical to this one.\def\v{\char'174} % vertical (|) in typewriter font\def\title{Common code for CTANGLE and CWEAVE (Version 3.64)}\def\topofcontents{\null\vfill  \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and    {\ttitlefont CWEAVE}}  \vskip 15pt  \centerline{(Version 3.64)}  \vfill}\def\botofcontents{\vfill\noindentCopyright \copyright\ 1987, 1990, 1993, 2000 Silvio Levy and Donald E. Knuth\bigskip\noindentPermission is granted to make and distribute verbatim copies of thisdocument provided that the copyright notice and this permission noticeare preserved on all copies.\smallskip\noindentPermission is granted to copy and distribute modified versions of thisdocument under the conditions for verbatim copying, provided that theentire resulting derived work is given a different name and distributedunder the terms of a permission notice identical to this one.}\pageno=\contentspagenumber \advance\pageno by 1\let\maybe=\iftrue@s not_eq normal @q unreserve a C++ keyword @>@** Introduction.  This file contains code commonto both \.{CTANGLE} and \.{CWEAVE}, which roughly concerns the followingproblems: character uniformity, input routines, error handling andparsing of command line.  We have tried to concentrate in this fileall the system dependencies, so as to maximize portability.In the texts below we willsometimes use \.{CWEB} to refer to either of the two componentprograms, if no confusion can arise.The file begins with a few basic definitions.@c@<Include files@>@/@h@<Definitions that should agree with \.{CTANGLE} and \.{CWEAVE}@>@/@<Other definitions@>@/@<Predeclaration of procedures@>@/@ In certain cases \.{CTANGLE} and \.{CWEAVE} should do almost, but notquite, the same thing.  In these cases we've written common code forboth, differentiating between the two by means of the global variable|program|.@d ctangle 0@d cweave 1@<Definitions...@>=typedef short boolean;boolean program; /* \.{CWEAVE} or \.{CTANGLE}? */@ \.{CWEAVE} operates in three phases: First it inputs the sourcefile and stores cross-reference data, then it inputs the source once again andproduces the \TEX/ output file, and finally it sorts and outputs the index.Similarly, \.{CTANGLE} operates in two phases.The global variable |phase| tells which phase we are in.@<Other...@>= int phase; /* which phase are we in? */@ There's an initialization procedure that gets both \.{CTANGLE} and\.{CWEAVE} off to a good start. We will fill in the details of thisprocedure later.@cvoidcommon_init(){  @<Initialize pointers@>;  @<Set the default options common to \.{CTANGLE} and \.{CWEAVE}@>;  @<Scan arguments and open output files@>;}@* The character set.\.{CWEB} uses the conventions of \CEE/ programs found in the standard\.{ctype.h} header file.@<Include files@>=#include <ctype.h>@ A few character pairs are encoded internally as single characters,using the definitions below. These definitions are consistent withan extension of ASCII code originally developed at MIT and explained inAppendix~C of {\sl The \TEX/book\/}; thus, users who have such acharacter set can type things like \.{\char'32} and \.{\char'4} insteadof \.{!=} and \.{\&\&}. (However, their files will not be too portableuntil more people adopt the extended code.)If the character set is not ASCII, the definitions given here may conflictwith existing characters; in such cases, other arbitrary codes should besubstituted. The indexes to \.{CTANGLE} and \.{CWEAVE} mention everycase where similar codes may have to be changed in order toavoid character conflicts. Look for the entry ``ASCII code dependencies''in those indexes.@^ASCII code dependencies@>@^system dependencies@>@d and_and 04 /* `\.{\&\&}'\,; corresponds to MIT's {\tentex\char'4} */@d lt_lt 020 /* `\.{<<}'\,;  corresponds to MIT's {\tentex\char'20} */@d gt_gt 021 /* `\.{>>}'\,;  corresponds to MIT's {\tentex\char'21} */@d plus_plus 013 /* `\.{++}'\,;  corresponds to MIT's {\tentex\char'13} */@d minus_minus 01 /* `\.{--}'\,;  corresponds to MIT's {\tentex\char'1} */@d minus_gt 031 /* `\.{->}'\,;  corresponds to MIT's {\tentex\char'31} */@d not_eq 032 /* `\.{!=}'\,;  corresponds to MIT's {\tentex\char'32} */@d lt_eq 034 /* `\.{<=}'\,;  corresponds to MIT's {\tentex\char'34} */@d gt_eq 035 /* `\.{>=}'\,;  corresponds to MIT's {\tentex\char'35} */@d eq_eq 036 /* `\.{==}'\,;  corresponds to MIT's {\tentex\char'36} */@d or_or 037 /* `\.{\v\v}'\,;  corresponds to MIT's {\tentex\char'37} */@d dot_dot_dot 016 /* `\.{...}'\,;  corresponds to MIT's {\tentex\char'16} */@d colon_colon 06 /* `\.{::}'\,;  corresponds to MIT's {\tentex\char'6} */@d period_ast 026 /* `\.{.*}'\,;  corresponds to MIT's {\tentex\char'26} */@d minus_gt_ast 027 /* `\.{->*}'\,;  corresponds to MIT's {\tentex\char'27} */@** Input routines.  The lowest level of input to the \.{CWEB} programsis performed by |input_ln|, which must be told which file to read from.The return value of |input_ln| is 1 if the read is successful and 0 ifnot (generally this means the file has ended). The conventionsof \TEX/ are followed; i.e., the characters of the next line of the fileare copied into the |buffer| array,and the global variable |limit| is set to the first unoccupied position.Trailing blanks are ignored. The value of |limit| must be strictly lessthan |buf_size|, so that |buffer[buf_size-1]| is never filled.Since |buf_size| is strictly less than |long_buf_size|,some of \.{CWEB}'s routines use the fact that it is safe to refer to|*(limit+2)| without overstepping the bounds of the array.@d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */@d longest_name 1000@d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */@d xisspace(c) (isspace(c)&&((unsigned char)c<0200))@d xisupper(c) (isupper(c)&&((unsigned char)c<0200))@<Definitions...@>=char buffer[long_buf_size]; /* where each line of input goes */char *buffer_end=buffer+buf_size-2; /* end of |buffer| */char *limit=buffer; /* points to the last character in the buffer */char *loc=buffer; /* points to the next character to be read from the buffer */@ @<Include files@>=#include <stdio.h>@ In the unlikely event that your standard I/O library does notsupport |feof|, |getc|, and |ungetc| you may have to change things here.@^system dependencies@>@cint input_ln(fp) /* copies a line into |buffer| or returns 0 */FILE *fp; /* what file to read from */{  register int  c=EOF; /* character read; initialized so some compilers won't complain */  register char *k;  /* where next character goes */  if (feof(fp)) return(0);  /* we have hit end-of-file */  limit = k = buffer;  /* beginning of buffer */  while (k<=buffer_end && (c=getc(fp)) != EOF && c!='\n')    if ((*(k++) = c) != ' ') limit = k;  if (k>buffer_end)    if ((c=getc(fp))!=EOF && c!='\n') {      ungetc(c,fp); loc=buffer; err_print("! Input line too long");@.Input line too long@>  }  if (c==EOF && limit==buffer) return(0);  /* there was nothing after    the last newline */  return(1);}@ Now comes the problem of deciding which file to read from next.Recall that the actual text that \.{CWEB} should process comes from twostreams: a |web_file|, which can contain possibly nested includecommands \.{@@i}, and a |change_file|, which might also containincludes.  The |web_file| together with the currently open includefiles form a stack |file|, whose names are stored in a parallel stack|file_name|.  The boolean |changing| tells whether or not we're readingfrom the |change_file|.The line number of each open file is also kept for error reporting andfor the benefit of \.{CTANGLE}.@f line x /* make |line| an unreserved word */@d max_include_depth 10 /* maximum number of source files open  simultaneously, not counting the change file */@d max_file_name_length 60@d cur_file file[include_depth] /* current file */@d cur_file_name file_name[include_depth] /* current file name */@d cur_line line[include_depth] /* number of current line in current file */@d web_file file[0] /* main source file */@d web_file_name file_name[0] /* main source file name */@<Definitions...@>=int include_depth; /* current level of nesting */FILE *file[max_include_depth]; /* stack of non-change files */FILE *change_file; /* change file */char file_name[max_include_depth][max_file_name_length];  /* stack of non-change file names */char change_file_name[max_file_name_length]; /* name of change file */char alt_web_file_name[max_file_name_length]; /* alternate name to try */int line[max_include_depth]; /* number of current line in the stacked files */int change_line; /* number of current line in change file */int change_depth; /* where \.{@@y} originated during a change */boolean input_has_ended; /* if there is no more input */boolean changing; /* if the current line is from |change_file| */boolean web_file_open=0; /* if the web file is being read */@ When |changing==0|, the next line of |change_file| is kept in|change_buffer|, for purposes of comparison with the nextline of |cur_file|. After the change file has been completely input, weset |change_limit=change_buffer|,so that no further matches will be made.Here's a shorthand expression for inequality between the two lines:@d lines_dont_match (change_limit-change_buffer != limit-buffer ||  strncmp(buffer, change_buffer, limit-buffer))@<Other...@>=char change_buffer[buf_size]; /* next line of |change_file| */char *change_limit; /* points to the last character in |change_buffer| */@ Procedure |prime_the_change_buffer|sets |change_buffer| in preparation for the next matching operation.Since blank lines in the change file are not used for matching, we have|(change_limit==change_buffer && !changing)| if and only ifthe change file is exhausted. This procedure is called only when|changing| is 1; hence error messages will be reported correctly.@cvoidprime_the_change_buffer(){  change_limit=change_buffer; /* this value is used if the change file ends */  @<Skip over comment lines in the change file; |return| if end of file@>;  @<Skip to the next nonblank line; |return| if end of file@>;  @<Move |buffer| and |limit| to |change_buffer| and |change_limit|@>;}@ While looking for a line that begins with \.{@@x} in the change file, weallow lines that begin with \.{@@}, as long as they don't begin with \.{@@y},\.{@@z}, or \.{@@i} (which would probably mean that the change file is fouled up).@<Skip over comment lines in the change file...@>=while(1) {  change_line++;  if (!input_ln(change_file)) return;  if (limit<buffer+2) continue;  if (buffer[0]!='@@') continue;  if (xisupper(buffer[1])) buffer[1]=tolower(buffer[1]);  if (buffer[1]=='x') break;  if (buffer[1]=='y' || buffer[1]=='z' || buffer[1]=='i') {    loc=buffer+2;    err_print("! Missing @@x in change file");@.Missing @@x...@>  }}@ Here we are looking at lines following the \.{@@x}.@<Skip to the next nonblank line...@>=do {  change_line++;  if (!input_ln(change_file)) {    err_print("! Change file ended after @@x");@.Change file ended...@>    return;  }} while (limit==buffer);@ @<Move |buffer| and |limit| to |change_buffer| and |change_limit|@>={  change_limit=change_buffer+(limit-buffer);  strncpy(change_buffer,buffer,limit-buffer+1);}@ The following procedure is used to see if the next change entry shouldgo into effect; it is called only when |changing| is 0.The idea is to test whether or not the currentcontents of |buffer| matches the current contents of |change_buffer|.If not, there's nothing more to do; but if so, a change is called for:All of the text down to the \.{@@y} is supposed to match. An errormessage is issued if any discrepancy is found. Then the procedureprepares to read the next line from |change_file|.When a match is found, the current section is marked as changed unlessthe first line after the \.{@@x} and after the \.{@@y} both start witheither |'@@*'| or |'@@ '| (possibly preceded by whitespace).This procedure is called only when |buffer<limit|, i.e., when thecurrent line is nonempty.@d if_section_start_make_pending(b) {@+*limit='!';  for (loc=buffer;xisspace(*loc);loc++) ;  *limit=' ';  if (*loc=='@@' && (xisspace(*(loc+1)) || *(loc+1)=='*')) change_pending=b;}@cvoidcheck_change() /* switches to |change_file| if the buffers match */{  int n=0; /* the number of discrepancies found */  if (lines_dont_match) return;  change_pending=0;  if (!changed_section[section_count]) {    if_section_start_make_pending(1);    if (!change_pending) changed_section[section_count]=1;  }  while (1) {    changing=1; print_where=1; change_line++;    if (!input_ln(change_file)) {      err_print("! Change file ended before @@y");@.Change file ended...@>      change_limit=change_buffer; changing=0;      return;    }    if (limit>buffer+1 && buffer[0]=='@@') {      char xyz_code=xisupper(buffer[1])? tolower(buffer[1]): buffer[1];      @<If the current line starts with \.{@@y},        report any discrepancies and |return|@>;    }    @<Move |buffer| and |limit|...@>;    changing=0; cur_line++;    while (!input_ln(cur_file)) { /* pop the stack or quit */      if (include_depth==0) {        err_print("! CWEB file ended during a change");@.CWEB file ended...@>        input_has_ended=1; return;      }      include_depth--; cur_line++;    }    if (lines_dont_match) n++;  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一卡二卡三卡国产欧美| 亚洲视频免费在线| 亚洲3atv精品一区二区三区| www.日韩在线| 中文字幕色av一区二区三区| 91在线视频在线| 美女精品自拍一二三四| 国产精品美女久久福利网站| 欧美性生活一区| 国产一区二区三区视频在线播放| 自拍视频在线观看一区二区| 91精品国产91久久综合桃花| 成人激情动漫在线观看| 日韩精品一卡二卡三卡四卡无卡| 久久久精品蜜桃| 欧美一级日韩免费不卡| 日本韩国欧美一区| 国产福利一区在线| 激情综合色综合久久| 亚洲无人区一区| 亚洲精品美国一| 亚洲欧美日韩在线播放| 9191国产精品| 成人精品国产免费网站| 亚洲男人的天堂一区二区| 在线欧美日韩国产| 麻豆专区一区二区三区四区五区| 欧美日韩一级二级三级| 精品无码三级在线观看视频 | 国产成a人亚洲精品| 日韩av中文字幕一区二区| 夜夜亚洲天天久久| 亚洲激情一二三区| 亚洲激情自拍偷拍| 自拍偷自拍亚洲精品播放| 国产精品久久久久一区二区三区| 久久综合丝袜日本网| 日韩欧美一区二区不卡| 欧美一级欧美三级| 日韩一二在线观看| 日韩欧美你懂的| 欧美大片一区二区| 欧美变态tickle挠乳网站| 日韩三级视频中文字幕| 欧美一级一区二区| 久久嫩草精品久久久精品| 国产亚洲欧美日韩俺去了| 26uuu久久天堂性欧美| 久久欧美中文字幕| 久久精品亚洲国产奇米99| 国产欧美日韩在线视频| 中文久久乱码一区二区| 中文字幕亚洲一区二区va在线| 国产精品热久久久久夜色精品三区 | 免费久久99精品国产| 日韩—二三区免费观看av| 免费观看久久久4p| 老司机午夜精品99久久| 国产高清不卡二三区| 成人a区在线观看| 91网站黄www| 在线观看免费成人| 欧美一区二区三区在线观看| 欧美变态凌虐bdsm| 国产精品久久久久久久久动漫| 亚洲欧美欧美一区二区三区| 午夜精品福利在线| 久久国产婷婷国产香蕉| 成人性色生活片| 在线看一区二区| 欧美一级免费大片| 中文字幕乱码亚洲精品一区| 亚洲激情六月丁香| 美脚の诱脚舐め脚责91 | 久久精品国产成人一区二区三区| 狠狠色狠狠色综合| 99久久99久久精品国产片果冻| 欧美色图天堂网| 久久品道一品道久久精品| 亚洲精品一二三| 麻豆精品新av中文字幕| 福利一区二区在线| 欧美日韩一区不卡| 国产欧美日韩在线| 偷拍与自拍一区| 国产v综合v亚洲欧| 欧美精品日韩一本| 亚洲欧洲在线观看av| 天天av天天翘天天综合网色鬼国产| 精品一二线国产| 在线亚洲一区二区| 久久综合资源网| 亚洲福中文字幕伊人影院| 国产成人一区二区精品非洲| 欧美精三区欧美精三区| 国产精品国模大尺度视频| 日韩成人av影视| 99re热这里只有精品免费视频| 日韩一区二区精品| 一区二区三区四区不卡视频| 国产麻豆精品95视频| 欧美视频日韩视频| 日韩一区在线免费观看| 国产乱色国产精品免费视频| 欧美日韩国产中文| 中文字幕在线观看不卡视频| 美女网站色91| 欧美精品久久99| 一区二区三区在线视频观看| 国产91丝袜在线播放九色| 日韩欧美国产一区二区在线播放| 亚洲综合色网站| 成人av在线播放网站| 26uuuu精品一区二区| 琪琪久久久久日韩精品| 欧美午夜一区二区| 亚洲另类中文字| 白白色 亚洲乱淫| 国产精品日产欧美久久久久| 精品亚洲国内自在自线福利| 3atv在线一区二区三区| 五月婷婷激情综合| 欧美亚洲综合在线| 一区av在线播放| 色香色香欲天天天影视综合网| 国产精品水嫩水嫩| 国产凹凸在线观看一区二区| 国产亚洲自拍一区| 狠狠色综合播放一区二区| 精品免费国产二区三区| 麻豆91精品视频| 欧美一区二区三区性视频| 日韩成人一级片| 日韩欧美在线网站| 久久国产乱子精品免费女| 日韩丝袜美女视频| 久久97超碰色| 精品久久国产字幕高潮| 蜜桃久久久久久久| 欧美成人在线直播| 国产一区 二区| 国产日韩av一区| 成人国产免费视频| 亚洲欧美视频一区| 精品视频资源站| 欧美a级理论片| 精品国产91久久久久久久妲己| 久久精品免费观看| 国产性色一区二区| jiyouzz国产精品久久| 亚洲欧美偷拍另类a∨色屁股| 一本大道久久a久久精品综合| 亚洲在线免费播放| 69堂精品视频| 国内精品写真在线观看| 中文字幕电影一区| 欧美中文字幕一区二区三区| 日韩不卡一区二区| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲高清在线精品| 欧美成人精精品一区二区频| 国产精品1区2区3区在线观看| 中文字幕av不卡| 欧美视频精品在线| 国产一区中文字幕| 亚洲欧美欧美一区二区三区| 欧美伦理影视网| 国产精品亚洲专一区二区三区 | 亚洲免费大片在线观看| 欧美日韩久久不卡| 国产精品一区专区| 亚洲精品国产高清久久伦理二区| 欧美一级片在线| 成人理论电影网| 午夜精品成人在线| 中文欧美字幕免费| 欧美精品乱人伦久久久久久| 国产91色综合久久免费分享| 亚洲午夜精品久久久久久久久| 欧美大片免费久久精品三p | 亚洲欧美日韩综合aⅴ视频| 51精品视频一区二区三区| 国产精品911| 香蕉成人伊视频在线观看| 久久九九久精品国产免费直播| 一本色道久久综合亚洲91 | 91在线精品秘密一区二区| 婷婷丁香激情综合| 国产精品理论片在线观看| 欧美精品欧美精品系列| 99久久国产综合精品女不卡| 免费看欧美美女黄的网站| 亚洲精品国产精品乱码不99| 久久在线观看免费| 欧美日韩国产三级| 99久久精品国产导航| 韩国视频一区二区| 视频一区免费在线观看| 最新国产精品久久精品| 精品国产乱码久久久久久夜甘婷婷 |