qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

设计、编制、调试一个具体的词法分析程序,代码

时间2023-04-07 09:49:14 提问来自 河北省石家庄市 的网友 分类创作 浏览366
如下#include <stdio.h> #include <string.h> //定义单词类型常量 #define IDENTIFIER 0 //标识符 #define NUMBER 1 //数字 #define OPERATOR 2 //操作符 //定义操作符常量,以及其对应的字符串值 (可自行扩充) #define PLUS "+" //加法运算 "+" "-" "*" "/" "%" "=" "<>" "<=" "<" ">=" ">" "( )"; char token[50];//保存当前分析出来的单词 int isDigit(char c){//判断是否是数字 if (c >= '0' && c <= '9'){ return 1; }else{ return 0; } } int isLetter(char c){//判断是否是英文字母或者下划线_开头的标识符中的一部分。 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c == '_')){ return 1; } else { return 0; } } void getToken(){//从输入流中得到一个token,并将token保存在token[]中。 char ch = getchar(); int i = 0; while ((ch == '\n') || (ch == '\t') || (ch == 32)) { ch = getchar(); } if (isDigit(ch)) { while ((isDigit(ch) || isLetter(ch))) { token[i++] = ch; ch = getchar(); } token[i] = 0; ungetc(ch, stdin); printf("%s\t\t number\n", token); } else if (isLetter(ch)) { while ((isDigit(ch) || isLetter(ch))) { token[i++] = ch; ch = getchar(); } token[i] = 0; ungetc(ch, stdin); printf("%s \t\t identifier \n", token); } else if (strcmp(&PLUS, &token)==0) { printf("+ \t\t operator \n"); }} void main() { while (!feof()) { getToken(); }}

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 设计、编制、调试一个具体的词法分析程序 下一篇 介绍设定职业目标的过程;实现职业 目标的具体行动和成效;职业目标及行动的动态调整等(PDF 格 式,文字不超过 2000 字,图表不超过 5 张)