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

📄 calc.h

📁 功能强大的文本编辑器
💻 H
字号:
/*  calc.h                                            31.01.93
**  
**  usage header to integer calculator
**
*/
#define DEBUG 1               /* compile w/ debug messages */

#undef PUBEXT
#ifdef __CALC__
#define PUBEXT
#else
#define PUBEXT extern
#endif

PUBEXT int trace;             /* flag for evaluation trace */

enum CALC_ERRORS              /* error codes */
{
  INVAL_SYMBOL, INVAL_EXPR, UNBAL_PAREN, NOT_CONST, NOT_NUMBER, NUM_OVERFL,
  ID_LENGTH, VAR_OVERFL, NOT_LVALUE, DIV_BY_ZERO, NUM_ERR
};

/*
**  defining NUM_VARS global variables
**
**    name of VARNAME_LEN defined dynamically
**
*/
#define VAR_T     long
#define MAX_VAL   MAX_LONG

#define STR_T     char *

#define NUM_VARS      10
#define NUM_STRS      10
#define VARNAME_LEN   6         /* AEDIT default */

PUBEXT char _var_name [NUM_VARS][VARNAME_LEN+1];
PUBEXT VAR_T _var [NUM_VARS];

PUBEXT char _str_var_name [NUM_STRS][VARNAME_LEN+1];
PUBEXT STR_T _str_var [NUM_STRS];

enum RESULT_TYPE { ERROR = -1, VALUE, STRING };

typedef struct 
{
  enum RESULT_TYPE type; 
  union RESULT
  {
    VAR_T val;
    STR_T str;
  } 
  item;
}
 CALC_RESULT;

/*
**  error messages
*/
PUBEXT char *calc_errors[NUM_ERR]
#ifdef __CALC__
  = {
      "Invalid symbol in expression",
      "Invalid expression",
      "Unbalanced parentheses",
      "Not a constant",
      "Not a number",
      "Numeric constant too large",
      "Identifier too long",
      "Too many variables",
      "Assignment to constant",
      "Divide by zero"
    }
#endif
  ;

extern CALC_RESULT * evaluate (char * expr, CALC_RESULT * result,
                               void (*error)(char * str, int err));
  /*  evaluate expression                                                 */
  /*  on entry: pointer to expression string, pointer to result struct    */
  /*            pointer to error handler                                  */
  /*  on exit:  if error occured calls error handler                      */
  /*  returns:  pointer to result of expression                           */

⌨️ 快捷键说明

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