?? cmm.h
字號:
#include <stdio.h>#include <string.h>#include <stdlib.h>typedef enum { false, true} bool;#define norw 8 /* 關(guān)鍵字個(gè)數(shù) */#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; /* 數(shù)值,僅const使用 */ int level; /* 所處層,僅const不使用 */ int adr; /* 地址,僅const不使用 */ int size; /* 需要分配的數(shù)據(jù)空間,僅procedure使用 */};struct tablestruct table[txmax]; /* 名字表 */#define symnum 32 /* 有多少種Token */#define iden 3 /* 縮進(jìn)大小 */char ch; /* 獲取字符的緩沖區(qū),getch使用 */enum symbol sym; /* 當(dāng)前的Token的類型 */char id[ al+1 ]; /* 當(dāng)前的ident,多出的一個(gè)字節(jié)用于存放0 */char a[al+1]; /* 臨時(shí)id,多出的一個(gè)字節(jié)用于存放0 */int num; /* 當(dāng)前的number */#define nmax 14 /* number的最大位數(shù) */int cc,ll; /* ll表示當(dāng)前行的字符數(shù),cc表示當(dāng)前字符在當(dāng)前行的位置 */char line[81]; /* 讀取行緩沖區(qū) */char word[norw][al]; /* 保留字 */enum symbol wsym[norw]; /* 保留字對應(yīng)的Token類型 */enum symbol ssym[256]; /* 單字符的Token類型 */FILE * fin; /* 輸入文件的指針 */FILE * fout; /* 輸出 */char *fname; /* 輸入文件的地址 */char value[al+1]; /* 存儲當(dāng)前Token的值 */float realvalue; /* 當(dāng)前小數(shù)的值 */float e = 0.1; /* 處理小數(shù)部分的參數(shù) */int linenum; /* 當(dāng)前行 */#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);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -