以下是为您编写的递归下降语法分析程序的 Python 代码示例: ```python # 定义终结符和非终结符 terminals = ['i', '+', '*', '(', ')'] non_terminals = ['E', 'T', 'F', 'G', 'S'] # 定义产生式规则 productions = { 'E': ['T G'], 'G': ['+ T G', 'ε'], 'T': ['F S'], 'S': ['* F S', 'ε'], 'F': ['i', '( E )'] } # 语法分析函数 def parse(input_string): # 初始化索引和符号栈 index = 0 stack = ['$', 'E'] # 循环直到栈为空或分析完成 while stack: top = stack.pop() if top in terminals: if top == input_string[index]: index += 1 else: return "输入字符串不合法" elif top in non_terminals: rule = productions[top] for r in rule: stack.extend(list(reversed(r.split()))) if index == len(input_string): return "输入字符串合法" else: return "输入字符串不合法" # 测试输入字符串 input_string = "i+i*i" print(parse(input_string)) ``` 注意点: 1. 处理好终结符和非终结符的匹配逻辑,确保准确判断输入字符串的合法性。 2. 对于空产生式(如 `G` 的 `ε`)的处理要恰当,避免出现错误。 3. 注意代码的可读性和可维护性,以便后续对程序进行修改和扩展。 [2024-12-12 22:33:53 | AI写代码神器 | 397点数解答]