"Javascript," Хорошие детали ": диаграммы железных дорог
Я читаю "Javascript," Хорошие детали "Дугласа Крокфорда и с трудом понимаю использование всех железнодорожных диаграмм. Он также мало разбирается в этом. Он просто говорит следующее (на стр. 21):
Правила для интерпретации этих диаграмм просты:
- Вы начинаете с левого края и следуете по дорожкам на правый край.
- По мере того как вы идете, вы столкнетесь с литералами в овалах, а также правилами или описаниями в прямоугольниках.
- Любая последовательность, которая может быть выполнена путем отслеживания, является законной.
- Любая последовательность, которая не может быть выполнена путем следования, не является законной.
- Железнодорожные диаграммы с одним баром на каждом конце позволяют вводить пробелы между любыми парами токенов. Железнодорожные схемы с двумя полосками на каждом конце не имеют.
Я знаю, что эта книга считается фундаментальной для всех, кто действительно серьезно относится к Javascript, и я очень хотел бы понять те концепции, которые он адресует. Но что-то просто не щелкает по всей диаграмме железной дороги.
Может ли кто-нибудь объяснить его использование железнодорожных диаграмм? Примеры были бы большими.
Ответы
Ответ 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+