нет
NO
См. Изменить ниже
Зависит.
Если вы говорите о подмножестве, состоящем только из теоретического HTML, то да .
Если вы также включаете реальный, работающий HTML, который ежедневно используется и успешно используется миллионами людей на многих популярных сайтах в Интернете, тогда NO .
Это то, что дает HTML гибкость. Механизм синтаксического анализа добавляет теги, закрывает теги и заботится о том, чего не может сделать теоретический CFG. Если вы взяли автоматы, вы могли бы помнить, что производственное правило в формальной грамматике не может быть пустым (aka epsilon / lambda) в левой части (lhs). Поскольку механизм синтаксического анализа в основном использует знания, которые формальная грамматика и автоматы не могут иметь, он не ограничен этим, и у «грамматики» будет epsilon/lambda -> result
, где определенное правило epsilon / lambda выбирается на основе недоступной информации в грамматике.
Поскольку я не думаю, что в любых формальных грамматиках допустимы пустые lhs, HTML не может быть определен формальной грамматикой и вообще не является формальным языком.
Конечно, HTML5 может попытаться переместить к «более формальному» описанию языка, но вероятность того, что он станет в действительности контекстно-свободным языком (т.е. строки, не соответствующие грамматике, отклоняются), связана с Вероятность XHTML 2.0 захватывает мир штурмом и полностью заменяет HTML (XHTML - это попытка сделать HTML формальным языком ... он был массово отвергнут из-за его хрупкости).
Примечателен тот факт, что HTML 5 - это ПЕРВЫЙ стандарт HTML, который должен быть определен до его внедрения! Правильно, HTML 1-4 состоят из случайных идей, которые кто-то только что реализовал в браузере, и были собраны в стандарты после факта, основанного на том, какие функции широко использовались и широко применялись. Затем они попробовали XHTML, который полностью не был принят. Даже «xhtml» в Интернете автоматически анализируется как HTML практически при любых обстоятельствах, чтобы предотвратить просто нарушение работы с загадочной синтаксической ошибкой. Теперь вы можете видеть, как мы попали сюда и почему это вряд ли будет оформлено в ближайшее время.
Урок: «В теории нет разницы между теорией и практикой. На практике есть». - Йоги Берра
EDIT:
На самом деле, после прочтения документов выясняется, что HTML, даже в соответствии со спецификацией HTML 4.01, на самом деле не соответствует SGML. Чтобы убедиться в этом, просмотрите определение типа документа HTML 4.01 Strict (doctype) в http://www.w3.org/TR/html4/strict.dtd и обратите внимание на следующие строки:
Спецификация HTML 4.01 включает в себя дополнительные
синтаксические ограничения, которые не могут быть выражены в
DTD.
Так что я бы сказал, что , вероятно, не является КЛЛ из-за этих функций (хотя технически это не опровергает гипотезу о том, что существует какой-то возможный КПК, который принимает HTML 4.01, он предотвращает аргумент, что SGML является CFL, поэтому HTML является CFL).
HTML5-триггеры, отказ от любого подразумеваемого соответствия SGML , но предположительно описывается CFG. Однако он по-прежнему будет обеспечивать синтаксический анализ с максимальным усилием, не основанный на cfg, поэтому IMO текущая ситуация (т. Е. Спецификация языка определена формально, при этом недопустимые строки по-прежнему принимаются, анализируются и отображаются наилучшим образом) в этом отношении вряд ли радикально измениться на долгое время.