Top Down –自顶向下的文法分析
读入:读取下一个待匹配字符进去stack,如果为#且栈顶也为#,成功;如果此时栈顶不为#,失败
检查:如果栈顶为终结符,回到读入;
否则,随机选择一个规则(假如存在多个规则可以满足的话),使栈顶字符与左部(非终结符)匹配,匹配,用规则的右部(即终结符)替换,整个过程叫做规约(Derivation)
如果找到匹配的规则,回到读入;
否则,BackTracking,回溯到上一次的检查,换另一个规则
1 | if Stack == None Terminal { |
example:
- $ S \to a \ S \to Sa $, 给定 “aa”
1 | @1 |