повышение:: грамматики создания духа от грамматик

Я выяснил, как использовать дух - т.е. я записал умеренно сложную грамматику. Я всегда проявляю подход роста программы - одна подсистема за один раз. Я записал структуры данных для сложной модели, которая имеет 4 типа на высшем уровне.

Я хотел бы использовать грамматику, составленную из подхода правил для парсинга высокоуровневых типов один тип за один раз - т.е. я хочу записать 4 грамматики с одной высокоуровневой грамматикой. Если это возможно (относительно которого я начинаю сомневаться), мог кто-то отправлять отрывок или ссылку на проект, который делает это.

Одна высокоуровневая грамматика с 50 + (возможный намного больше) правила (для надлежащей обработки ошибок) не походят на забаву (код TMP энергозависим / медленный для компиляции и предоставляет бесполезные сообщения об ошибках).

12
задан just somebody 1 February 2010 в 11:49
поделиться

1 ответ

В моем опыте не было проблем:

  • Библиотеки заголовков дают компиляторам больше возможностей для встраивания, но они не заставляют компиляторы вставлять - многие компиляторы рассматривают встроенное ключевое слово как не что иное, как команду игнорировать несколько идентичных определений.

  • Компиляторы обычно имеют возможности оптимизации для управления объемом встраивания/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;
    ...
}
11
ответ дан 2 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: