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

📄 token.h

📁 早期freebsd实现
💻 H
字号:
// -*- C++ -*-/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.     Written by James Clark (jjc@jclark.com)This file is part of groff.groff is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 2, or (at your option) any laterversion.groff is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public License alongwith groff; see the file COPYING.  If not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA. */struct charinfo;struct node;struct vunits;// See ARM p251.static void process_input_stack();class token {  symbol nm;  node *nd;  unsigned char c;  int val;  units dim;  enum token_type {    TOKEN_BACKSPACE,    TOKEN_BEGIN_TRAP,    TOKEN_CHAR,			// a normal printing character    TOKEN_DUMMY,    TOKEN_EMPTY,		// this is the initial value    TOKEN_END_TRAP,    TOKEN_ESCAPE,		// \e    TOKEN_HYPHEN_INDICATOR,    TOKEN_INTERRUPT,		// \c    TOKEN_ITALIC_CORRECTION,	// \/    TOKEN_LEADER,		// ^A    TOKEN_LEFT_BRACE,    TOKEN_MARK_INPUT,		// \k -- `nm' is the name of the register    TOKEN_NEWLINE,		// newline    TOKEN_NODE,    TOKEN_NUMBERED_CHAR,    TOKEN_PAGE_EJECTOR,    TOKEN_REQUEST,    TOKEN_RIGHT_BRACE,    TOKEN_SPACE,		// ` ' -- ordinary space    TOKEN_SPECIAL,		// a special character -- \' \` \- \(xx    TOKEN_SPREAD,		// \p -- break and spread output line     TOKEN_TAB,			// tab    TOKEN_TRANSPARENT,		// \!    TOKEN_EOF			// end of file    } type;public:  token();  ~token();  token(const token &);  void operator=(const token &);  void next();  void process();  void skip();  int eof();  int nspaces();		// 1 if space, 2 if double space, 0 otherwise  int space();			// is it a space or double space?  int white_space();		// is the current token space or tab?  int newline();		// is the current token a newline?  int tab();			// is the current token a tab?  int leader();  int backspace();  int delimiter(int warn = 0);	// is it suitable for use as a delimiter?  int dummy();  int transparent();  int left_brace();  int right_brace();  int page_ejector();  int hyphen_indicator();  int operator==(const token &); // need this for delimiters, and for conditions  int operator!=(const token &); // ditto  unsigned char ch();  charinfo *get_char(int required = 0);  int add_to_node_list(node **);  int title();  void make_space();  void make_newline();  const char *description();  friend void process_input_stack();};extern token tok;		// the current tokenextern symbol get_name(int required = 0);extern symbol get_long_name(int required = 0);extern charinfo *get_optional_char();extern void skip_line();extern void handle_initial_title();struct hunits;extern void read_title_parts(node **part, hunits *part_width);extern int get_number(units *result, unsigned char si);extern int get_integer(int *result);extern int get_number(units *result, unsigned char si, units prev_value);extern int get_integer(int *result, int prev_value);void interpolate_number_reg(symbol, int);const char *asciify(int c);inline int token::newline(){   return type == TOKEN_NEWLINE; }inline int token::space(){   return type == TOKEN_SPACE;}inline int token::nspaces(){  if (type == TOKEN_SPACE)    return 1;  else    return 0;}inline int token::white_space(){  return type == TOKEN_SPACE || type == TOKEN_TAB;}inline int token::transparent(){  return type == TOKEN_TRANSPARENT;}inline int token::page_ejector(){  return type == TOKEN_PAGE_EJECTOR;}inline unsigned char token::ch(){  return type == TOKEN_CHAR ? c : 0;} inline int token::eof(){  return type == TOKEN_EOF;}inline int token::dummy(){  return type == TOKEN_DUMMY;}inline int token::left_brace(){  return type == TOKEN_LEFT_BRACE;}inline int token::right_brace(){  return type == TOKEN_RIGHT_BRACE;}inline int token::tab(){  return type == TOKEN_TAB;}inline int token::leader(){  return type == TOKEN_LEADER;}inline int token::backspace(){  return type == TOKEN_BACKSPACE;}inline int token::hyphen_indicator(){  return type == TOKEN_HYPHEN_INDICATOR;}int has_arg();

⌨️ 快捷键说明

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