C 语言实现递归下降语法分析:从消除左递归到判定句子合法性
以下是用 C 语言实现递归下降分析语法分析程序的实验报告代码: ```c #include <stdio.h> #include <stdbool.h> // 分析数字 bool analyzeF(char* str, int* index) { if (str[*index] == '(') { (*index)++; if (analyzeE(str, index)) { if (str[*index] == ')') { (*index)++; return true; } } return false; } else if (str[*index] >= '0' && str[*index] <= '9') { (*index)++; return true; } return false; } // 分析 t 部分 bool analyzeT(char* str, int* index) { bool result = analyzeF(str, index); while (str[*index] == '*') { (*index)++; if (!analyzeF(str, index)) { return false; } result = result && true; } return result; } // 分析 e 部分 bool analyzeE(char* str, int* index) { bool result = analyzeT(str, index); while (str[*index] == '+') { (*index)++; if (!analyzeT(str, index)) { return false; } result = result && true; } return result; } // 主函数,进行整体分析 bool analyze(char* str) { int index = 0; return analyzeE(str, &index) && str[index] == '\0'; } int main() { char input[] = "(i*i)+i"; if (analyze(input)) { printf("该符号串是文法的句子\n"); } else { printf("该符号串不是文法的句子\n"); } return 0; } ``` 额外需要注意的逻辑点: 1. 对于输入字符串的索引处理要准确,避免越界访问。 2. 每个分析函数的返回值要能准确反映当前的分析状态。 3. 处理各种边界情况,如空字符串、非法字符等。 ######[AI写代码神器 | 520点数解答 | 2024-12-16 14:43:38]
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(字节豆包 | 554点数解答 | 2024-11-11 23:20:31)211
- Python 借助 WordNet 计算“开心”与“悲伤”句子语义相似度全解析 (讯飞星火 | 999点数解答 | 2024-11-11 23:23:14)248
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(GPT | 1241点数解答 | 2024-11-11 23:24:01)210
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- 游戏技能代码深度剖析:潜在问题、改进方案与处理要点(字节豆包 | 1426点数解答 | 2025-10-16 15:31:36)130
- Python 实现:带边界处理与验证的任意基数数字转换递归程序(字节豆包 | 198点数解答 | 2024-11-21 14:20:25)457
- Python 递归函数实现:将数字转换为指定基数的输出(百度文心 | 499点数解答 | 2024-11-22 09:58:55)354
- 编程模拟:偶数张牌经 k 次洗牌后第 p 张牌编号求解(DeepSeek | 126点数解答 | 2026-01-05 12:15:30)44
- 螺旋矩阵:根据输入行列号精准求出对应位置数字的算法揭秘(DeepSeek | 740点数解答 | 2026-01-05 12:16:41)66
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350
- iOS开发:手把手教你完整实现代理模式,含声明与实现步骤!(阿里通义 | 268点数解答 | 2023-11-08 00:39:55)276
- JavaScript 开发:用 Animation 实现自定义动画的简易教程 (阿里通义 | 333点数解答 | 2023-11-09 01:50:07)266