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

📄 cmm.h

📁 参照清华大学《编译原理》写的cmm语言词法分析程序
💻 H
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>typedef enum {      false,      true} bool;#define norw 8			/* 关键字个数 */#define txmax 100               /* 名字表的最大容量 */#define al 10			/* Token的最大长度 *//* Token的类型 */enum symbol {      nul,        ident,          number,		plus,		minus,      real,	times,		slash,		eql,		neq,			      lss,	leq,		gtr,		geq,		lparen,		      assign,	lbracket,	rbracket,	lbrace,		rbrace,		      rparen,	comma,		semicolon,	period,		constsym,		      elsesym,	ifsym,		intsym,		readsym,	realsym,		      whilesym,	writesym};enum object {      constant,      variable,};struct tablestruct {      char name[al];                /* 名字 */      enum object kind;             /* 类型:const,var,array or procedure */      int var;                      /* 数值,仅const使用 */      int level;                    /* 所处层,仅const不使用 */      int adr;                      /* 地址,仅const不使用 */      int size;                     /* 需要分配的数据空间,仅procedure使用 */};struct tablestruct table[txmax];        /* 名字表 */#define symnum 32		/* 有多少种Token */#define iden      3               /* 缩进大小 */char ch;				/* 获取字符的缓冲区,getch使用 */enum symbol sym;		/* 当前的Token的类型 */char id[ al+1 ];			/* 当前的ident,多出的一个字节用于存放0 */char a[al+1];			/* 临时id,多出的一个字节用于存放0 */int num;				/* 当前的number */#define nmax 14		/* number的最大位数 */int cc,ll;				/* ll表示当前行的字符数,cc表示当前字符在当前行的位置 */char line[81];			/* 读取行缓冲区 */char word[norw][al];		/* 保留字 */enum symbol wsym[norw];	/* 保留字对应的Token类型 */enum symbol ssym[256];	/* 单字符的Token类型 */FILE * fin;				/* 输入文件的指针 */FILE * fout;			/* 输出 */char *fname;			/* 输入文件的地址 */char value[al+1];		/* 存储当前Token的值 */float realvalue;			/* 当前小数的值 */float e = 0.1;			/* 处理小数部分的参数 */int linenum;			/* 当前行 */#define getchdo			                if(-1==getch()) return -1#define getsymdo		                if(-1==getsym()) return -1int getch();void init();int getsym();void printsym(int offset);void printline();void printspace(int lev);int error(int eid);

⌨️ 快捷键说明

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