Действительно ли ANTLR является соответствующим инструментом для сериализирования/десериализовывания формата двоичных данных?

Я сам не использовал firebase, но похоже, что приведенный ниже код настраивает слушателя для «квестовых» изменений, которые будут выполняться каждый раз, когда происходит изменение, но вы определили const quests = [] вне обработчика изменений db. Это означает, что при втором изменении вы поместите все снимки в тот же массив quests, в который, возможно, уже были добавлены предыдущие снимки. Я полагаю, что вы можете это исправить, переместив переменную quests внутри функции слушателя, как показано ниже.

componentDidMount() {
    const database = firebase.database();

    database.ref('quest').on('value', (snapshot) => {
        const quests = [];
        snapshot.forEach((childSnapshot) => {
            quests.push({
                id: childSnapshot.key,
                quest: childSnapshot.val().quest,
                points: childSnapshot.val().points,
            });
        });
        console.log(quests);
        this.setState(() => {
            return {
                quests: quests
            }
        });
        console.log(this.state.quests);
    });
}
10
задан Todd Stout 21 October 2009 в 01:44
поделиться

3 ответа

Этот предмет время от времени подходит в списке рассылки ANTLR. Ответ обычно не, потому что форматы двоичного файла являются очень регулярными, и это просто не стоит издержек.

10
ответ дан 3 December 2019 в 15:06
поделиться

Вы можете взглянуть на Ragel . Это компилятор / лексер конечного автомата, который полезен для реализации протокольных протоколов. Я прочитал отчеты, что он генерирует очень быстрый код. Если вам не нужен анализатор и движок шаблонов, у ragel меньше издержек, чем у ANTLR. Если вам нужен полноценный синтаксический анализатор, AST и хорошая поддержка шаблонного движка, ANTLR может быть лучшим выбором.

16
ответ дан 3 December 2019 в 15:06
поделиться

Мне кажется, что наличие грамматики дает Вам огромный участок.

ANTLR 3.1 имеет StringTemplate и функции генерации кода, которые являются отдельными от parsing/lexing, таким образом, можно анализировать проблему тот путь.

Походит на победителя мне, стоящий попытки.

4
ответ дан 3 December 2019 в 15:06
поделиться
Другие вопросы по тегам:

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