Android-приложение не на Маркете: как загружать обновления?

У меня есть приложение для Android, написанное для моей компании, и поскольку оно является частным приложением, его нет на рынке Android. , Я' )

Все техники разбора и библиотеки, которые я видел, применимы к построению деревьев разбора для реализации языков; я просто хотел бы узнать о любых хороших методах синтаксического анализа в структуре данных, аналогично тому, как XML анализируется в XMLDocument в .net framework, но с использованием правил, определенных SPAN.

8
задан Pierreten 18 August 2010 в 19:57
поделиться

3 ответа

SPAN выглядит как куча типов записей, каждая запись с большим количеством деталей.

Должно быть просто определить классическую грамматику, которая охватывает все записи (как нетерминалы), в терминах любых подзаписей (как нетерминалов) и терминальных типов данных, представляющих различные типы данных. определенные SPAN. Нетерминалов может быть много, но это просто делает грамматику большой, но не сложной.

В большинстве языков программирования есть небольшой набор терминальных лексем, которые могут появляться где угодно. Правда в том, что грамматики определяют ожидания того, что может появиться следующим (в литературе по синтаксическому анализатору LR это называется "первый" и "последующий" наборы), включая очень ограниченный набор терминалов. Грамматика SPAN не будет отличаться; каждое "состояние разбора" синтаксического анализатора подразумевает ограниченный набор терминалов, которые будут следующими, и нужно организовать синтаксический анализатор, чтобы воспользоваться этим. (Я строил L(AL)R парсеры, и можно легко использовать "текущее" состояние для определения подмножества терминалов, которые могут быть следующими). Так, синтаксический анализатор SPAN может определить только небольшой набор лексем, которые могут встретиться следующими в каждом состоянии, и использовать его для выбора символов, составляющих эти следующие лексемы (они должны образовывать непересекающиеся множества!).

Легко реализовать это с помощью синтаксического анализатора с рекурсивным спуском.

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

Действия синтаксического анализатора для обычных синтаксических анализаторов строят деревья, но так же легко заполнить поля структуры данных.

2
ответ дан 5 December 2019 в 23:13
поделиться

Рекурсивное приличие - довольно простой подход для таких вещей.

Вы начинаете с оболочки для базового потока, которая позволяет вам читать один символ (или, возможно, карту / запись в вашем случае).

Затем вы пишете серию функций, которые делают такие вещи, как «чтение числа, его синтаксический анализ» и «чтение символа и проверка того, что это X».

Эти функции либо завершаются успешно и продвигают поток, либо терпят неудачу из-за исключения синтаксического анализа.

Наконец, удобно создать набор комбинаторов, которые берут указанные выше функции и комбинируют их, например, «прочитать A, затем прочитать B» или «прочитать A, и если это не удастся, попробуйте вместо этого B».

2
ответ дан 5 December 2019 в 23:13
поделиться

Изучите Gardens Point Parser Generator , приложение, которое генерирует синтаксический анализатор C # для любого языка с определением языка, подобного YACC.

1
ответ дан 5 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

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