Как анализатор LL оценивает это выражение? - PullRequest
2 голосов
/ 26 сентября 2010

Учитывая это выражение:

3 + 2 + 2 * 2 =?

Было бы 14?

1 Ответ

2 голосов
/ 26 сентября 2010

Нет. Это то, что вы получите при оценке слева направо. Парсер LL будет строить то же дерево синтаксического анализа, что и парсер LR,

  +
 / \
3   +
   / \
  2   *
     / \
    2   2

и оцените его как

(+ 3 (+ 2 (* 2 2))

это 9, как и следовало ожидать.

Что особенного в синтаксических анализаторах LL, так это то, что для ограниченной грамматики они всегда могут двигаться слева направо с ограниченным прогнозом. Это позволяет легко их описывать и анализировать; немного Паскаль является одним из наиболее распространенных языков, который является LL.

Вы можете взглянуть на статью в вики на крайний левый вывод .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...