给定表1所示的一个简单语言的词法规则描述,其中,标识符是以字母开头、以字母和数字组成的任意符号串,常数为整数,即以数字组成的符号串。请完成以下任务: (1)设计并编制词法分析程序(永C语言),实现从输入源程序中,识别出各类单词,即关键字、标

动态 未结 0 137
小小草
小小草 LV1 2023年9月23日 23:20 发表
以下是一个简单的词法分析程序,可以实现从输入源程序中识别出各类单词,并输出各个单词的种别码和单词符号自身的值。请注意,这只是一个示例程序,可能还需要根据具体情况进行修改和完善。 ```c #include #include #include #define MAX_LEN 100 // 最大单词长度 // 定义各种单词的种别码 #define KEYWORD_BEGIN 101 #define KEYWORD_END 108 #define OPERATOR_BEGIN 201 #define OPERATOR_END 206 #define DELIMITER_BEGIN 301 #define DELIMITER_END 305 #define IDENTIFIER 400 #define NUMBER 500 // 定义关键字表 char *keywords[] = {"void", "main", "int", "char", "if", "else", "for", "while"}; // 定义运算符表 char *operators[] = {">=", "<", "<=", "==", "<>", "++", "--"}; // 定义界符表 char *delimiters[] = {"(", ")", "{", "}", ";", ","}; // 判断一个字符串是否为关键字 int is_keyword(char *str) { int i; for (i = 0; i < KEYWORD_END - KEYWORD_BEGIN + 1; i++) { if (strcmp(str, keywords[i]) == 0) { return KEYWORD_BEGIN + i; } } return 0; } // 判断一个字符是否为运算符 int is_operator(char c) { int i; for (i = 0; i < OPERATOR_END - OPERATOR_BEGIN + 1; i++) { if (c == operators[i][0]) { return OPERATOR_BEGIN + i; } } return 0; } // 判断一个字符是否为界符 int is_delimiter(char c) { int i; for (i = 0; i < DELIMITER_END - DELIMITER_BEGIN + 1; i++) { if (c == delimiters[i][0]) { return DELIMITER_BEGIN + i; } }
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复