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 + -
显示快捷键?