input

来自「antlr最新版本V3源代码」· 代码 · 共 3,480 行 · 第 1/5 页

TXT
3,480
字号
extern int nodelay (WINDOW *,_Bool);extern int noecho (void);extern int nonl (void);extern void noqiflush (void);extern int noraw (void);extern int notimeout (WINDOW *,_Bool);extern int overlay (const WINDOW*,WINDOW *);extern int overwrite (const WINDOW*,WINDOW *);extern int pair_content (short,short*,short*);extern int PAIR_NUMBER (int);extern int pechochar (WINDOW *, const chtype);extern int pnoutrefresh (WINDOW*,int,int,int,int,int,int);extern int prefresh (WINDOW *,int,int,int,int,int,int);extern int printw (const char *,...)  ;extern int putp (const char *);extern int putwin (WINDOW *, FILE *);extern void qiflush (void);extern int raw (void);extern int redrawwin (WINDOW *);extern int refresh (void);extern int resetty (void);extern int reset_prog_mode (void);extern int reset_shell_mode (void);extern int ripoffline (int, int (*)(WINDOW *, int));extern int savetty (void);extern int scanw ( char *,...)  ;extern int scr_dump (const char *);extern int scr_init (const char *);extern int scrl (int);extern int scroll (WINDOW *);extern int scrollok (WINDOW *,_Bool);extern int scr_restore (const char *);extern int scr_set (const char *);extern int setscrreg (int,int);extern SCREEN * set_term (SCREEN *);extern int slk_attroff (const chtype);extern int slk_attr_off (const attr_t, void *);extern int slk_attron (const chtype);extern int slk_attr_on (attr_t,void*);extern int slk_attrset (const chtype);extern attr_t slk_attr (void);extern int slk_attr_set (const attr_t,short,void*);extern int slk_clear (void);extern int slk_color (short);extern int slk_init (int);extern char * slk_label (int);extern int slk_noutrefresh (void);extern int slk_refresh (void);extern int slk_restore (void);extern int slk_set (int,const char *,int);extern int slk_touch (void);extern int standout (void);extern int standend (void);extern int start_color (void);extern WINDOW * subpad (WINDOW *, int, int, int, int);extern WINDOW * subwin (WINDOW *,int,int,int,int);extern int syncok (WINDOW *, _Bool);extern chtype termattrs (void);extern char * termname (void);extern int tigetflag ( char *);extern int tigetnum ( char *);extern char * tigetstr ( char *);extern void timeout (int);extern int touchline (WINDOW *, int, int);extern int touchwin (WINDOW *);extern char * tparm ( char *, ...);extern int typeahead (int);extern int ungetch (int);extern int untouchwin (WINDOW *);extern void use_env (_Bool);extern int vidattr (chtype);extern int vidputs (chtype, int (*)(int));extern int vline (chtype, int);extern int vwprintw (WINDOW *, const char *,va_list);extern int vw_printw (WINDOW *, const char *,va_list);extern int vwscanw (WINDOW *, char *,va_list);extern int vw_scanw (WINDOW *, char *,va_list);extern int waddch (WINDOW *, const chtype);extern int waddchnstr (WINDOW *,const chtype *,int);extern int waddchstr (WINDOW *,const chtype *);extern int waddnstr (WINDOW *,const char *,int);extern int waddstr (WINDOW *,const char *);extern int wattron (WINDOW *, int);extern int wattroff (WINDOW *, int);extern int wattrset (WINDOW *, int);extern int wattr_get (WINDOW *, attr_t *, short *, void *);extern int wattr_on (WINDOW *, attr_t, void *);extern int wattr_off (WINDOW *, attr_t, void *);extern int wattr_set (WINDOW *, attr_t, short, void *);extern int wbkgd (WINDOW *, chtype);extern void wbkgdset (WINDOW *,chtype);extern int wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);extern int wchgat (WINDOW *, int, attr_t, short, const void *);extern int wclear (WINDOW *);extern int wclrtobot (WINDOW *);extern int wclrtoeol (WINDOW *);extern int wcolor_set (WINDOW*,short,void*);extern void wcursyncup (WINDOW *);extern int wdelch (WINDOW *);extern int wdeleteln (WINDOW *);extern int wechochar (WINDOW *, const chtype);extern int werase (WINDOW *);extern int wgetch (WINDOW *);extern int wgetnstr (WINDOW *,char *,int);extern int wgetstr (WINDOW *, char *);extern int whline (WINDOW *, chtype, int);extern chtype winch (WINDOW *);extern int winchnstr (WINDOW *, chtype *, int);extern int winchstr (WINDOW *, chtype *);extern int winnstr (WINDOW *, char *, int);extern int winsch (WINDOW *, chtype);extern int winsdelln (WINDOW *,int);extern int winsertln (WINDOW *);extern int winsnstr (WINDOW *, const char *,int);extern int winsstr (WINDOW *, const char *);extern int winstr (WINDOW *, char *);extern int wmove (WINDOW *,int,int);extern int wnoutrefresh (WINDOW *);extern int wprintw (WINDOW *, const char *,...)  ;extern int wredrawln (WINDOW *,int,int);extern int wrefresh (WINDOW *);extern int wscanw (WINDOW *, char *,...)  ;extern int wscrl (WINDOW *,int);extern int wsetscrreg (WINDOW *,int,int);extern int wstandout (WINDOW *);extern int wstandend (WINDOW *);extern void wsyncdown (WINDOW *);extern void wsyncup (WINDOW *);extern void wtimeout (WINDOW *,int);extern int wtouchln (WINDOW *,int,int,int);extern int wvline (WINDOW *,chtype,int);# 1166 "/usr/include/curses.h" 3 4typedef unsigned long mmask_t;typedef struct{    short id;    int x, y, z;    mmask_t bstate;}MEVENT;extern int getmouse (MEVENT *);extern int ungetmouse (MEVENT *);extern mmask_t mousemask (mmask_t, mmask_t *);extern _Bool wenclose (const WINDOW *, int, int);extern int mouseinterval (int);extern _Bool wmouse_trafo (const WINDOW* win,int* y, int* x, _Bool to_screen);extern _Bool mouse_trafo (int*, int*, _Bool);extern int mcprint (char *, int);extern int has_key (int);extern void _tracef (const char *, ...) ;extern void _tracedump (const char *, WINDOW *);extern char * _traceattr (attr_t);extern char * _traceattr2 (int, chtype);extern char * _nc_tracebits (void);extern char * _tracechar (int);extern char * _tracechtype (chtype);extern char * _tracechtype2 (int, chtype);# 1210 "/usr/include/curses.h" 3 4extern char * _tracemouse (const MEVENT *);extern void trace (const unsigned int);# 136 "./test.priv.h" 2# 1 "/usr/include/term.h" 1 3 4# 82 "/usr/include/term.h" 3 4# 1 "/usr/include/termios.h" 1 3 4# 36 "/usr/include/termios.h" 3 4# 1 "/usr/include/bits/termios.h" 1 3 4# 25 "/usr/include/bits/termios.h" 3 4typedef unsigned char cc_t;typedef unsigned int speed_t;typedef unsigned int tcflag_t;struct termios  {    tcflag_t c_iflag;    tcflag_t c_oflag;    tcflag_t c_cflag;    tcflag_t c_lflag;    cc_t c_line;    cc_t c_cc[32];    speed_t c_ispeed;    speed_t c_ospeed;  };# 41 "/usr/include/termios.h" 2 3 4# 49 "/usr/include/termios.h" 3 4extern speed_t cfgetospeed ( struct termios *__termios_p);extern speed_t cfgetispeed ( struct termios *__termios_p);extern int cfsetospeed (struct termios *__termios_p, speed_t __speed);extern int cfsetispeed (struct termios *__termios_p, speed_t __speed);extern int cfsetspeed (struct termios *__termios_p, speed_t __speed);extern int tcgetattr (int __fd, struct termios *__termios_p);extern int tcsetattr (int __fd, int __optional_actions,         struct termios *__termios_p);extern void cfmakeraw (struct termios *__termios_p);extern int tcsendbreak (int __fd, int __duration);extern int tcdrain (int __fd);extern int tcflush (int __fd, int __queue_selector);extern int tcflow (int __fd, int __action);# 105 "/usr/include/termios.h" 3 4# 1 "/usr/include/sys/ttydefaults.h" 1 3 4# 106 "/usr/include/termios.h" 2 3 4# 83 "/usr/include/term.h" 2 3 4# 674 "/usr/include/term.h" 3 4typedef struct termtype {    char *term_names;    char *str_table;    char *Booleans;    short *Numbers;    char **Strings;    char *ext_str_table;    char **ext_Names;    unsigned short num_Booleans;    unsigned short num_Numbers;    unsigned short num_Strings;    unsigned short ext_Booleans;    unsigned short ext_Numbers;    unsigned short ext_Strings;} TERMTYPE;typedef struct term {    TERMTYPE type;    short Filedes;    struct termios Ottyb,  Nttyb;    int _baudrate;    char * _termname;} TERMINAL;extern TERMINAL * cur_term;# 730 "/usr/include/term.h" 3 4extern char * const boolnames[];extern char * const boolcodes[];extern char * const boolfnames[];extern char * const numnames[];extern char * const numcodes[];extern char * const numfnames[];extern char * const strnames[];extern char * const strcodes[];extern char * const strfnames[];extern int _nc_set_tty_mode (struct termios *buf);extern int _nc_get_tty_mode (struct termios *buf);extern int _nc_read_entry (const char * const, char * const, TERMTYPE *const);extern int _nc_read_file_entry (const char *const, TERMTYPE *);extern char * _nc_first_name (const char *const);extern int _nc_name_match (const char *const, const char *const, const char *const);extern int _nc_read_termcap_entry (const char *const, TERMTYPE *const);extern const TERMTYPE * _nc_fallback (const char *);extern TERMINAL * set_curterm (TERMINAL *);extern int del_curterm (TERMINAL *);extern int restartterm ( char *, int, int *);extern int setupterm ( char *,int,int *);# 772 "/usr/include/term.h" 3 4extern char * tgetstr ( char *, char **);extern char * tgoto (const char *, int, int);extern int tgetent (char *, const char *);extern int tgetflag ( char *);extern int tgetnum ( char *);extern int tputs (const char *, int, int (*)(int));# 137 "./test.priv.h" 2# 153 "./test.priv.h"extern char *optarg;extern int optind;# 163 "./test.priv.h"# 1 "/usr/include/assert.h" 1 3 4# 65 "/usr/include/assert.h" 3 4extern void __assert_fail ( char *__assertion,  char *__file,      unsigned int __line,  char *__function)     ;extern void __assert_perror_fail (int __errnum,  char *__file,      unsigned int __line,       char *__function)     ;extern void __assert (const char *__assertion, const char *__file, int __line)     ;# 164 "./test.priv.h" 2# 1 "/usr/include/ctype.h" 1 3 4# 30 "/usr/include/ctype.h" 3 4# 48 "/usr/include/ctype.h" 3 4enum{  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))};# 81 "/usr/include/ctype.h" 3 4extern  unsigned short int **__ctype_b_loc (void)     ;extern  __int32_t **__ctype_tolower_loc (void)     ;extern  __int32_t **__ctype_toupper_loc (void)     ;# 96 "/usr/include/ctype.h" 3 4extern int isalnum (int);extern int isalpha (int);extern int iscntrl (int);extern int isdigit (int);extern int islower (int);extern int isgraph (int);extern int isprint (int);extern int ispunct (int);extern int isspace (int);extern int isupper (int);extern int isxdigit (int);extern int tolower (int __c);extern int toupper (int __c);# 142 "/usr/include/ctype.h" 3 4extern int isascii (int __c);extern int toascii (int __c);extern int _toupper (int);extern int _tolower (int);# 323 "/usr/include/ctype.h" 3 4# 165 "./test.priv.h" 2# 21 "hanoi.c" 2# 36 "hanoi.c"struct Peg {    size_t Length[9];    int Count;};static struct Peg Pegs[3];static int PegPos[] ={19, 39, 59};static int TileColour[] ={    2,    5,    1,    4,    6,    3,    2,    5,    1,};static int NMoves = 0;static void InitTiles(int NTiles);static void DisplayTiles(void);static void MakeMove(int From, int To);static void AutoMove(int From, int To, int Num);static void Usage(void);static int Solved(int NumTiles);static int GetMove(int *From, int *To);static int InvalidMove(int From, int To);intmain(int argc, char **argv){    int NTiles, FromCol, ToCol;    _Bool AutoFlag = 0;    ;    switch (argc) {    case 1: NTiles = 7; break;    case 2: NTiles = atoi(argv[1]); if (NTiles > 9 || NTiles < 3) {     fprintf(stderr, "Range %d to %d\n", 3, 9);     exit(1); } break;    case 3: if (strcmp(argv[2], "a")) {     Usage();     exit(1); } NTiles = atoi(argv[1]); if (NTiles > 9 || NTiles < 3) {     fprintf(stderr, "Range %d to %d\n", 3, 9);     exit(1); } AutoFlag = 1; break;    default: Usage(); exit(1);    }    initscr();    if (has_colors()) { int i; int bg = 0; start_color(); for (i = 0; i < 9; i++)     init_pair(i + 1, bg, TileColour[i]);    }    cbreak();    if (LINES < 24) { endwin(); fprintf(stderr, "Min screen length 24 lines\n"); exit(1);    }    if (AutoFlag) { curs_set(0); leaveok(stdscr, 1);    }    InitTiles(NTiles);    DisplayTiles();    if (AutoFlag) { do {     noecho();     AutoMove(0, 2, NTiles); } while (!Solved(NTiles)); sleep(2);    } else { echo(); for (;;) {     if (GetMove(&FromCol, &ToCol))  break;     if (InvalidMove(FromCol, ToCol)) {  (wmove(stdscr,(LINES-3),0) == (-1) ? (-1) : waddnstr(stdscr,"Invalid Move !!",-1));  wrefresh(stdscr);  beep();  continue;     }     MakeMove(FromCol, ToCol);     if (Solved(NTiles)) {  mvprintw((LINES-3), 0,    "Well Done !! You did it in %d moves", NMoves);  wrefresh(stdscr);  sleep(5);  break;     } }    }    endwin();    exit(0);}static intInvalidMove(int From, int To){    if (From >= 3) return 1;    if (From < 0) return 1;    if (To >= 3) return 1;    if (To < 0) return 1;    if (From == To) return 1;    if (!Pegs[From].Count) return 1;    if (Pegs[To].Count && Pegs[From].Length[Pegs[From].Count - 1] > Pegs[To].Length[Pegs[To].Count - 1]) return 1;    return 0;}static voidInitTiles(int NTiles){    int Size, SlotNo;    for (Size = NTiles * 2 + 1, SlotNo = 0; Size >= 3; Size -= 2) Pegs[0].Length[SlotNo++] = Size;    Pegs[0].Count = NTiles;    Pegs[1].Count = 0;    Pegs[2].Count = 0;}static voidDisplayTiles(void){    int Line, peg, SlotNo;    char TileBuf[8192];    werase(stdscr);    (wmove(stdscr,1,24) == (-1) ? (-1) : waddnstr(stdscr,"T O W E R S   O F   H A N O I",-1));    (wmove(stdscr,3,34) == (-1) ? (-1) : waddnstr(stdscr,"SJR 1990",-1));    mvprintw(19, 5, "Moves : %d", NMoves);    ((stdscr)->_attrs = (((1UL) << ((10) + 8))));    (wmove(stdscr,16,8) == (-1) ? (-1) : waddnstr(stdscr,"                                                               ",-1));    for (Line = 6; Line < 16; Line++) { (wmove(stdscr,Line,19) == (-1) ? (-1) : waddch(stdscr,' ')); (wmove(stdscr,Line,39) == (-1) ? (-1) : waddch(stdscr,' ')); (wmove(stdscr,Line,59) == (-1) ? (-1) : waddch(stdscr,' '));    }    (wmove(stdscr,16,19) == (-1) ? (-1) : waddch(stdscr,'1'));    (wmove(stdscr,16,39) == (-1) ? (-1) : waddch(stdscr,'2'));    (wmove(stdscr,16,59) == (-1) ? (-1) : waddch(stdscr,'3'));    ((stdscr)->_attrs = (0L));    for (peg = 0; peg < 3; peg++) { for (SlotNo = 0; SlotNo < Pegs[peg].Count; SlotNo++) {     memset(TileBuf, ' ', Pegs[peg].Length[SlotNo]);     TileBuf[Pegs[peg].Length[SlotNo]] = '\0';     if (has_colors())  ((stdscr)->_attrs = ((((((Pegs[peg].Length[SlotNo])-1)/2)) << ((0) + 8))));     else  ((stdscr)->_attrs = (((1UL) << ((10) + 8))));     (wmove(stdscr,16 - (SlotNo + 1),(int) (PegPos[peg] - Pegs[peg].Length[SlotNo] / 2)) == (-1) ? (-1) : waddnstr(stdscr,TileBuf,-1)); }    }    ((stdscr)->_attrs = (0L));    wrefresh(stdscr);}static intGetMove(int *From, int *To){    (wmove(stdscr,(LINES-3),0) == (-1) ? (-1) : waddnstr(stdscr,"Next move ('q' to quit) from ",-1));    wclrtoeol(stdscr);    wrefresh(stdscr);    if ((*From = wgetch(stdscr)) == 'q') return 1;    *From -= ('0' + 1);    waddnstr(stdscr," to ",-1);    wclrtoeol(stdscr);    wrefresh(stdscr);    if ((*To = wgetch(stdscr)) == 'q') return 1;    *To -= ('0' + 1);    wrefresh(stdscr);    napms(500);    wmove(stdscr,(LINES-3),0);    wclrtoeol(stdscr);    wrefresh(stdscr);    return 0;}static voidMakeMove(int From, int To){    Pegs[From].Count--;    Pegs[To].Length[Pegs[To].Count] = Pegs[From].Length[Pegs[From].Count];    Pegs[To].Count++;    NMoves++;    DisplayTiles();}static voidAutoMove(int From, int To, int Num){    if (Num == 1) { MakeMove(From, To); napms(500); return;    }    AutoMove(From, (3-((From)+(To))), Num - 1);    MakeMove(From, To);    napms(500);    AutoMove((3-((From)+(To))), To, Num - 1);}static intSolved(int NumTiles){    int i;    for (i = 1; i < 3; i++) if (Pegs[i].Count == NumTiles)     return 1;    return 0;}static voidUsage(void){    fprintf(stderr, "Usage: hanoi [<No Of Tiles>] [a]\n");    fprintf(stderr,     "The 'a' option causes the tower to be solved automatically\n");}

⌨️ 快捷键说明

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