Я не знаю, совпадение ли это, но! это самый ранний несистемный и непробельный символ в таблице ASCII (в # 32). С точки зрения синтаксического анализа, это сделает это быстрее?
Нет. И большинство комитетов по проектированию языков предпочли бы выбирать легкий для изучения, легкий для запоминания и простой для ввода синтаксис из любых незначительных преимуществ от меньших значений байтов.
Свернутые вручную парсеры иногда используют таблицы поиска для классификации токенов на основе первого символа. Например, в движке JS Mozilla в jsscan.cpp
есть следующее, определяющее лексер:
static const uint8 firstCharKinds[] = {
/* 0 1 2 3 4 5 6 7 8 9 */
/* 0+ */ _______, _______, _______, _______, _______, _______, _______, _______, _______, Space,
/* 10+ */ EOL, Space, Space, EOL, _______, _______, _______, _______, _______, _______,
/* 20+ */ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
/* 30+ */ _______, _______, Space, _______, String, _______, Ident, _______, _______, String,
/* 40+ */ OneChar, OneChar, _______, Plus, OneChar, _______, Dot, _______, HexOct, Dec,
/* 50+ */ Dec, Dec, Dec, Dec, Dec, Dec, Dec, Dec, Colon, OneChar,
...
, но использование |
сверх !
не позволит вам сделать такую таблицу намного меньше. CSS и HTML имеют большой вес, поэтому устройства с ограниченным объемом памяти не анализируют CSS, и сохранение нескольких байтов ('|' - 'z' == 2
) в лексере не окажет существенного влияния на производительность браузера.