好文档 - 专业文书写作范文服务资料分享网站

c语言编写的词法分析程序教学教材

天下 分享 时间: 加入收藏 我要投稿 点赞

c语言编写的词法分

析程序

精品文档

#include #include #include #include

#define SPACE 0x20 //空格键 #define CHANGE 'c' //转义字符 #define STRING 'S' //引号里的字符串 #define BOUNDARY 'B' //界符 #define OPERATION 'O' //运算符 #define WORD 'I' //标识符 #define KEY_WORD 'K' //关键字 #define DIGIT 'n' //数字,包括小数

#define DOTH 'd' //头文件,“.h”文件

#define INT 't' #define VOID 'v' #define IF 'f' #define ELSE 'e' #define WHILE 'w' #define FOR 'r' #define MAIN 'm' #define PRINTF 'p' #define INCLUDE 'u' #define FLOAT 'l'

#define KEYNUM 10 #define BOUNDNUM 8 #define OPERNUM 7 #define VALUENUM 100

/************************************************************************/

/* data type */

收集于网络,如有侵权请联系管理员删除

精品文档

/************************************************************************/

struct bianliang {

int id;

char name[20]; int value; };

struct changliang {

int data; }; char

KeyWord[KEYNUM][8]={%ude\

char Boundary[BOUNDNUM]={'\char Operation[OPERNUM]={'+','-','*','/','=','<','>'}; char

Logogram[KEYNUM]={INT,VOID,IF,ELSE,WHILE,FOR,MAIN,PRINTF,INCLUDE,FLOAT};

char Value[VALUENUM][8]; int Value_n=0; int ErrorLine=0;

int QuotationCount=0; //计算引号的数量

int QuotationFlag=0; //引号数量为奇数时为1,偶数时为0 char LastOpera=0; //用于判断\号存前一个\号

/************************************************************************/

/* function describe */

/************************************************************************/

int isKeyWord(char* s) //是关键字返回1,否则返回0 { int i;

for (i=0;i

if (strcmp(KeyWord[i],s)==0) {

收集于网络,如有侵权请联系管理员删除

精品文档

return i+1; } }

return 0; }

int isBoundary(char ch) //是界符 {

int i;

for (i=0;i

if (Boundary[i]==ch) {

return i+1; } }

return 0; }

int isOperation(char ch) //是运算符 { int i;

for (i=0;i

if (Operation[i]==ch) {

return i+1; } }

return 0; }

int isDigit(char *s) //是数字 {

int i,l=strlen(s); for (i=0;i

if (!isdigit(s[i])) {

break; } }

if (i>=l)

收集于网络,如有侵权请联系管理员删除

精品文档

{

return 1; } else {

if ('.'==s[i]) { i++;

for (;i

if (!isdigit(s[i])) {

break; } } } else {

return 0; }

if (i>=l) return 1; else return 0; } }

int isDotH(char *s) //是头文件 {

int i,l=strlen(s); for (i=0;i

if (!isalpha(s[i])) {

break; } }

if (i>=l) {

return 0; } else

收集于网络,如有侵权请联系管理员删除

c语言编写的词法分析程序教学教材

c语言编写的词法分析程序精品文档#include#include#include#include#defineSPACE0x20//空格键#defineCHANGE'c'//转义字符#define
推荐度:
点击下载文档文档为doc格式
260bw4foed6zh7s4eqk6667gj1yjjc01cgw
领取福利

微信扫码领取福利

微信扫码分享