expr_types.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:1k
源码类别:

midi

开发平台:

Unix_Linux

  1. #ifndef EXPR_TYPES_H
  2. #define EXPR_TYPES_H
  3. #include "param_types.h"
  4. #define CONST_STACK_ELEMENT 0
  5. #define EXPR_STACK_ELEMENT 1
  6. /* General Expression Type */
  7. typedef struct GEN_EXPR_T {
  8.   int type;
  9.   void * item;
  10. } gen_expr_t;
  11. typedef union TERM_T {
  12.   double constant; /* static variable */
  13.   struct PARAM_T * param; /* pointer to a changing variable */
  14. } term_t;
  15. /* Value expression, contains a term union */
  16. typedef struct VAL_EXPR_T {
  17.   int type;
  18.   term_t term;
  19. } val_expr_t;
  20. /* Infix Operator Function */
  21. typedef struct INFIX_OP_T {
  22.   int type;
  23.   int precedence;  
  24. } infix_op_t;
  25. /* A binary expression tree ordered by operator precedence */
  26. typedef struct TREE_EXPR_T {
  27.   infix_op_t * infix_op; /* null if leaf */
  28.   gen_expr_t * gen_expr;
  29.   struct TREE_EXPR_T * left, * right;
  30. } tree_expr_t;
  31. /* A function expression in prefix form */
  32. typedef struct PREFUN_EXPR_T {
  33.   double (*func_ptr)();
  34.   int num_args;
  35.   gen_expr_t ** expr_list;
  36. } prefun_expr_t;
  37. #endif