Подтвердить что ты не робот

"Javascript," Хорошие детали ": диаграммы железных дорог

Я читаю "Javascript," Хорошие детали "Дугласа Крокфорда и с трудом понимаю использование всех железнодорожных диаграмм. Он также мало разбирается в этом. Он просто говорит следующее (на стр. 21):

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

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

Я знаю, что эта книга считается фундаментальной для всех, кто действительно серьезно относится к Javascript, и я очень хотел бы понять те концепции, которые он адресует. Но что-то просто не щелкает по всей диаграмме железной дороги.

Может ли кто-нибудь объяснить его использование железнодорожных диаграмм? Примеры были бы большими.

4b9b3361

Ответ 1

Диаграммы железных дорог (диаграммы синтаксиса, http://en.wikipedia.org/wiki/Syntax_diagram) - это графический способ объяснить грамматику. Если все, что вы хотите сделать, это понять железнодорожную схему, поймите, что вы начинаете слева, и следуйте по линии (дорожке). И когда вы сталкиваетесь с символом/именем, вы ходите по этой дорожке, пока это не будет сделано, а затем вернитесь туда, где вы остановились.

Кроме того, чтение о BNF и EBNF (Extended? Backus-Naur Formalism, http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form), который является формальным способом описания языка грамматику, используя набор постановок или переписывать правила. BNF/EBNF работают так же, как и железнодорожные диаграммы, но используют символическую нотацию,:: производственный символ и более формальный/математический способ документировать грамматику.

Ответ 2

Эта страница IBM, возможно, имеет самое простое объяснение.

Страница Wikipedia предлагает дополнительную информацию о том, как их построить.

Ответ 3

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

Во-первых, как отметил @ChuckCottrill, вы должны иметь базовое подтверждение о синтаксических диаграммах и BNF/EBNF. Но, прочитав это, это все еще путало меня, пока я не сравню три графика различной ситуации:

ноль или более, ноль или один, один или несколько

Чтобы понять их различия (как показано на следующем рисунке), точка "Вы начинаете с левого края и следуете по дорожкам на правый край". Итак, представьте, что вы поезд, вы просто повернуть направо, не можете повернуть налево.

введите описание изображения здесь

приведенное выше изображение, созданное http://bottlecaps.de/rr/ На вкладке "Редактировать грамматику" введите следующую грамматику:

zeroormore ::= element*
zeroorone ::= element?
oneormore ::= element+