BNF расшифровывается как "Форма Бэкуса-Наура" или "Нормальная форма Бэкуса". Это форма записи для контекстно-свободных грамматик, которая часто используется (но не ограничивается) для описания синтаксиса языков программирования. Помимо языков программирования, он также используется для описания протоколов связи и форматов документов.

Спецификация BNF - это набор правил вывода, записанный как

<symbol> ::= __expression__

где <symbol> нетерминал, а __expression__состоит из одной или нескольких последовательностей символов; другие последовательности разделены|обозначающий выбор, целиком являющийся возможной заменой символа слева. Символы, которые никогда не появляются слева, являются терминалами. С другой стороны, символы, которые появляются слева, не являются терминалами и всегда заключены между парой<>. В::= означает, что символ слева необходимо заменить выражением справа.