Я выяснил, как использовать дух - т.е. я записал умеренно сложную грамматику. Я всегда проявляю подход роста программы - одна подсистема за один раз. Я записал структуры данных для сложной модели, которая имеет 4 типа на высшем уровне.
Я хотел бы использовать грамматику, составленную из подхода правил для парсинга высокоуровневых типов один тип за один раз - т.е. я хочу записать 4 грамматики с одной высокоуровневой грамматикой. Если это возможно (относительно которого я начинаю сомневаться), мог кто-то отправлять отрывок или ссылку на проект, который делает это.
Одна высокоуровневая грамматика с 50 + (возможный намного больше) правила (для надлежащей обработки ошибок) не походят на забаву (код TMP энергозависим / медленный для компиляции и предоставляет бесполезные сообщения об ошибках).
В моем опыте не было проблем:
Библиотеки заголовков дают компиляторам больше возможностей для встраивания, но они не заставляют компиляторы вставлять - многие компиляторы рассматривают встроенное ключевое слово как не что иное, как команду игнорировать несколько идентичных определений.
Компиляторы обычно имеют возможности оптимизации для управления объемом встраивания/OS в компиляторы Microsoft.
Обычно лучше разрешить компилятору управлять проблемами скорости и размера. Вы увидите только вздутие от вызовов, которые фактически были встроены, и компилятор будет встроить их только в том случае, если его эвристика покажет, что встраивание повысит производительность.
Я бы не стал рассматривать раздувание кода как причину, чтобы держаться подальше от библиотек только заголовков, но я бы призвал вас рассмотреть, насколько подход только заголовков увеличит время компиляции.
-121--1463405-Вы можете использовать все методы манипуляции DOM - appendChild, insertBefore, repleyChild, insertedHTML и т.д. - и контролировать iniveHTML с помощью onpropertychange.
Возможно, вы сможете найти решение, удовлетворяющее вашим требованиям.
BTW, похоже, что DOMNodeInserted и т.д. будут устаревать браузерами в будущем. См. http://www.w3.org/TR/DOM-Level-3-Events/ # события-мутационные события
-121--2281866-упрощенные из реальной программы, Qi должны работать так же, как Карма .
template<class Iter>
struct subgrammar_1
: karma::grammar<Iter, ...>
{
...
}
template<class Iter>
struct top_level_grammar
: karma::grammar<Iter, ...>
{
top_level_grammar() : top_level_grammar::base_type(start)
{
start %= r1 | r2;
}
karma::rule<Iter, ...> r1;
subgrammar_1<Iter> r2;
...
}