📄 token.h
字号:
/* * token - token defines * * Copyright (C) 1999 David I. Bell * * Calc is open software; you can redistribute it and/or modify it under * the terms of the version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * Calc is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * Public License for more details. * * A copy of version 2.1 of the GNU Lesser General Public License is * distributed with calc under the filename COPYING-LGPL. You should have * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * @(#) $Revision: 29.5 $ * @(#) $Id: token.h,v 29.5 2006/06/20 10:28:06 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/token.h,v $ * * Under source code control: 1990/02/15 01:48:37 * File existed as early as: before 1990 * * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ */#if !defined(__TOKEN_H__)#define __TOKEN_H__#if defined(CALC_SRC) /* if we are building from the calc source tree */# include "zmath.h"#else# include <calc/zmath.h>#endif/* * Token types */#define T_NULL 0 /* null token */#define T_LEFTPAREN 1 /* left parenthesis "(" */#define T_RIGHTPAREN 2 /* right parenthesis ")" */#define T_LEFTBRACE 3 /* left brace "{" */#define T_RIGHTBRACE 4 /* right brace "}" */#define T_SEMICOLON 5 /* end of statement ";" */#define T_EOF 6 /* end of file */#define T_COLON 7 /* label character ":" */#define T_ASSIGN 8 /* assignment "=" */#define T_PLUS 9 /* plus sign "+" */#define T_MINUS 10 /* minus sign "-" */#define T_MULT 11 /* multiply sign "*" */#define T_DIV 12 /* divide sign "/" */#define T_MOD 13 /* modulo sign "%" */#define T_POWER 14 /* power sign "^" or "**" */#define T_EQ 15 /* equality "==" */#define T_NE 16 /* notequal "!=" */#define T_LT 17 /* less than "<" */#define T_GT 18 /* greater than ">" */#define T_LE 19 /* less than or equals "<=" */#define T_GE 20 /* greater than or equals ">=" */#define T_LEFTBRACKET 21 /* left bracket "[" */#define T_RIGHTBRACKET 22 /* right bracket "]" */#define T_SYMBOL 23 /* symbol name */#define T_STRING 24 /* string value (double quotes) */#define T_NUMBER 25 /* numeric real constant */#define T_PLUSEQUALS 26 /* plus equals "+=" */#define T_MINUSEQUALS 27 /* minus equals "-=" */#define T_MULTEQUALS 28 /* multiply equals "*=" */#define T_DIVEQUALS 29 /* divide equals "/=" */#define T_MODEQUALS 30 /* modulo equals "%=" */#define T_PLUSPLUS 31 /* plusplus "++" */#define T_MINUSMINUS 32 /* minusminus "--" */#define T_COMMA 33 /* comma "," */#define T_ANDAND 34 /* logical and "&&" */#define T_OROR 35 /* logical or "||" */#define T_OLDVALUE 36 /* old value from prev calculation */#define T_SLASHSLASH 37 /* integer divide "//" */#define T_NEWLINE 38 /* newline character */#define T_SLASHSLASHEQUALS 39 /* integer divide equals "//=" */#define T_AND 40 /* arithmetic and "&" */#define T_OR 41 /* arithmetic or "|" */#define T_NOT 42 /* logical not "!" */#define T_LEFTSHIFT 43 /* left shift "<<" */#define T_RIGHTSHIFT 44 /* right shift ">>" */#define T_ANDEQUALS 45 /* and equals "&=" */#define T_OREQUALS 46 /* or equals "|= */#define T_LSHIFTEQUALS 47 /* left shift equals "<<=" */#define T_RSHIFTEQUALS 48 /* right shift equals ">>= */#define T_POWEREQUALS 49 /* power equals "^=" or "**=" */#define T_PERIOD 50 /* period "." */#define T_IMAGINARY 51 /* numeric imaginary constant */#define T_AMPERSAND 52 /* ampersand "&" */#define T_QUESTIONMARK 53 /* question mark "?" */#define T_AT 54 /* at sign "@" */#define T_DOLLAR 55 /* dollar sign "$" */#define T_HASH 56 /* hash or pound sign "#" */#define T_HASHEQUALS 57 /* hash equals "#=" */#define T_BACKQUOTE 58 /* backquote sign "`" */#define T_ARROW 59 /* arrow "->" */#define T_TILDE 60 /* tilde "~" */#define T_TILDEEQUALS 61 /* tilde equals "~=" */#define T_BACKSLASH 62 /* backslash or setminus "\" */#define T_BACKSLASHEQUALS 63 /* backslash equals "\=" */#define T_POUNDBANG 64 /* #!/usr/local/bin/calc comment */#define T_POUNDCOMMENT 65 /* #[whitespace] comment *//* * Keyword tokens */#define T_IF 101 /* if keyword */#define T_ELSE 102 /* else keyword */#define T_WHILE 103 /* while keyword */#define T_CONTINUE 104 /* continue keyword */#define T_BREAK 105 /* break keyword */#define T_GOTO 106 /* goto keyword */#define T_RETURN 107 /* return keyword */#define T_LOCAL 108 /* local keyword */#define T_GLOBAL 109 /* global keyword */#define T_STATIC 110 /* static keyword */#define T_DO 111 /* do keyword */#define T_FOR 112 /* for keyword */#define T_SWITCH 113 /* switch keyword */#define T_CASE 114 /* case keyword */#define T_DEFAULT 115 /* default keyword */#define T_QUIT 116 /* quit keyword */#define T_DEFINE 117 /* define keyword */#define T_READ 118 /* read keyword */#define T_SHOW 119 /* show keyword */#define T_HELP 120 /* help keyword */#define T_WRITE 121 /* write keyword */#define T_MAT 122 /* mat keyword */#define T_OBJ 123 /* obj keyword */#define T_PRINT 124 /* print keyword */#define T_CD 125 /* change directory keyword */#define T_UNDEFINE 126 /* undefine keyword */#define T_ABORT 127 /* abort operation */#define iskeyword(n) ((n) > 100) /* TRUE if token is a keyword *//* * Flags returned describing results of expression parsing. */#define EXPR_RVALUE 0x0001 /* result is an rvalue */#define EXPR_CONST 0x0002 /* result is constant */#define EXPR_ASSIGN 0x0004 /* result is an assignment */#define isrvalue(n) ((n) & EXPR_RVALUE) /* TRUE if expression is rvalue */#define islvalue(n) (((n) & EXPR_RVALUE) == 0) /* TRUE if expr is lvalue */#define isconst(n) ((n) & EXPR_CONST) /* TRUE if expr is constant */#define isassign(n) ((n) & EXPR_ASSIGN) /* TRUE if expr is an assignment *//* * Flags for modes for tokenizing. */#define TM_DEFAULT 0x0 /* normal mode */#define TM_NEWLINES 0x1 /* treat any newline as a token */#define TM_ALLSYMS 0x2 /* treat almost everything as a symbol */extern long errorcount; /* number of errors found */extern long tokenstring(void);extern long tokennumber(void);extern char *tokensymbol(void);extern void inittokens(void);extern int tokenmode(int flag);extern int gettoken(void);extern void rescantoken(void);extern void scanerror(int, char *, ...);extern void warning(char *, ...);#endif /* !__TOKEN_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -