WedX - журнал о программировании и компьютерных науках

Грамматика журнала ANTLR Android. Парсинг параметров приложения

Я пытаюсь разобрать системный файл журнала Android. Все идет хорошо, но это не работает, когда я пытаюсь проанализировать параметры из содержимого журнала. Моя грамматика, обеспечивающая анализ содержимого журнала

logcontent : (параметр|текст|СПЕЦИАЛЬНЫЙ СИМВОЛ|ЦИФРА|МИНУС|РАВНО|ТОТОЧКА|ТОЧКА|АПОСТРОФ|ЛЕВАЯ СКОБКА|ПРАВАЯ СКОБКА|СКОСАЯ ЧАСТЬ|'_'|WS )+;

параметр: text+ EQUAL (integer|floatnumber|expponentfloat) ;

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

AcquireWakeLock flags = 0x2000000a tag = KEEP_SCREEN_ON_FLAG uid = 1000 pid = 373

Как я могу получить весь журнал в строковом формате и список пар «параметр = значение»

флаги = 0x2000000a

тег=KEEP_SCREEN_ON_FLAG

ИД=1000

код = 373

02.01.2013

  • Я не думаю, что ANTLR — правильный инструмент для этой работы, не то чтобы он не может этого сделать, я просто не думаю, что это лучший инструмент. 03.01.2013

Ответы:


1

Вместо этого я настоятельно рекомендую использовать регулярные выражения для этой задачи. Это быстрее и проще для этого типа операций.

Pattern pattern = Pattern.compile("^(.*?)=(.*)$");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    String key = matcher.group(1);
    String value = matcher.group(2);
    // do whatever here...
}
02.01.2013
  • Большое спасибо! Это действительно помогло мне. 05.01.2013
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]