C语言词法元素是什么,【图片】给词法元素分析提取的程序跪了【c语言吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

部分代码如下:

int CreatList(node *phd[8]){ node *new_node, *p; int line = 0, row = 1, num = 0; char *aline; char token[80]; char filename[30]; char ch; FILE *fin, *fout;

printf("请输入要分析的文件的文件名:\n"); scanf("%s", filename); if(fin = fopen(filename, "r") != NULL) { fout = fopen("lex.txt", "w"); fprintf(fout,"序号 token类型 token 行号 列号 出现次数\n"); fprintf(fout,"-----------------------------------------------------\n"); } else { printf("Fail to open the file for analysis!"); exit(-1); }

while(!feof(fin)) { printf("0"); aline = (char *)malloc(80); fgets(aline, 80, fin); line++; sscanf(aline, "%c", ch); if(ch != '\\') { num++; if((isalpha(ch))||(ch == '_')) { sscanf(aline, "%[a-zA-Z1-9_]", token); if(Keyword(token)) { AddNode(token,num,line,row,phd[1],p); p->ptoken->type = "关键字"; Print(p,fout); } else { AddNode(token,num,line,row,phd[0],p); p->ptoken->type = "标识符"; Print(p,fout); } } else if(isdigit(ch)) { sscanf(aline, "%[1-9.]", token); if(IntConst(token)) { AddNode(token,num,line,row,phd[2],p); p->ptoken->type = "整型常量"; Print(p,fout); } else { AddNode(token,num,line,row,phd[3],p); p->ptoken->type = "浮点常量"; Print(p,fout); } } else switch(ch) { case '"': sscanf(aline, "%[^\"]", token); AddNode(token,num,line,row,phd[5],p); p->ptoken->type = "字符串"; Print(p,fout); break; case '\'': sscanf(aline, "%[^']", token); AddNode(token,num,line,row,phd[4],p); p->ptoken->type = "字符常量"; Print(p,fout); break; default: sscanf(aline, "%[^1-9a-zA-Z_]", token); if(Operator(token)) { AddNode(token,num,line,row,phd[6],p); p->ptoken->type = "运算符"; Print(p,fout); } else { AddNode(token,num,line,row,phd[7],p); p->ptoken->type = "分隔符"; Print(p,fout); } } } } fclose(fin); fclose(fout); return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值