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

📄 nepc.h

📁 使用yacc和lex编写的cmm语言的词法分析和语法分析程序.
💻 H
字号:
#ifndef _NEPC_H_#define _NEPC_H_#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <math.h>#define MAX_STRLEN 5120#define MAX_SYMLEN 512#define MAX_SYMNUM 1024#define SYM_NOTFOUND -1#define SYMTAB_OVFLW -3#define MEM_MALLOCERR -10#define WAITINPUT printf("\n--> ")#define SIZEOF_NODETYPE(p) ((char *)&p->intCon - (char *)p)#define SIZEOF_SYMTYPE(p) ((char *)&p->ival - (char *)p)#define PRINTINT(p) if(dflag==DEC_ON)printf( "%lld" , (INT)p->ival );\                    else if(dflag==HEX_ON)printf( "0x%08X", (INT)p->ival );\                    else printf( "0%o" ,(INT)p->ival )#define PRINTFLT(p) if(dflag==DEC_ON)printf( "%lf" , p->fval );\                    else if(dflag==HEX_ON)printf( "0x%08X", (INT)p->fval );\                    else printf( "0%o" ,(INT)p->fval )#define PRINTSTR(p) printf("%s",p->pstr)#define STR_TO_INT(str)  atoll(str)#define STR_TO_FLT(str)  atof(str)typedef long long int INT;typedef double FLT;typedef enum { typeIntCon,typeFltCon,typeStrCon,typeVar, typeOpr } nodeEnum;typedef enum { typeInt, typeFlt, typeStr } symTypeEnum;enum Display{DEC_ON, HEX_ON, OCT_ON};enum Display dflag=DEC_ON;typedef struct {    INT val;}intNodeType;typedef struct{     FLT val;}fltNodeType;typedef struct{    char * ptr;}strNodeType;typedef struct {    int index;} varNodeType;typedef struct {    int name;    int number;    struct nodeTypeTag *op[1];} oprNodeType;typedef struct nodeTypeTag {    nodeEnum type;    union     {        intNodeType intCon;        fltNodeType fltCon;        strNodeType strCon;        varNodeType var;        oprNodeType opr;    };} nodeType;typedef struct symTypeTag {    symTypeEnum type;    char * name;    union    {        INT ival;        FLT fval;        char * pstr;    };}symType,itpType;extern void yyerror(char *);extern int yyparse();static symType symtab[MAX_SYMNUM];static int symtop=0;/* math functions pointer */FLT (*p_acos)(FLT)=acos;FLT (*p_asin)(FLT)=asin;FLT (*p_atan)(FLT)=atan;FLT (*p_ceil)(FLT)=ceil;FLT (*p_cos)(FLT)=cos;FLT (*p_cosh)(FLT)=cosh;FLT (*p_exp)(FLT)=exp;FLT (*p_fabs)(FLT)=fabs;FLT (*p_floor)(FLT)=floor;FLT (*p_log)(FLT)=log;FLT (*p_log10)(FLT)=log10;FLT (*p_sin)(FLT)=sin;FLT (*p_sinh)(FLT)=sinh;FLT (*p_sqrt)(FLT)=sqrt;FLT (*p_tan)(FLT)=tan;FLT (*p_tanh)(FLT)=tanh;#endif

⌨️ 快捷键说明

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