在各种上下文无关的句法分析器中,最普通的是采用自顶向下回溯算法的分分析器。它逐个枚举推导直至找到一个能生成输入句子的推导。下面详细介绍自顶向下回溯的分析算法。
  这里,我们并不需要准确的构造句法树,只要判断某一语句是否符合给定的语法。我们建立词典,指明每一个词的类别。下面这个简单的词典包含了我们例子中出现的词。
    cried:V
    dogs:N,V
    the:ART
  这样,分析器的状态由两个变量决定:一个符号串和一个整数(指明该符号串在句子中的位置)。下面这个例句是含有词语所处位置的句子。
    1 The 2 dogs 3 cried. 4
  定义语法为:
    S→NP VP
    NP→ART N
    NP→ART ADJ N
    VP→V
    VP→V NP
  下面的分析状态是我们在分析上句中的过程中所处的某一个状态。
    ((N VP) 2)
  句法分析器处于该状态时,表明分析器当前需要在位置(2)上找到一个符号串(N VP)。我们根据符号串中的第一个符号是否是词典中的某一个类别来产生新的状态:如果是,上例中的符号N就属于这种情况,判断句子中当前分析的词是否属于该类(如果属于,则更新状态,去掉符号串中的第一个符号,整数加1;如果不属于,则当前状态非法,分析候补状态列表中的下一个状态)。这里,dogs属于N类,则更新状态为
    ((VP) 3)
  如果符号串中的第一个符号不是词典中的类别,则使用某一条产生式规则重写该符号,位置不变。这里VP不是词典中的类别,我们可以采用语法中的某一条规则重写该符号。如果有几条规则适合的话,我们可以生成几个新的状态,其中某一个状态为当前分析的状态,其余的状态加入候补状态列表中。这里,我们可以生成两个新的状态:
    ((V) 3)
    ((V NP) 3)