2013-07-22 6 views
0

Из Douglas Crockford's JavaScript: The Good Parts, Глава 2 ГрамматикаЧто подразумевается под маркером в контексте железнодорожных диаграмм?

В этой главе рассматривается грамматика хороших частей JavaScript, представляя краткий обзор того, как структурирован язык. Мы будем представлять грамматику с железнодорожными диаграммами.

Правила для интерпретации этих диаграмм просты:

  1. Вы начинаете на левом краю и по следам к правому краю.
  2. Как вы идете, вы встретите литералы в овалах, правила и описания в прямоугольниках.
  3. Любая последовательность, которая может быть выполнена по следам, является законной.
  4. Любая последовательность, которая не может быть выполнена путем следования, не является законной.
  5. Железнодорожные диаграммы с одним баром на каждом конце позволяют вставлять пробелы между любыми парами токенов. Железнодорожные схемы с двумя барами на каждом конце нет.

Грамматика хороших частей, представленных в этой главе, является значительно проще, чем грамматика всего языка.

Я видел this answer on SO, который в основном повторяет то, что представлено в книге. Итак, что означает токен здесь?

ответ

1

Токены - это основные атомные единицы грамматики. В типичном языке программирования маркеры будут включать в себя такие вещи, как алгебраические операторы (+, *), разделители операторов ((, {, ;), идентификаторы, числовые и строковые значения и зарезервированные слова.

Концепция «токена» несколько связана с тем, как грамматика написана и анализируется. Некоторые схемы разбора не включают концепцию токенизации (парраторы пакетов для PEG). Однако в этом случае использование диаграммы железной дороги подразумевает традиционную грамматику BNF (или BNF-like), в комплекте с набором токенов.

редактировать — на самом деле, глядя на этот другой вопрос, обсуждение есть на самом деле о самой символической грамматики — лексем грамматики для JSON. Я полагаю, вы могли бы считать элементы набора символов «токенами» для этой цели. В любом случае должно быть ясно, что в тех случаях — правила для чисел и строк выглядят как — пробелы не могут появляться в середине этих конструкций. То есть 23 и 2 3 не совпадают.

Вне странных ситуаций вокруг автоматической вставки точки с запятой я не могу думать о местах в грамматике JavaScript, которая запрещает пробелы между токенами.

+0

Что такое * BNF * грамматика? – Geek

+0

@ Geek О, это означает «форма Бэкуса-Наура». Это обозначение для написания грамматик. – Pointy

+0

Downvotes? Объяснение? – Pointy